백그라운드에서 약 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
)는 스크립트가 백그라운드에 배치되지 않은 경우 이 메시지가 표시됨을 나타냅니다.