Process

如何停止作為守護程序執行的程序

  • April 20, 2018

我已經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盲目使用。

引用自:https://unix.stackexchange.com/questions/31921