2012-11-19 51 views
0

我最近開始通過zsh函數包裝我的ssh調用,我注意到現在如果我關閉終端(Mac OS X/iTerm2)與一個有效的ssh進程,ssh進程不會死亡,而是孤立的(PPID = 1)。這隨後會在該ssh連接上提供任何tty應用程序(即屏幕)。關閉一個終端窗口與ssh會話產生的功能孤兒ssh而不是殺死它

我將這個問題縮小到了zsh +函數。這是所有需要重現:

zsh# function foo() { ssh [email protected] } 
zsh# foo 
--> Close the terminal window (via cmd-w) 

zsh# ps ax -o pid,ppid,command | tee >(head -1) | grep -v grep | grep ssh 
    PID PPID COMMAND 
29361  1 ssh [email protected] 

zsh# kill 29361 
--> everything is OK again. 

我已經驗證這是一個問題的zsh,因爲它並不在bash繁殖,我已經驗證它是不是一個SSH問題,因爲它不與任何再現zsh中的命令從函數內部開始。

我已經使用zsh 4.2.x-5.x.x轉載了這個問題。

我不明白觀察到的行爲,但願意。我不確定這是否是預期的或zsh中的錯誤。

回答

0

你也觀察到這種行爲在最初推出ZSH作爲

env -i TERM=$TERM zsh -f 

即沒有你的自定義配置文件被採購?

控制ZSH作業控制的一個重要選項是NO_HUP

另請參見this discussion at superuser.com