LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1604|回复: 9

怎么把一个已经运行在某shell下的进程的shell退出而不退出此进程?

[复制链接]
发表于 2006-4-27 20:54:52 | 显示全部楼层 |阅读模式
我机器上有个进程现在跑在一个终端连接的shell下,且当前不能退出(在执行此进程时没有用nohup或screen,真是失败)。现在想把这个终端连接的shell关掉,有办法保留这个已经运行的进程吗?

各位大虾有没有好办法呢?(比如有没有办法把这个进程的父进程改成init?)谢谢!
       
另外,实验了一下ctrl+z把进程先放到后台再退出shell的办法,结果是图形化的程序没有问题,但字符界面的程序就会跟着这个shell一起退掉
发表于 2006-4-27 22:10:03 | 显示全部楼层
disown 不知道是否可以?
回复 支持 反对

使用道具 举报

发表于 2006-4-27 22:19:35 | 显示全部楼层
可以试一下nohug
回复 支持 反对

使用道具 举报

发表于 2006-4-28 06:15:41 | 显示全部楼层
really? If you run it in background, init should pick it up after you logoff the shell.
回复 支持 反对

使用道具 举报

发表于 2006-4-28 13:18:33 | 显示全部楼层
nohup吗,没在linux下没法试。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-4-29 16:33:27 | 显示全部楼层
"在执行此进程时没有用nohup或screen,真是失败",所以只能nohup无视

试验了开一个vi,然后ctrl+z,然后disown -h,关掉shell窗口,后来再连上去发现刚才的那个vi也已经没有了

是不是我disown用的不对?还有什么办法吗?
回复 支持 反对

使用道具 举报

发表于 2006-4-30 02:52:32 | 显示全部楼层
Post by edxi
"在执行此进程时没有用nohup或screen,真是失败",所以只能nohup无视

试验了开一个vi,然后ctrl+z,然后disown -h,关掉shell窗口,后来再连上去发现刚才的那个vi也已经没有了

是不是我disown用的不对?还有什么办法吗?

CLI模式下的vi应该是不行,因为vi启动后绑定了输入/出设备,shell退出后pts或是直接的tty就消失了,就算init捡起了vi,vi也会因为标准输入/出设备的不存在而退出。一些不需要输入输出的程序,或是可以重定向输入/出的就不会有这个问题了。比如,sleep,at,cron等等。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-4 18:42:12 | 显示全部楼层
Post by yongjian
CLI模式下的vi应该是不行,因为vi启动后绑定了输入/出设备,shell退出后pts或是直接的tty就消失了,就算init捡起了vi,vi也会因为标准输入/出设备的不存在而退出。一些不需要输入输出的程序,或是可以重定向输入/出的就不会有这个问题了。比如,sleep,at,cron等等。

哦。。。原来是因为程序有输出的原因啊。。。这下惨了,我这个程序有输出的
这么一来问题就变成先要解决[color="Blue"]修改已经运行的程序的输出重定向了。。。。。
回复 支持 反对

使用道具 举报

发表于 2006-5-4 19:06:41 | 显示全部楼层
似乎不可能。。。。。(也许是我的知识有限)。
回复 支持 反对

使用道具 举报

发表于 2006-5-4 22:01:08 | 显示全部楼层
I don't think that's possible either...
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表