終了したプロセスがコンソールに印刷されるのはなぜですか?

終了したプロセスがコンソールに印刷されるのはなぜですか?

バックグラウンドで約100のサーバープロセスが実行されています。私がそれらを殺すたびに、そのpidが死んだことを示す100のメッセージ(サーバーごとに1つ)を受け取ります。

たとえば、

./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

シェル開発者はこれが役に立つと思ったので、文字通りこれを行います。静かにすることができます:

Bashの関連コードは次のとおりです。

              else if(IS_FOREGROUND(作業))
                {
#if !define(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)は、スクリプトがバックグラウンドに配置されていない場合にこのメッセージが表示されることを示します。

関連情報