ssh를 사용하여 Unix 머신에서 명령을 실행하고 명령이 완료되기 전에 종료하려면 어떻게해야합니까?
예를 들어 내가 입력하면
ssh localhost 'sleep 60 &'
수면이 백그라운드에서 실행 되더라도 수면이 완료 될 때까지 ssh가 터미널에서 정지합니다.
답변
SSH에는 -f 스위치가있어 클라이언트에서 nohup을 사용하는 것과 정확히 동일하지만 ssh가 암호를 요구할 수 있습니다. 다음과 같이 사용하십시오.
ssh localhost -f 'command'
그러나 : SSH는 여전히 백그라운드에서 작동하므로 서버의 명령이 완료되기 전에 클라이언트를 종료하면 중단됩니다. 명령을 실행 한 후 ssh 연결을 닫으려면 서버 측에서 screen을 사용할 수 있습니다.
ssh localhost -f 'screen -d -m sleep 60'
답변
nohup, stdout / stderr 리디렉션을 사용하고 백그라운드에서 명령을 실행하십시오.
nohup ssh localhost 'sleep 60' >/dev/null 2>/dev/null &
편집 : 또는 ssh의 -f 매개 변수를 사용하는 것이 더 좋습니다.
ssh -f localhost 'sleep 60'