我正在探索使用 daemontools 来运行我们的一些应用程序,这些应用程序也会生成一些输出(在 stdout 和 stderr 上)。
我在 Debian 机器上安装了 daemontools。每次我启动svc -u /etc/service/myservice
服务时,都会出现一个[defunct]
进程。我该如何调试这个问题?
以下是我的/etc/service/myservice/run
:
#!/bin/bash
exec myservice -c /etc/myservice/myservice.conf
和/etc/service/myservice/log/run
#!/bin/sh
exec multilog t ./main
任何帮助都将不胜感激。谢谢。
答案1
您可以使用 捕获一些错误ps -aux | grep readproctitle
。
一些调试思路:
myserver
不在 中PATH
。请考虑指定程序的完整路径。myserver
分叉到后台:使用 daemontools 启动服务时明确禁止此操作。- 权限:仔细检查目录和脚本的权限
run
。
答案2
我遇到了同样的问题。当其他方法都不起作用时,这个对我有用:
- 通过 找到 svscanboot 的 pid
ps auxf
,你会发现它启动了 svscan 来监控所有的服务。 kill -9 -pid
。
svscanboot 将自动启动,svscan 下的所有服务也将自动启动。
当机器上没有剩余磁盘空间时,我遇到了 svcan 的命名管道损坏的问题。