ssh 이상의 nohup은 반환되지 않습니다


11

나는 노력하고있다

[me@myPc]$ ssh me@server "nohup myBashScript.sh &"

내 목표는 서버에서 프로세스를 시작한 다음 즉시 돌아 오는 것입니다.

작동하지 않습니다 : 작업이 서버에서 시작되었지만 다른 명령을 요청하기 전에 myPc에서 출력이 나오고 bash는 완료를 기다립니다.

왜 ? 해서는 안됩니다! 그것을 피할 수있는 방법?

  • myPc는 RHEL6.2
  • 서버가 ubuntu 10.04
  • 두 번 실행 openssh

답변:


12

입력 또는 출력이 여전히 열려있는 한 ssh는 연결을 열린 상태로 유지합니다. 이 문제를 해결하려면 입력 및 출력이 열려 있지 않은지 확인하십시오.

예를 들어, ssh -n출력을 사용 하고 리디렉션하십시오.

ssh -n me@example.com "nohup myscript.sh >/dev/null 2>&1 &"

여전히 myscript.sh출력을 제공 하고 싶지만 스크립트가 완료된 후에도 ssh 세션이 계속 종료되면 어떻게됩니까? 필자의 경우 스크립트 자체가 nohup 프로세스를 시작한 다음 반환합니다. 나는 ssh -T그렇게하는 데 도움 이 될 인상을 받았다 .
Gauthier

@Gauthier 그런 다음 nohup없이 스크립트를 실행하십시오.
Michael Hampton

나는한다. 스크립트는 nohup 및 &로 다른 명령을 시작한 다음 종료됩니다. 그러나 ssh는 돌아 오지 않습니다. 스크립트에서 호출 된 명령은 stdout을 파일로 리디렉션합니다. 아, 그러나 stderr과 stdin이 아닌 이유가 될 수 있습니까?
Gauthier

거기 있어요! 입력 및 출력을 리디렉션해야합니다.
Michael Hampton

내가 이해하지 못하는 것은 실제로 로그인하고 tty를 얻는 경우 nohup & 명령을 시작하는 스크립트를 시작한 다음 ssh 세션에서 로그 아웃 할 수 있다는 것입니다. 열린 입력과 출력이 있다고 불평하지 않습니다. 그게 무엇 ssh -t을 흉내 내지 않습니까?
Gauthier
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.