많은 연속 단계를 수행해야 하는 스크립트가 있는데 그 중 일부는 일부 아래 첨자로 작성됩니다. 첨자는 순차적으로만 실행됩니다.
- 하위 스크립트의 종료 상태를 기다리는 실행 중인 상위 프로세스/스크립트를 중지하는 방법이 있습니까?
- 상위 프로세스/스크립트의 ppid를 사용하여 스크립트를 실행하는 방법이 있습니까?
- 이미 실행 중이지만 대기 중인 상위 스크립트에 하위 스크립트의 종료 상태를 전달하는 방법이 있습니까?
하위 프로세스/스크립트가 종료되었거나 수정이 필요한 일부 단계를 수행한다고 가정합니다. 이렇게 하면 수정된 하위 스크립트를 백그라운드에서 실행하고 상위 스크립트를 중지한 다음 원래 하위 스크립트를 종료하고 상위 스크립트에 성공 코드를 전달하는 동안 상위 스크립트를 계속할 수 있습니다. 상위 스크립트가 이미 실행되기 시작한 후에 위 프로세스를 실행하려고 합니다.
하위 스크립트를 종료하면 상위 스크립트가 실패합니다. 따라서 상위 스크립트를 편집하고 다시 실행하거나 이전에 상위 스크립트에서 수행한 처리를 취소한 후 상위 스크립트의 모든 단계를 다시 실행해야 합니다. 시간이 많이 걸립니다.
답변1
- 질문 1:
#!/bin/bash
echo "I am the parent process and will launch a child and wait until it's finished"
/path/to/child.sh
echo "The child has finished and it's exitstatus is: $?"
질문 2: 이는 이론적으로 불가능합니다. 실제로는 이 동작을 모방하게 됩니다. 자식을 부모로, 부모를 자식으로 포크하여 처리하면 "새 부모"는 "이전 부모"의 PPID를 갖게 됩니다.
$?
문제 3: 하위 프로세스의 종료 상태(bash 및 대부분의 쉘에서)가 상위 프로세스의 var로 종료됩니다. 질문 1에 대한 답변의 스크립트를 참조하세요.