백그라운드에서 원격 ssh 명령을 실행하지만 여전히 표시하는 가장 좋은 방법은 무엇입니까?


15

출력을 로컬로 표시하여 SSH 명령을 원격으로 실행해야합니다. 그러나 연결이 끊어지면 명령을 계속 실행하고 싶습니다.

로그인 및 실행에 대해 많이 이야기하지는 않지만 ssh user @ remotehost 'commands && command etc'

연결이 끊어진 경우에도 명령이 실행되도록하려면 어떻게해야합니까?

답변:


27

이 작업을 수행하는 가장 좋은 방법은 화면을 사용하는 것입니다. 연결이 끊어 지더라도 세션을 지속적으로 열어 두어야합니다 (다시 사용을 시작하려는 경우 a를 수행하면 screen -r다시 열림).

실행하려는 명령 앞에 접두사를 붙이면 screen(예 :) ssh -t user@host screen command작업이 수행됩니다.

쉘의 백그라운드에서 실행 &하려면 전체에를 추가 할 수도 있습니다 .


명령을 실행할 터미널을 할당하려면 ssh -t를 사용해야합니다. 그렇지 않으면 오류는 "터미널에 연결해야합니다"입니다.
bonsaiviking

11

재개 할 수있는 영구 세션을 원하십니까? 아니면 연결을 끊어 실행을 중지시키려는 것입니까?

전자 screen의 경우 후자를 사용하십시오 nohup.


7

앞서 언급했듯이 screen모든 트릭을 수행 할 수 있습니다. 그러나 필요한 것만이 아닙니다. 몇 년 동안 화면을 사용해 왔으며 이제 시스템에 로그인 할 때마다 화면을 사용합니다. 이러한 구성 으로 설치 screen하고 작성 하십시오 ~/.screenrc.

sessionname     vcflists
startup_message off
deflogin        off
vbell           off
msgminwait      0
msgwait         10
log             off
backtick        1 0 0 hostname
caption splitonly "%?%F%{= yk}%:%{= Kk}%? %n %t%="
hardstatus alwayslastline "%{= rY}  %1`  %{= kg} %0c %{= bY}  %-w%{= Yk} %n %t %{-}%+w %=%{g}%l "

그런 다음를 실행하십시오 screen -Rd vcf. 이것이 바람직한 스크린 호출입니다. 이름이 vcf * 인 이전에 생성 된 세션에 다시 연결하거나 모호한 경우 경고를 받거나 세션을 아직 열지 않은 경우 세션이 생성됩니다. CTRL+ A는 모든 것을 수행하는 메타 키입니다. CTRL+A C( CTRL+ A, C)는 세션 내에 새 창 (화면)을 만듭니다. CTRL+A SPACE라운드에서 다음 창으로 초점을 이동합니다. CTRL+A D연결간에 모든 창을 작동 상태로 유지하면서 현재 세션을 분리합니다. looooong 작업을 시작한 경우 화면에서 분리했다가 나중에 다시 연결하여 어떤 일이 발생하는지 확인할 수 있습니다. ssh 세션이 손실 된 경우에도 마찬가지입니다. 열려있는 모든 창과 모든 작업이 시작된 상태에서 화면이 활성화되어 있습니다.

화면 내부의 일부 창을 닫으려면 exit쉘에서 시작하십시오. 모든 창에서 모든 쉘 / 태스크를 닫고 화면을 종료하려면-메시지가 표시 CTRL+A CTRL+\되면 "Y"를 누르십시오.

나머지는 모두 man screen을 참조하십시오.



1

나는 보통 할 것입니다 :

nohup mycommand &

tail -f nohup.out
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.