У меня есть несколько скриптов: collection.sh
start.sh
script1.sh
и script2.sh
. Я настроил их на запуск во время загрузки, так что:
collection.sh
звонкиstart.sh
start.sh
называет обаscript?.sh
Сбор осуществляется следующим образом:
$ cp collection.sh /etc/init.d/
$ update-rc.d collection.sh defaults 99
Если я запускаю collection.sh вручную (т. е. $ . /etc/init.d/collection.sh
), то все работает так, как и ожидалось, но если я перезагружаю или полностью выключаю и включаю компьютер, то collection.sh запускается, но start.sh никогда не запускается.
Для ясности приведем пример того, как выглядит каждый скрипт:
collection.sh
:. /path/to/start.sh &
start.sh
:./script1.sh & ./script2.sh &
script1.sh/script2.sh
:while : do #does some stuff here #yes this is an infinite loop done
У меня есть распечатанные заявления, которые подтверждают, что он collection.sh
начинается (фактически дважды) и start.sh
никогда не начинается.
Я также подтвердил, что использование ps aux | grep collection.sh
этого метода collection.sh
завершается.
решение1
У вас могут возникнуть проблемы с путями.
измените PATH в start.sh или используйте полные пути в start.sh для запуска script[12].sh
Вы не указали, какой дистрибутив используете (каждый немного отличается) — иногда применяется метод «кувалды», при котором строки добавляются в /etc/rc.local.