[bash] zsh를 종료하고 실행중인 작업은 열어 두시겠습니까?

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인수없이 사용 하면 가장 최근 작업이 기본값으로 설정됩니다.

나는 발견 nohupdisown에서 정보를 이 페이지&정보 이 SO 응답 .


답변

나는 일반적으로 screen백그라운드 작업을 계속 실행하는 데 사용 합니다.

1) 스크린 세션 생성 :

screen -S myScreenName

2) 스크립트, 서비스, 데몬 또는 무엇이든 시작하십시오.

3) 화면 세션 종료 (분리)

screen -d

또는 바로 가기 ALT+A then d


수백 년 후-세션을 재개하려는 경우 (다시 연결) :

screen -r myScreenName

스크린 세션이 있는지, 이름과 상태 (연결 또는 분리)가 있는지 알고 싶다면 :

screen -ls

이 솔루션은 bash, zsh 등과 같은 모든 터미널 인터프리터에서 작동합니다. man screen


답변