bash에서 zsh로 전환했습니다.
bash에서는 셸이 종료 될 때 백그라운드 작업이 계속 실행됩니다. 예를 들어 여기에서는 다음이 dolphin계속 실행됩니다 exit.
$ dolphin .
^Z
[1]+ Stopped dolphin .
$ bg
[1]+ dolphin . &
$ exit
이것이 내가 기본 동작으로 원하는 것입니다.
반대로 zsh의 동작은에서 작업 실행에 대해 경고 exit한 다음 exit다시 작업 하는 경우 닫는 것 입니다. 예를 들어, dolphin두 번째 exit명령이 실제로 쉘을 종료 할 때는 닫힙니다 .
% dolphin .
^Z
zsh: suspended dolphin .
% bg
[1] + continued dolphin .
% exit
zsh: you have running jobs.
% exit
bash와 같은 zsh의 기본 동작을 어떻게 만들 수 있습니까?
답변
다음을 사용하여 프로그램을 시작하십시오 &!.
dolphin &!
&!( 또는 동등&| ) 모두에 zsh을 특정 바로 가기입니다 배경 과 부인 쉘을 종료하면 실행을 떠나 있도록 프로세스를.
답변
로부터 zsh을 문서 :
HUP… zsh에서 셸이 종료 될 때 백그라운드 작업이 실행중인 경우 셸은 해당 작업을 종료하려고한다고 가정합니다. 이 경우에는
SIGHUP… 라는 특정 신호가 전송 됩니다. 쉘이 종료 된 후에도 계속해야하는 작업을 자주 시작하는 경우 옵션을 설정할 수NO_HUP있으며 백그라운드 작업은 그대로 유지됩니다.
따라서 NO_HUP옵션을 설정하십시오 .
% setopt NO_HUP
답변
나는 발견의 조합을 사용하여 해당 nohup, &그리고 disown내가 쉘이 종료 된 때 영구적으로 작업을 실행하게하지 않는 한, 저를 위해 일을.
nohup <command> & disown
단지는 동안 &나를 위해에 근무하고있다 bash에만 사용하는 경우, 내가 발견 nohup, &또는 disown쉘이 종료 될 때 자바 실행 명령을 호출하는 스크립트와 같은 명령을 실행에, 프로세스가 여전히 중지 것이다.
nohup명령을 무시NOHUP하고SIGHUP쉘에서 신호를 보냅니다.&프로세스를 하위 터미널의 백그라운드에서 실행합니다.disown인수 (작업 목록에있는 작업 번호의 색인)가 뒤에 오면 쉘SIGHUP이 하위 프로세스에 신호를 보내는 것을 방지합니다 .disown인수없이 사용 하면 가장 최근 작업이 기본값으로 설정됩니다.
답변
나는 일반적으로 screen백그라운드 작업을 계속 실행하는 데 사용 합니다.
1) 스크린 세션 생성 :
screen -S myScreenName
2) 스크립트, 서비스, 데몬 또는 무엇이든 시작하십시오.
3) 화면 세션 종료 (분리)
screen -d
또는 바로 가기 ALT+A then d
수백 년 후-세션을 재개하려는 경우 (다시 연결) :
screen -r myScreenName
스크린 세션이 있는지, 이름과 상태 (연결 또는 분리)가 있는지 알고 싶다면 :
screen -ls
이 솔루션은 bash, zsh 등과 같은 모든 터미널 인터프리터에서 작동합니다. man screen
답변
