답변1
표시된 그래픽은 jobs
명령의 출력입니다(글꼴은 실제 터미널에서 나올 수 없으므로 인쇄용으로 기록됨).
forever
(무한 루프가 필요하며 sleep 10
100% CPU 사용량을 피하기 위해 삽입이 필요함) 라는 스크립트가 있다고 가정해 보겠습니다 .
그런 다음 모두 셸에서 실행되는 6개의 작업을 시작 forever
하고다른쉘 창. 한 번에 하나의 포그라운드 명령만 가질 수 있으므로 작업 2를 시작하기 전에 작업 1을 일시 중지해야 하는 식입니다.
모든 작업 상태는 kill
프로세스 번호로 전송(사용)하는 다양한 SIG 코드와 관련되어 있습니다. 작업 번호는 첫 번째 셸에만 관련되어 있고 두 번째 셸에서 신호를 보내야 하기 때문에 프로세스 번호를 검색해야 합니다. 정기적으로 사용하면 pstree $PPID
도움이 될 수 있습니다.
작업 3은 백그라운드에 있고 나머지 5개 작업은 외부적으로 표시되지 않으므로 포그라운드 작업이 없으며 쉘 프롬프트가 다시 표시됩니다. 여기서 명령을 실행 jobs
하고 출력을 얻을 수 있습니다.
디스플레이 &
작업 3이 백그라운드에서 시작됩니다. 이는 -
.
+
쉘에서 출력되는 작업 상태 정보입니다.
편집: Bash에서는 이 작업을 수행할 수 없습니다. 나는 이것이 Bash가 프로세스 종료 상태를 요청하기 전에 적극적으로 수집하는 방식과 관련이 있다고 생각합니다. 나중에 다른 쉘을 시도해 보겠습니다.