我创建一个程序(一个守护程序),并将它放在一个脚本中,该脚本将在启动时被调用。脚本如下所示。通过这种方式,我的程序根本没有被调用。因为我查了ps | grep myprogram
。请注意,脚本read_something.sh
不存在!
#!/bin/bash
modprobe some_driver
dmesg | grep BIOS > /bioslog
setsid /usr/bin/myprogram &
read_something.sh
但我交换了最后一项的序列,然后调用myprogram并在守护进程中运行。
#!/bin/bash
modprobe some_driver
dmesg | grep BIOS > /bioslog
read_something.sh
setsid /usr/bin/myprogram &
为什么?
更多:
我的脚本通过systemd服务自动调用。
我的程序monitor
可以加载。
root@tomxue--------:~# ps | grep monitor
480 root 36288 S /usr/bin/monitor
984 root 7796 S grep monitor
root@tomxue--------:~# cat /usr/bin/speaker_autoexe.sh
#!/bin/bash
exec 2>/home/root/123.log; set -x
read_sn.sh
setsid /usr/bin/monitor &
root@tomxue--------:~# cat 123.log
+ read_sn.sh
/usr/bin/speaker_autoexe.sh: line 5: read_sn.sh: command not found
+ setsid /usr/bin/monitor
无法加载程序监视器的情况。
root@tomxue--------:~# ps | grep monitor
769 root 7796 R grep monitor
root@tomxue--------:~# cat /usr/bin/speaker_autoexe.sh
#!/bin/bash
exec 2>/home/root/123.log; set -x
setsid /usr/bin/monitor &
read_sn.sh
root@tomxue--------:~# cat 123.log
+ read_sn.sh
+ setsid /usr/bin/monitor
/usr/bin/speaker_autoexe.sh: line 6: read_sn.sh: command not found