问题标签 [defunct]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Python杀死已失效的子进程本身
我正在使用多处理 python 库。
我创建新流程并执行我的工作。
完成工作后,我只调用 exit(0),但进程处于“已失效”状态。我尝试杀死'kill -9 PID','kill -18 PID'等,但我无法杀死子进程并保持父进程处于活动状态。
我应该怎么做?这是我的python代码
'进程.py'
这是我的进程列表(ps -al)
我想保持活跃的父进程(19295)并杀死子进程19339。
我应该怎么做?
python - 如何干净地杀死python中的子进程
我们正在使用 python 进程来管理长时间运行的 python 子进程。有时需要杀死子进程。kill 命令不会完全杀死进程,只会使其失效。
运行以下脚本演示了这种行为。
或者
将创建一个子流程。
对过程没有任何作用。证明了ps aux | grep sleep
该进程尚未被杀死/失效。使用subprocess.call()
带有'kill'
和pid
作为参数的函数将发出 kill 命令。
这将终止该进程,但它现在已失效。
如果队列运行的时间足够长,它最终会达到其最大进程数,还是最终会收获已失效的进程并且一切正常?
如果答案是前者,我怎样才能在不杀死父进程的情况下在 python 中处理已失效的进程?
有没有更好的杀死进程的方法?
bash - 如何grep多行堆栈跟踪?使用我的解决方案创建了已失效的线程
我有一个文件(application.log),我的应用程序在其中存储它们的日志。有时我有一个异常,我只想将这些异常存储在另一个文件(exception.log)中。每行日志都从日期开始,格式如下:
在这种情况下,应存储 exception.log:
我试过这样的方法:
该解决方案成功地完成了这项工作,但它也创建了许多线程,并且我系统中的总线程数急剧增加。因此,我需要使用另一种解决方案或解决“已失效的问题”。
伙计们,你们知道如何将异常堆栈跟踪剪切、grep 或复制到另一个文件或防止不打开失效的线程吗?
ps - 获取有关已失效进程(又名僵尸)的信息
如何获取有关已失效进程的所有信息?
例如,我想知道:谁是父进程,用什么命令来运行这个已失效的进程,它死的原因,日志......
当我运行时,ps aux | grep defunct
我得到的是:
注意:我使用的是 Red Hat / Centos OS。
python - 子进程失效,`communicate()` 挂起
在 Ubuntu 14.04 上的 python 2.7 中,我启动了一个这样的过程:
程序挂在了communicate()
线上。当我打开另一个终端时,我运行ps -ef | grep ###
查找子进程的 pid,我看到它是<defunct>
.
为什么子程序失效,而父程序挂起communicate()
?如果孩子收到后真正退出SIGINT
,我怎样才能让父程序可靠地处理它而不挂起?
airflow - 在长时间运行的作业期间重新启动时,气流调度程序最终卡住
我有一个以设置--run-duration 86400
(24 小时)启动的气流调度程序。在此时间之后调度程序“死亡”并将自动重新启动。只要没有在 24 小时结束前不久开始的长时间运行的作业(例如 2 小时),这项工作就可以正常工作。在这种情况下,我让一个调度程序进程处理我的长时间运行的任务,而所有其他进程都作为僵尸(已失效)。在长时间运行的作业期间,不会处理其他作业。
我正在与 LocalExecutor 合作。
我的问题是:
- 允许调度程序无限期运行(没有
--run-duration
或–num_runs
)是否保存? - celery 或 dask executor 是否会发生类似的情况?
python - Daemon in python generates defunct/zombie linux process
I'm trying to spawn long processes from a flask application. So I have a main process that handles incoming web requests and from which I start daemons using the python-daemon library. Here is a minimal working example:
#xA;When I use the linux command ps -ef
while the main process is still running, after the daemon process has terminated, I see this output:
The reason why I use the fork function before the with daemon_context:
statement is that I need the main process to continue.
Should I worry about the created defunct process (I might spawn a lot of them) ? How could I avoid this zombie to appear?
docker - Docker 离开僵尸进程 (vieux/sshfs)
我有一堆服务,在撰写文件中,服务使用的 vieux/sshfs 驱动程序创建的卷很少。
服务生成的容器执行单个脚本,之后容器完成/退出并在其位置创建一个新容器 - 基本上服务一直在生成新容器。
一切顺利,除了主机中积累了异常大量的僵尸进程。当 docker 守护进程重新启动时,僵尸就消失了——一定是 docker 制造了僵尸。
"ps aux | grep 'Z'"
是
据我了解,卷只创建一次,服务只是使用卷的本地副本 - 不创建新的 ssh 连接并直接从远程机器读取 - 这不应该创建另一个 ssh 连接过程那将成为僵尸。
我很难找到有关该主题的信息,这让我认为我在做一些根本错误的事情。请帮忙。
python - 僵尸进程,我们又来了
我在多处理/线程/子处理方面遇到了很多困难。我基本上想做的是执行我计算机上可用的每个二进制文件,我编写了一个 python 脚本来执行此操作。但是我一直有僵尸进程(“已失效”),如果我的所有 4 个工人都处于这种状态,它们最终会陷入僵局。我尝试了很多不同的东西,但似乎什么也没做:(
这是架构的样子:
我创建了 4 名工人:
(注意我使用“生成”池,但现在我想知道它是否有用......)
每个工人都会像这样创建多个线程:
每个线程将在火狱沙箱中启动一个新进程:
我使用os.killpg()
而不是process.kill()
因为某些原因我的 Popen 进程的子进程没有被杀死......这可能要归功于preexec_fn=os.setsid
它设置了所有后代的 gid。但是即使使用这种方法,某些进程(例如 zsh)也会引发僵尸进程,因为它看起来像 zsh 更改了它的 gid,因此 myos.killpg
无法按预期工作......
我正在寻找一种方法来 100% 确定所有进程都会死掉。
postgresql - postgresql.conf 设置被忽略,因为它已失效
我正在尝试将 2 个设置添加到我的 postgresql.conf 文件(在 CentOS Greenplum Postgres 9.4 实例上)并且我收到了这条消息:
这是什么意思?
这是这些设置所在的部分: