종료된 프로세스가 콘솔에 인쇄되는 이유는 무엇입니까?

종료된 프로세스가 콘솔에 인쇄되는 이유는 무엇입니까?

백그라운드에서 약 100개의 서버 프로세스가 실행되고 있습니다. 내가 그들을 죽일 때마다 해당 pid가 죽었음을 나타내는 100개의 메시지(서버당 하나)를 받습니다.

예를 들어:

./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(들))
                        fprintf (stderr, _(" (코어 덤프)"));

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

여기서 ( IS_FOREGROUND)는 스크립트가 백그라운드에 배치되지 않은 경우 이 메시지가 표시됨을 나타냅니다.

관련 정보