【发布时间】:2010-11-30 15:14:13
【问题描述】:
我想知道为什么我在 Bash shell 的后台进程中看到了不同的行为
案例一:使用Putty(SSH)登录Unix服务器
- 默认使用 csh shell
- 我改成了 bash shell
- 输入睡眠 2000 &
- 按回车
它给了我工作编号。现在我通过单击腻子窗口中的 x 终止了我的会话 现在打开另一个会话并尝试查找进程..进程死了。
案例2:案例1:使用Putty(SSH)登录Unix服务器 默认情况下它使用 csh shell
- 我改成了 bash shell
- vi mysleep.sh
- sleep 2000 并保存 mysleep.sh
- ./mysleep.sh
这里的区别是……我不是直接执行睡眠命令,而是将睡眠命令存储在一个文件中并执行该文件。
现在我通过单击腻子窗口中的 x 终止了我的会话 现在打开另一个会话并尝试查找进程..进程仍然存在
不知道为什么会这样。我认为即使在注销后我也需要在 bash 中执行 disown 才能运行该进程。
我在父进程 id 中看到的一个差异..在第二种情况下..sleep 2000 的父进程 id 变为 1。看起来只要 mysleep.sh 的进程死亡,内核就将父进程分配给 1 .
【问题讨论】: