각 프로그램 간의 공통 작업, 데이터 수정 및 처리를 위해 다른 위치로 보내는 작업을 통해 순서대로 실행해야 하는 몇 가지 프로그램이 있습니다. 각 수정_데이터 스크립트는 기본 데이터를 복사한 후 여러 하위 스레드를 생성합니다. 모든 하위 스레드를 추적하고 싶고, 기본 프로그램에 문제가 발생하면 처리를 다시 시작해야 하는 시기에 따라 실행 중인 edit_data 스크립트의 생성 하위 스레드를 하나 이상 종료해야 할 수도 있습니다.
상위 ID가 무엇인지 알고 있다면 pkill -STOP -P $desired_PID를 사용할 수 있지만 데이터를 수정하는 스크립트의 pid를 추적하고 실행이 완료된 후 삭제하여 실수로 발생하지 않도록 할 수 있는 좋은 방법이 필요합니다. 다른 것을 죽여라. 내 순진한 해결책은 각 스크립트가 일부 환경 변수에 생성될 때 $$를 기록하고 스크립트 실행이 완료되면 해당 변수에서 이를 제거하는 것입니다. 그러나 몇 가지 문제를 보았고 더 많은 문제가 생성된 것으로 의심됩니다. 좋은 솔루션입니다.
드라이버 예:
progr1
prog2
modify_data.sh && active_pid="$active_pid $$"
prog3
modify_prog.sh && active_pid="$active_pid $$"
prog4
prog5
prog6
modify_prog.sh && active_pid="$active $$"
...