相关疑难解决方法(0)

如何在Python中启动后台进程?

我正在尝试将shell脚本移植到更易读的python版本.原始shell脚本在后台使用"&"启动多个进程(实用程序,监视器等).如何在python中实现相同的效果?我希望这些进程不会在python脚本完成时死掉.我确信它与守护进程的概念有某种关系,但我无法轻易找到如何做到这一点.

python daemon process

259
推荐指数
7
解决办法
37万
查看次数

如何杀死僵尸进程

我在前台启动了我的程序(一个守护程序),然后我用它杀了它kill -9,但我得到了一个僵尸,我无法杀死它kill -9.如何杀死僵尸进程?

如果僵尸是一个死的进程(已经被杀死),我如何从输出中删除它ps aux

root@OpenWrt:~# anyprogramd &
root@OpenWrt:~# ps aux | grep anyprogram
 1163 root      2552 S    anyprogramd
 1167 root      2552 S    anyprogramd
 1169 root      2552 S    anyprogramd
 1170 root      2552 S    anyprogramd
10101 root       944 S    grep anyprogram
root@OpenWrt:~# pidof anyprogramd
1170 1169 1167 1163
root@OpenWrt:~# kill -9 1170 1169 1167 1163
root@OpenWrt:~# ps aux |grep anyprogram
 1163 root         0 Z    [cwmpd]
root@OpenWrt:~# kill -9 1163
root@OpenWrt:~# ps aux |grep anyprogram
 1163 …
Run Code Online (Sandbox Code Playgroud)

linux shell ubuntu debian zombie-process

169
推荐指数
5
解决办法
41万
查看次数

Python产生子子进程,分离和退出

我不知道这是否是执行系统进程,并从母公司分离的正确途径,但允许家长从退出而不创建一个僵尸和/或杀死子进程.我目前正在使用子进程模块并执行此操作...

os.setsid() 
os.umask(0) 
p = subprocess.Popen(['nc', '-l', '8888'],
                     cwd=self.home,
                     stdout=subprocess.PIPE, 
                     stderr=subprocess.STDOUT)
Run Code Online (Sandbox Code Playgroud)

os.setsid()更改了进程组,我认为这是让进程在父进程退出时继续运行的原因,因为它不再属于同一进程组.

这是正确的,这也是一种可靠的执行方式吗?

基本上,我有一个远程控制实用程序,通过套接字进行通信,允许远程启动进程,但我必须确保如果远程控制器死亡,它启动的进程继续运行不受影响.

我正在阅读关于双叉并且不确定这是否必要和/或subprocess.POpen close_fds以某种方式处理这个问题,所需要的只是更改进程组?

谢谢.

伊利亚

python unix linux subprocess

28
推荐指数
2
解决办法
3万
查看次数

标签 统计

linux ×2

python ×2

daemon ×1

debian ×1

process ×1

shell ×1

subprocess ×1

ubuntu ×1

unix ×1

zombie-process ×1