쉘 스크립트-하위 프로세스-백그라운드 프로세스

쉘 스크립트-하위 프로세스-백그라운드 프로세스

나는 다음과 같은 상황에 처해 있습니다.

루트는 Script_A.sh서버에서 실행되며 트리거될 때까지 절전 모드로 유지됩니다. 트리거되면 함수가 호출되고 Script_B.sh서버에서 함수가 반복되어 수행해야 할 작업을 결정합니다. 작업 목록이 생성되면 Script_C.sh프로세스 소유자( su - $sUser -c "/path/to/correct/script.sh")로 제출됩니다.

su - $sUser -c "/path/to/correct/script.sh"내 질문: 이것을 백그라운드에서 실행할 수 있는 방법이 있나요 ? 세 번째 스크립트를 순차적으로 실행하고 싶지 않습니다.

답변1

&평소처럼 마지막에 두는 것이 나에게 효과적입니다.

su - "$sUser" -c "/path/to/script.sh" &

그래도 문제가 해결되지 않으면 문제에 대한 자세한 내용을 포함하도록 질문을 편집해야 합니다.

답변2

명령을 추가하는 것은 &백그라운드에서 명령을 실행하는 방법입니다. 그래서:

su - $sUser -c "/path/to/correct/script.sh" &

또는 스크립트가 스크립트 B로부터 SIGHUP(중지 신호)을 수신하지 않도록 하려면 다음을 사용하세요.disown

su - $sUser -c "/path/to/correct/script.sh" & disown

이것이 를 사용할 때 필요한 정확한 효과를 가져올지 100% 확신할 수는 없습니다 su. 이 nohup명령은 터미널에 대한 출력을 중지하므로 이러한 유형의 노력에도 유용하지만 특정 상황에 따라 다릅니다.

이 답변&disown, 및 의 사용에 대한 추가 설명이 있습니다 nohup.

관련 정보