Shell-Script
為什麼終止程序會在控制台中列印
我有大約 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
) 表明當您不將腳本置於後台時您會看到該消息。