나는 다음과 같은 상황에 처해 있습니다.
루트는 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
.