Почему моя программа не вызывается в скрипте?
Я делаю программу (демон) и помещаю ее в скрипт, который будет вызываться при загрузке. Сценарий как ниже. Таким образом, моя программа не вызывается вообще. Потому что я проверил ps | grep myprogram
, И, пожалуйста, обратите внимание, что сценарий read_something.sh
не существует!
#!/bin/bash
modprobe some_driver
dmesg | grep BIOS > /bioslog
setsid /usr/bin/myprogram &
read_something.sh
Но я обмениваю последовательность последних элементов, затем вызывается моя программа и работает на лунке демона.
#!/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