为什么终止进程会打印在控制台中

为什么终止进程会打印在控制台中

我有大约 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)表明您在未将脚本置于后台时会看到该消息。

相关内容