У меня есть сценарий /etc/init.d, который запускает мой веб-сервер. Я сделал его исполняемым и добавил его (update-rc.d webserver defaults). Когда я запускаю скрипт из командной строки, он отлично работает (./webserver).
Но после перезагрузки моей системы мой веб-сервер не работает.
#!/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
cd ~/projects/webserver
./.build/debug/webserver &
exit 0
Является ли каталог пользователя проблемой (я зарегистрирован как пользователь root)?
В вашем скрипте есть проблема. Когда вы пишете скрипт, лучше используйте путь aboslute вместо тильды (~) . Это может быть преступником, который сделал сценарий непригодным для использования. Если вы хотите изменить каталог, укажите полный путь, как / home / scripts / projects / вместо ~ / projects . Это делает намного больше различий. Для достижения вашей цели , существует несколько способов. Будучи старшим инженером систем, я использую разную методологию для достижения таких вещей, которые зависят от ситуаций. Хорошо, здесь я перечисляю некоторые из многих способов.
1) Основной способ, которым вы привязали и не преуспели.
sudo su
chmod a+x /etc/init.d/webserver
update-rc.d webserver defaults
2) Добавить задание cron при перезагрузках.
sudo su
crontab -e
@reboot /home/path/to/script.sh
3) Добавьте свои команды в rc .local перед выходом последней строки 0.
sudo su
nano /etc/rc.local
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
cd /absolute/path/projects/webserver
./.build/debug/webserver &