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