我有大约 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 来终止这些进程。但我之前也是这么做的。
答案1
它这样做(确实)是因为 shell 的开发人员认为这会很有帮助。你可以让它安静(呃):
bash中的相关代码如下:
否则如果(IS_FOREGROUND(作业)) { #if !定义 (DONT_REPORT_SIGPIPE) if (termsig && WIFSIGNALED (s) && termsig != SIGINT) #别的 if (termsig && WIFSIGNALED (s) && termsig != SIGINT && termsig != SIGPIPE) #万一 { fprintf (stderr, "%s", j_strsignal (termsig)); if (WIFCORED (s)) fprintf (stderr, _(" (核心转储)")); fprintf (stderr, "\n"); } }
其中(IS_FOREGROUND
)表明您在未将脚本置于后台时会看到该消息。