라는 파일이 있습니다go.sh
python3 bob.py &> lol.log &
python3 alice.py &> lol2.log &
내가 달릴 때 ./go.sh
다음을 실행하십시오 jobs
. 내가 수행한 작업은 실제로 아무것도 나타나지 go.sh
않았습니다 .jobs
jobs
그러나 각 명령을 하나씩 실행하면 go.sh
나타납니다 jobs
.
이 문제를 어떻게 해결할 수 있나요?
답변1
나는 당신이 go.sh &
그냥 실행하지 않는다고 가정하고 있습니다 go.sh
. 그런 다음 jobs
그것은 사소한 일이기 때문입니다(끝나고 나면 어떤 작업도 보고되지 않습니다).
스크립트는 백그라운드에서 두 가지 작업을 시작한 다음 완료됩니다. 그래서 당신은 그것을 볼 수 없습니다. 또한 다른 쉘이기 때문에 스크립트에 의해 시작된 작업을 볼 수 없습니다. 스크립트를 실행하는 대신 작업을 보려면 이 스크립트를 받으세요.
. go.sh; jobs
이제 두 개의 직위가 나열되어 있는 것을 볼 수 있습니다.
스크립트를 실행하고 여전히 작업으로 처리하려면 해당 하위 항목이 완료될 때까지 기다리라고 지시하십시오. wait
끝나기 전에 추가했습니다. jobs
스크립트 내에서 호출 할 수도 있습니다 .
답변2
작업은 입력 중인 쉘의 직계 하위인 경우에만 "jobs"에 표시됩니다. 스크립트는 새 프로세스의 하위 쉘에서 실행되므로 로그인 쉘의 하위 쉘이 아니며 로그인 쉘에 표시되지 않습니다.