引用:
最初由 dekuo 發表 真是慚愧 ... 我之前手賤改過這支 script 就沒再全程測試一遍 ...
今天才發現我自己的 bsd 斷了但是 ppp 不但沒砍掉還累積了一堆 ppp process ... |
我的感覺是, 這種程式如果要用 script 寫, 可以.
但是對於 pid 的判斷就必須要很小心才可以.
ps 在 Linux/FreeBSD 命令還算有相關性, 如果到了 Solaris 可就( 沒記錯的話是 ps -ef )
我的建議是根本不要用 ps 去判斷, 因為有 portable 問題
解法則是:
1. 不要用 Script 啦, 用 C 寫, 以 EXEC(3) 那類的執行, 自然可以控制 pppd, 但是要小心使用 EXEC(3) 那類的函式, 否則會有安全性問題
2. 以 pppd 的 pidfile 來做不就得了, 這樣解起來就容易的多
pppd 有一個選項: linkname <name>
因此, pppd 會建立 /var/run/ppp-<name>.pid 或是 /etc/ppp/ppp-<name>.pid
如此, 該檔案內容自然就是 pid 囉
而且這樣可以同時跑兩個 pppd 也不須要 killall 砍掉其它的 pppd