Process
如何停止作為守護程序執行的程序
我已經
iperf
以守護程序模式啟動iperf -s -D
,現在我想停止該服務。我嘗試使用sudo kill pid
,但它既不工作也不抱怨。當我檢查時,守護程序仍在執行ps -ef | grep iperf
。由於它不是由 Linux 啟動的,因此我無法通過
service
其他守護程序找到它。我怎麼能阻止它?
不要使用
kill -9
!此命令僅用於某些特定的極端情況。根據手冊頁(在我的 Solaris 機器上):
DESCRIPTION The kill utility sends a signal to the process or processes specified by each pid operand. For each pid operand, the kill utility will perform actions equivalent to the kill(2) function called with the following arguments: 1. The value of the pid operand will be used as the pid argument. 2. The sig argument is the value specified by the -s option, the -signal_name option, or the -signal_number option, or, if none of these options is specified, by SIGTERM. The signaled process must belong to the current user unless the user is the super-user.
當您不指定任何信號時, kill 將向
kill -15
您的程序發送 SIGTERM ( )。您可以發送比 SIGKILL (kill -9
) 更少暴力的更具侵略性的信號。為什麼要避免殺死-9?
SIGKILL 是一個非常暴力的信號。它不能被程序擷取,這意味著接收它的程序必須立即丟棄所有內容並退出。它不需要時間來釋放它鎖定的資源(如網路套接字或文件),也不需要通知其他程序退出。通常,它會使您的機器處於不穩定狀態。打個比方,您可以說使用 SIGKILL 殺死程序與使用電源按鈕(與
shutdown
命令相反)關閉機器一樣糟糕。事實上,應該盡可能避免使用SIGKILL 。相反,如文章中所述,建議您嘗試
kill -2
,如果這不起作用kill -1
。我看到人們一直急於發送 SIGKILL(即使是在日常清理腳本中!)。我每天都和我的隊友為此爭吵。請不要
kill -9
盲目使用。