Shell-Script

為什麼終止程序會在控制台中列印

  • August 8, 2016

我有大約 100 個伺服器程序在後台執行。每當我殺死它們時,我都會收到 100 條消息(每個伺服器一個),表明相應的 pid 已被殺死。

例如:

./kill_script.sh: line 196: 1996 Killed         myserver 1
./kill_script.sh: line 196: 1997 Killed         myserver 2

# and so on till myserver 100

我不希望這些消息被列印出來。事實上,直到幾個小時前,這些都沒有被列印出來。我不知道為什麼現在要列印這些。

編輯:如果這很重要,我使用 KILL -9 來殺死這些程序。但我之前也是這樣做的。

它這樣做(真的)是因為 shell 的開發人員認為它會有所幫助。你可以讓它安靜(呃):

bash 中的相關程式碼如下所示:

否則如果(IS_FOREGROUND(工作))
{
#if !defined (DONT_REPORT_SIGPIPE)
if (termsig && WIFSIGNALED (s) && termsig != SIGINT)
#別的
if (termsig && WIFSIGNALED (s) && termsig != SIGINT && termsig != SIGPIPE)
#萬一
{
fprintf (stderr, "%s", j_strsignal (termsig));

如果(WIFCORED(s))
fprintf (stderr, _(" (核心轉儲)"));

fprintf (stderr, "\n");
}
}

其中 (the IS_FOREGROUND) 表明當您不將腳本置於後台時您會看到該消息。

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