원격 시스템에 있는 쉘 스크립트를 시작하고 싶습니다. 내가 사용할 때
ssh [email protected] /path/to/script.sh
스크립트가 종료될 때까지 SSH 연결이 열려 있어야 합니다.
하지만 SSH 연결을 닫은 후에도 스크립트가 완료될 때까지 계속 실행하려면 스크립트가 필요합니다. 프로세스를 시작하고 잊어버리고 싶습니다.
SSH를 사용하여 이 작업을 어떻게 수행할 수 있나요?
감사합니다!
추신 : 이것은 중복되지 않습니다이 스택 변경 문제.
답변1
문제는 SSH 세션이 닫힐 때(ctrl-c를 누르거나 xterm을 닫음) HUP가 프로세스로 전송된다는 것입니다. 프로세스를 백그라운드로 포크하려면 를 추가하고 &
hup을 방지하려면 다음을 사용하세요 nohup
.
ssh [email protected] 'nohup sleep 300 >/dev/null 2>/dev/null </dev/null &'
ssh가 시작되고 프로세스가 example.com의 백그라운드에서 실행됩니다.
진행 상황을 모니터링하려면 다음을 사용할 수 있습니다 screen
. 그렇게 하려면 다음과 유사한 것이 도움이 될 것입니다.
ssh [email protected] -t 'screen -D -RR -S this /bin/sleep 300'
이렇게 하면 "this"(-S)라는 이름의 화면 세션이 생성되고, 다른 곳에 연결된 경우 이미 실행 중인 화면을 분리하고 여기에 다시 연결합니다. 그런 다음 /bin/sleep을 시작하고 5분 동안 기다립니다.