그래서 tmux를 통해 쉘 명령을 실행하고 싶지만 백그라운드에서 tmux 세션에서 분리되어 있습니다... 그래서 다음과 같이 합니다:
tmux new-session -A -s myprogramsession \; send -t myprogramsession "nohup /usr/bin/myscript.sh &>/dev/null &" ENTER \; detach -s myprogramsession
이것은 작동합니다. 하지만 이제 위 세션에서 분리된 후 tmux를 중지하려면 다음을 수행해야 합니다.
이것:
tmux new-session -A -s myprogramsession \; send -t myprogramsession "nohup /usr/bin/myscript.sh &>/dev/null &" ENTER \; detach -s myprogramsession \; kill-session -t myprogramsession
아니면 이거:
tmux new-session -A -s myprogramsession \; send -t myprogramsession "nohup /usr/bin/myscript.sh &>/dev/null &" ENTER \; detach -s myprogramsession && pkill tmux
언뜻 보기에는 두 가지 방법( pkill
및 kill-session
from 을 사용하는 방법 중 하나)이 작동하는 것처럼 보였지만 차단된 프로세스/스크립트가 모두 from 을 통해 시작되었음을 확인했습니다.tmux
nohup
머무르다백그라운드에서 이 작업을 수행한 첫 번째 시도와 비교합니다( 중지에 대한 부분 제외 tmux
).
tmux
(위의 예를 기반으로) 세션(백그라운드)에서 셸 명령을 시작하고 분리한 다음 tmux
셸 명령이 백그라운드에서 계속 실행되는 동안 완전히 중지하려면 어떻게 해야 합니까 ?
답변1
생각보다 쉬워 보이네요.
tmux new-session -A -s myprogramsession \; send -t myprogramsession "nohup /usr/bin/myscript.sh &>/dev/null &" ENTER \; detach -s myprogramsession && sleep 1 && pkill tmux
sleep
들어오기 전에 를 추가하면 작동합니다 pkill
. 그러나 아마도 최선의 해결책은 아닐 것입니다.