연결을 닫을 때 끝나지 않는 SSH를 통해 스크립트를 실행하는 방법은 무엇입니까?


18

스크립트를 실행해야합니다. 실행하는 데 시간이 오래 걸리거나 영원히 실행되기를 원합니다. 연결을 끊으면 실행이 중지되기 때문에 시스템에 SSH로 연결할 수 없습니다.

스크립트를 시작한 쉘에 의존하지 않는 스크립트를 실행할 수있는 방법이 있습니까?

우분투 9.04를 사용하고 있습니다.

답변:


24

nohup 명령을 사용하여 명령을 실행할 수 있습니다. 또한 '스크린'에서 실행하여 터미널을 다시 연결할 수 있습니다.

예를 들면 다음과 같습니다.

ssh mySever 'nohup bash myscript.sh'

또는 ssh로 들어가서 nohup 명령을 실행하십시오. 연결을 끊어도 계속 작동해야합니다. 이는 nohup이 SIGHUP singal (hangup)을 가로 채기 때문입니다.

화면은 조금 더 복잡하지만 20 분 동안 기본 사항을 익히는 데는 가장 유용한 도구 중 하나입니다. 여기 튜토리얼이 있습니다.


Sniped Kyle ...> smile <
Evan Anderson

Evan을 도둑 맞은 사람에게 +1. Happy 10K :)
squillman

1
튜토리얼 링크가 끊어졌습니다 :(
Ido Ran

7

나는 항상 nohup을 사용합니다. 출력에 신경 쓰면 출력을 로그 파일로 리디렉션하고, 그렇지 않으면 / dev / null로 보냅니다.

예:

nohup scp file.tar.gz root@someserver:/var/tmp > /dev/null 2>&1 &

출력이 / dev / null이되고 백그라운드에서 출력되며 로그 아웃하면 HUP 신호에 영향을받지 않습니다. 또한 bash와 같은 특정 셸을 사용하여 세션에 연결되지 않도록 작업을 "삭제"할 수 있습니다.

disown %1

1
+1 해제-nohup을 사용하여 실행을 잊었을 때 매우 유용
Mark

5

화면을 설치하려면 apt-get install screen

그런 다음 간단히 사용하여 시작하십시오. screen

그리고 man screen키 바인딩을 얻으려면.


+1! 화면이 다입니다!
Javier

나는 스크린을 사용했지만 여러 가지 이유로 tmux로 전환했습니다. Google "tmux vs screen"과 같은 링크를 찾으실 수 있습니다 : superuser.com/questions/236158/tmux-vs-screen
m0j0

2

서버에 로그인 한 상태에서 다음 명령을 통해 분리 모드에서 스크립트를 실행할 수 있습니다.

nohup script >script.out 2>script.err &

나중에 다시 로그인하면 script.out에서 출력을 확인하고 script.err에서 오류 메시지를 확인할 수 있습니다. 동일한 파일에 출력 및 오류 메시지를 표시하려면 다음을 수행하십시오.

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