PuTTY 또는 기타-PuTTY를 종료 한 후에도 명령을 계속 실행합니다 [중복]


13

실행해야 할 몇 가지 명령이 있습니다. 이 명령은 인터페이스를 종료 한 후에도 계속 실행되어야합니다. Linux GUI에 액세스하면 다음과 같이 실행됩니다.

cd /home/testuser/Scripts*
xterm -hold -T "Background_Script1" -e  "service1-start.sh" &
sleep 10
xterm -hold -T "Background_Script2" -e "service2-start.sh" &

도움을 주시면 감사하겠습니다.



이러한 서비스를 데몬으로 실행하지 않는 이유가 있습니까?
SevenSidedDie

명령은 거의 100 % 가동 시간 "영원히"실행해야하거나 오랜 시간 후에 완료 될 것으로 예상되는 장기 실행 처리 작업을 의미합니까? 모든 답변은 두 경우 모두 "작동"하지만 적절한 권장 사항은 다릅니다.
Peteris

어떤 특정 Linux 배포판을 사용하고 있습니까? set -m;CentOS와 RHEL에서 로그 아웃 한 후에도 스크립트가 계속 실행되도록 실행 하면 실행됩니다.
ArtOfWarfare

답변:


33

시험

nohup Background_ScriptX &

nohup은 터미널이 닫힐 때 프로세스가 종료되지 않도록합니다. & 기호는 프로세스를 백그라운드로 푸시합니다.

이것이 도움이 되었기를 바랍니다.


nohup은 확실히 일을합니다
Pitto

도움이되어 기쁘다.
Eamonn Travers

15
화면nohup에 비해 한 가지 분명한 장점이 있습니다 . nohup 을 사용하면 실행중인 명령으로 돌아갈 수 없습니다 (예 : 다음 날 아침 stdout을 읽은 다음 죽이는 등). 화면을 통해 정확하게 할 수 있습니다.
Andreas F

1
nohup은 출력을 처리 할 수있는 파일로 출력을 보냅니다.
Brian Knoblauch

을 처음 사용하는 사람들에게는 nohup기본적으로 "행 아웃 없음"입니다. nohup에서는 행업 ( HUP) 신호가 무시됩니다.
Dan7119

20

나중에 출력을 읽으려면 다음을 사용할 수 있습니다 screen.

screen -d -m my_command

이렇게하면 나중에 연결하여 ( screen -r) stdout / stderr 출력을 읽을 수있는 분리 된 터미널이 제공 됩니다.


2
+1. 예를 들어, 터미널 (예 : 퍼티)을 닫은 다음 다시 열고 화면 ( screen -r)에 다시 연결하면 프로그램의 모든 출력이 생성되고 그렇지 않으면 "누락"된 것입니다. 또한 화면은 분할 화면 등과 같은 많은 놀라운 일을 할 수 있습니다! :)
Alberto Santini

6

nohup명령을 사용할 수없는 경우 다른 옵션 은 disown 명령 을 사용하는 것 입니다.

먼저 jobs터미널에서 실행하여 백그라운드 작업을 볼 수 있습니다 . 거기에서 작업 번호를 얻을 수 있습니다.

이제 실행 만하면 disown %[job number]프로세스가 현재 터미널에서 분리되고 로그 아웃 할 때 계속 활성화됩니다.

참고 : 올바른 질문을하고 있는지 확인하십시오. 샘플에서 힌트로 실제 서비스를 실행하는 경우 선택한 OS에서 데몬을 만드는 방법을 살펴볼 수 있습니다. 이것은 재부팅 후에도 프로세스가 계속 실행되도록하고 다른 서비스와의 일관성을 유지하기위한 것입니다.

도움이 되었기를 바랍니다.


3

screen언급 된 이후 : 다른 터미널 멀티플렉서가 있습니다. 나는 tmux매우 좋아 , 예를 들어 비교를 위해이 다른 수퍼 유저 질문, tmux vs screen 을 참조하십시오 .


0

또한 시도 할 수 있습니다. setsid Setsid는 백그라운드 프로그램에서도 작동하며 터미널 / ssh 세션 연결이 끊어진 후에도 계속 실행될 수 있습니다.

다음과 같이 사용하십시오.

setsid program-to-background

맨 페이지 : http://man7.org/linux/man-pages/man2/setsid.2.html

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