TL;DR, 동일한 그룹 ID를 가진 형제 프로세스를 종료하지 않고, 터미널에 출력을 인쇄하지 않고, 0이 아닌 종료 코드를 사용하여 프로세스와 모든 하위 프로세스를 종료할 수 있는 방법이 필요합니다.
손자와 증손자를 생성하는 하위 프로세스를 생성하는 bash 스크립트가 있습니다.
sudo를 사용하지 않고 특정 하위 항목과 그 하위 항목을 모두 죽이고 싶습니다.
다음은 시도했지만 효과가 없었던 몇 가지 솔루션입니다.
그룹 ID로 죽입니다. 자식에게 동일한 그룹 ID를 가진 형제 프로세스가 있을 수 있으며 나는 그것을 죽이고 싶지 않습니다.
사용
kill $childpid
. 이것은 모든 손자 및 증손자 프로세스를 종료하지 않습니다.사용
kill -9 $childpid
. 이로 인해 스크립트를 실행 중인 터미널에 텍스트 출력이 발생하는데, 이는 스크립트와 Kill 명령이 모두 stdout 및 stderr을 다른 파일로 라우팅하더라도 이상적이지 않습니다.사용
pkill -P $childpid
. 처음에는 이것이 내가 원하는 것 같지만 하위 프로세스는 종료 코드 0으로 종료됩니다. 상위 프로세스는 하위 프로세스가 조기에 종료되었음을 알아야 하므로 0이 아닌 코드로 종료해야 합니다.
이를 수행하는 가장 좋은 방법은 무엇입니까?
편집: 내 게시물은 중복 가능성이 있는 것으로 표시되었지만 이 링크의 모든 솔루션에는 게시물에서 설명한 문제 중 하나가 있습니다.