我有两个程序需要在启动时运行。我使用 init.d 脚本是因为我系统中的虚拟机没有 systemctl。根据我的配置,program_A 可以运行,但 program_B 不能运行。它似乎已启动,但无法正常工作,因为它没有按预期登录系统日志。
我的设置如下:
/usr/bin/Program_A
/usr/bin/Program_B
...
/etc/init.d/Program_A.sh
/etc/init.d/Program_B.sh
其中 Program_A.sh 和 Program_B.sh 类似
#!/bin/bash
sudo /usr/bin/Program_A &
disown
创建初始化文件并复制我运行的可执行文件后
update-rc.d Program_A.sh defaults
update-rc.d Program_B.sh defaults
注1:我必须在我的脚本中添加“&”和“disown”,因为如果我不这样做,program_A就会卡住并且不会让program_B启动
笔记2:如果执行以下命令,这两个程序都可以正常工作:
sudo /usr/bin/Program_X
注3 我已经删除了“否认”并只启动了program_B。它仍然不起作用。在 init.d 中运行脚本与启动时启动脚本的行为不同。
我可以检查该程序是否由以下方式启动:
ps -aux | grep Program_B
root 1905 0.0 0.2 2308 868 ? S 09:13 0:00
/usr/bin/Program_B
但是,它不会更新系统日志中的文件。因此,它没有运行或程序以其他名称启动,从而使系统日志过滤器不起作用。