问题标签 [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.
bash - 为什么 cron 生成的进程最终会失效?
我有一些进程显示为<defunct>
(top
和ps
)。我已经从真实的脚本和程序中总结了一些东西。
在我的crontab
:
的内容launcher.sh
(当然标记为可执行):
的内容tester.sh
(当然标记为可执行):
ps
显示以下内容:
请注意,tester.sh
不会出现 - 它在启动后台作业后已退出。
为什么launcher.sh
坚持,标记<defunct>
?它似乎只在由 --cron
而不是我自己运行它时启动。
附加说明:launcher.sh
是本系统运行的常用脚本,不易修改。其他的东西(crontab
, tester.sh
,甚至是我运行的程序而不是sleep
)可以更容易地修改。
fedora - init 从不收获僵尸/失效进程
在我的内核为 2.6.18 的 Fedora Core 9 网络服务器上,init 没有收获僵尸进程。如果不是进程表最终达到无法分配新进程的上限,这将是可以忍受的。
的样本输出ps -el | grep 'Z'
:
这是操作系统错误吗?配置错误?我正在寻找有关此问题根源的灵感。谢谢
css - 如何从臃肿的样式表中识别和消除未使用的 CSS 样式?
我有一个旧样式表,现在充满了未使用的样式。问题是从不必要的中识别必要的。有什么工具可以帮助解决这个问题吗?
database - 为什么在客户完成下订单之前生成订单数据库记录?
我正在使用一个订购系统,并试图首先了解它为什么会这样设计。
我无法理解的一件事是,为什么系统甚至在客户下订单之前就Order
为潜在客户创建了独特的记录。
因此,发生的情况是订单进入并选择他们想要购买的东西,然后在Place your order
显示按钮之前,已经为潜在客户保存了订单记录。
这样做的影响——这让我感到困扰——系统中有成千上万个被放弃的订单,用户从未点击过最终Place your order
按钮来完成销售。
订单记录不应该在用户点击“Place your order”后才生成吗?为什么不这样做?
c - C: Exec/fork > 已失效的进程
我想使用 fork > exec 过程创建很多子进程。许多进程都很快结束(不到两分钟,有些甚至更早)。
我的第一个问题是,我将生成过程置于后台
到目前为止,一切都很好。现在我再也看不到 spawnbot 的任何消息,它们直接进入 logging.txt。但是,每当创建一个新孩子时,我都会再次在我的控制台中看到有关该孩子的所有信息。我现在想用它自己的管道启动每个孩子 - 有没有更好的方法不让孩子在整个过程中发布他们的输出消息安慰?我应该将它重定向到 /dev/null 还是使用 C 中的某些标志来完成?
其次,并不是所有的孩子都真的被杀了。我的 ps -ef 中有很多进程。我能做些什么呢?我该怎么做
c - kill - 它会立即终止进程吗?
究竟kill
是做什么的?
我有一个父进程,它一个接一个地创建 100 个(例如)子进程。在任何孩子的工作结束时,我都会杀死孩子,但我在输出kill(pid_of_child, SIGKILL)
中看不到它。ps
但是,如果父进程出现问题并且我退出父进程exit(1)
(此时只有 1 个子进程 - 我可以检查ps
),那么我会看到很多<defunct>
进程ppid
属于pid
父进程。
这怎么可能?没有kill
完全杀死子进程?
c - 子进程可以去吗没有它的父进程死亡?
我找到了答案,并为该处理程序设置SIGCHLD
并引入了信号处理wait
程序。这样,每当父进程kill
成为子进程时,都会调用此处理程序并调用wait
以获取子进程。- 动机是清除进程表条目。
我仍然看到一些子进程运行了几秒钟,即使它的父进程没有死亡。- 这怎么可能?
我通过ps
. 准确地ps -o user,pid,ppid,command -ax
和greping父进程,子进程和已失效。
apache - CGI 进程失效的原因
我想检查是否可以通过任何 apache 日志跟踪 CGI 程序何时被调用或结束。
如果我使用 javascript 每 2 秒重新加载一个 CGI 程序,并且在该 CGI 程序中,它会检查并执行一系列与 SQL 的连接,我希望在我的 SQL API 尝试时确定 CGI 进程是否已经结束向该 CGI 进程返回 SQL 状态,从而导致进程失效?
我能否追踪 CGI 进程结束的时间?什么时候通过任何 apache 日志调用 CGI 进程?
需要大家的建议。
谢谢。
php - pcntl_fork() 导致父进程失效
所以,我有这个监听 IPC 消息的 PHP 守护进程。奇怪的是,父进程(来自 pcntl_fork 的结果)留下一个 [php] < defunct> 进程,直到子进程完成,但仅当脚本从 cronjob 启动时,而不是直接从命令行启动。
我知道 <defunct> 进程并不邪恶,但我无法弄清楚为什么它只在从 cronjob 运行时发生。
命令
分叉代码:
输出
ps辅助| grep php
我发现这是一个已知的 apache 错误,但是为什么从 cronjob 运行时会出现这个错误?
python - 在无限循环中停止附加到队列的python多处理工作者的最干净方法是什么?
我在 python 中使用multiprocessing.Pool
and实现生产者-消费者模式multiprocessing.Queue
。gevent
消费者是用于生成多个任务的预分叉进程。
这是一个精简版的代码:
现在,当我尝试退出它时,我得到以下状态:
- 父进程正在等待其中一个子进程加入。
- 其中一名儿童处于死亡状态。如此完成,但父母正在等待其他孩子完成。
- 其他孩子正在显示:
futex(0x7f99d9188000, FUTEX_WAIT, 0, NULL ...
。
那么干净地结束这样一个过程的正确方法是什么?