我正在尝试从systemd启动Process-A。
在Process-A中,它使用popen
启动另一个进程-B。
如果从命令行启动Process-A,则Process-B会正确启动。
当从systemd启动Process-A时,Process-B在从Process-A开始后很快就会崩溃
systemd[1]: Received SIGCHLD from PID 770 (process-B).
systemd[1]: Child 770 (process-B) died (code=dumped, status=11/SEGV)
是否需要在systemd服务文件中添加任何配置? 目前只有ExecStart添加了Process-A的路径。
答案 0 :(得分:0)
任何时候从CLI运行而不是从systemd运行,有几种可能性。
--force
。使用man systemd.resource-control
检查影响您尝试启动的服务的完整配置值。在您的情况下,您还可以analyze the core dump更好地了解导致程序崩溃的原因。
系统在具有资源控制的一致环境中运行代码是一项功能。从长远来看,这有助于获得可重现的稳定结果,而不会使硬件过载。
答案 1 :(得分:0)
好的,我的进程-A的实际问题是它在启动期间与另一个进程-C有某种依赖关系,并从另一个进程C中获取一些输入,这通常在启动期间是垃圾。在启动期间通过Systemd启动时,此垃圾输入是崩溃的原因。稍后手动启动时输入值有效,这就是为什么没有崩溃。
感谢您的帮助。 @Mark Stosberg提到的要点对调试系统相关的错误也很有用。
如有任何问题,请告知。 见你。