zsh에서는 setopt nohup
nohup이 다음과 같이 작동하도록 해야 할 것 같습니다:
# nohup does not work without setopt nohup
➜ /tmp zsh
➜ /tmp nohup watch ls &
[1] 31556
nohup: ignoring input and appending output to ‘nohup.out’
➜ /tmp exit
zsh: you have running jobs.
➜ /tmp exit
zsh: warning: 1 jobs SIGHUPed
➜ /tmp ps -fp 31556
UID PID PPID C STIME TTY TIME CMD
# It works well with setopt nohup
➜ /tmp zsh
➜ /tmp setopt nohup
➜ /tmp nohup watch ls &
[1] 31216
nohup: ignoring input and appending output to ‘nohup.out’
➜ /tmp exit
zsh: you have running jobs.
➜ /tmp exit
➜ /tmp ps -fp 31216
UID PID PPID C STIME TTY TIME CMD
nori 31216 1 0 19:00 pts/6 00:00:00 watch ls
zsh에는 왜 필요 setopt nohup
하지만 bash에는 필요하지 않습니까?
답변1
nohup
설치된 신호 처리기를 대체하는 신호 처리기가 설치되어 있으므로 watch
유효 하지 않습니다 .watch
SIGHUP
nohup
nohup
SIGHUP
신호가 무시되도록 하는 신호 처리기를 설정한 SIG_IGN
다음 실행하도록 요청된 프로그램을 실행하는 방식으로 작동합니다. 이는 시작 시 신호가 구성된 방식으로 구성된 대상 프로그램에 대해 잘 작동합니다. 이는 기본적으로 프로그램이 신호에 전혀 주의를 기울이지 않는다는 것을 의미합니다. 그러나 watch
다른 신호에 대한 신호 처리기를 설치하십시오 SIGHUP
(종료하기 전에 터미널 설정 변경 사항을 되돌리기 위해).