- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在使用 upstart 来启动/停止/自动重启守护进程。其中一个守护进程 fork 4 次。 upstart cookbook声明它只支持两次 fork 。有解决方法吗?
如果我尝试使用 expect daemon
或 expect fork
,upstart 会使用第二个 fork 的 pid。当我试图停止工作时,没有人响应 upstarts SIGKILL 信号并且它挂起,直到你耗尽 pid 空间并循环回来。如果您添加重生,情况会变得更糟。 Upstart 认为这份工作已经结束,并立即开始另一份工作。
A bug has been entered对于 Upstart 。提供的解决方案坚持使用旧的 sysvinit,重写你的守护进程,或者等待重写。 RHEL 比最新的 upstart 软件包晚了将近 2 年,所以当重写发布并且我们得到更新时,等待时间可能是 4 年。该守护程序由承包商的分包商的分包商编写,因此也不会很快修复。
最佳答案
我想出了一个丑陋的 hack 来完成这项工作。它适用于我系统上的应用程序。 YMMV.
env DAEMON=/usr/bin/forky-application
pre-start script
su -s /bin/sh -c "$DAEMON" joeuseraccount
end script
script
sleepWhileAppIsUp(){
while pidof $1 >/dev/null; do
sleep 1
done
}
sleepWhileAppIsUp $DAEMON
end script
post-stop script
if pidof $DAEMON;
then
kill `pidof $DAEMON`
#pkill $DAEMON # post-stop process (19300) terminated with status 1
fi
end script
可以对 pid 文件采取类似的方法。
关于linux - upstart expect/respawn 可以用在 fork 两次以上的进程上吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12200217/
我正在使用 BusyBox,但我认为我的问题很笼统。这是我的 inittab 文件中其中一条 tty 行的示例。 tty1::respawn:/sbin/getty -n -l /usr/bin/lo
我正在使用 Respawn清理我的测试数据库,但是当这个方法执行时: public static Task ResetCheckpoint() => Checkpoint.Reset(Configur
我是一名文凭学生,正在制作一个基于处理的游戏,这是一款塔防游戏,女主角将向冲向城堡的僵尸射箭。我对此有多个问题。 充电器僵尸被击杀后不会重生。 当我只射杀一只充电器僵尸时,所有充电器僵尸都一起死了。
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: what does this mean in c int a:16; ? 这里的:1是什么意思: ... u
我正在使用 upstart 来启动/停止/自动重启守护进程。其中一个守护进程 fork 4 次。 upstart cookbook声明它只支持两次 fork 。有解决方法吗? 它是如何失败的 如果我尝
场景: 我有一个在 linux 上运行的进程,该进程在后台通过连接在 /etc/init.d/ 的脚本启动,称为 MyApp 这只是一个没有的 shell 脚本.sh。以下是我的init.d脚本脚本
Supervisord 无法让 redis worker 继续运行,我的 worker 仍然以状态代码 12 退出并重生。我的 redis 容器在应用程序的 docker 网络上(主管所在的位置) 我
我的主 php 服务器出现问题,其中主 php5-fpm进程将被 HUP 杀死信号。在主进程被杀死后,它将无法重生。由于每个子进程只允许处理一定数量的请求,因此它们最终会死掉而不会产生任何其他子进程。
我是一名优秀的程序员,十分优秀!