Init.d脚本问题

Init.d脚本问题

init.d 脚本已正确安装,我编写的脚本也正确。但我遇到了一个非常奇怪的情况。该脚本执行我用 C++ 编写的一个多线程程序。如果我通过终端(我安装在 /usr/sbin/ 中)执行该程序,例如:“MyProgram &”,则一切正常。但如果此程序由 init.d 脚本执行,则一个线程会失败。程序的其他线程以及 init.d 脚本规范的其他功能将按预期工作。我还必须提到,失败的线程每 30 秒对桌面进行一次截图。显然,问题出在 init.d 脚本上。我尝试通过以下方式在该脚本中启动该程序:

$DAEMON &
exec $DAEMON &
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON &
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON & > /dev/null

$PIDFILE = /var/run/$NAME.pid ; $DAEMON = /usr/sbin/$NAME; $NAME = MyProgram 在所有情况下,我都会得到相同的结果:一个线程失败。有什么想法吗?

答案1

我找到了解决问题的办法。由于 X 服务器配置,您无法在 init 脚本中连接到它,尽管我尝试配置 X 服务器以允许传入连接到 tcp 端口,但我无法成功连接。因此,我在 X 启动时通过添加 来启动我的程序display-setup-script=path_to_script/etc/lightdm/lightdm.conf我在这里找到的解决方案:当 X 启动时启动一个程序

相关内容