автозапуск скриптов в Debian

автозапуск скриптов в Debian

У меня есть служба, которую я устанавливаю следующим образом:

install -m 755 init_script /etc/init.d/spacenavd
cd /etc/rc2.d
ln -s ../init.d/spacenavd S99spacenavd

init_script запускает скрипт:

/usr/local/bin/spacenavd -v

Все это отлично работает и позволяет службе автоматически запускаться при запуске. Однако у меня возникли проблемы с запуском другого скрипта при запуске, который использует службу spacenavd. Этот скрипт работает нормально, когда я запускаю его вручную после входа в систему. Однако запуск его при запуске на as so не работает, когда я помещаю его в rc.local.

Я делаю следующее в rc.local:

cd /home/filedirec
sudo ./my_script &

Иногда это работает, иногда нет. Я не могу определить, в чем причина. Какой хороший способ устранения неполадок?

решение1

Дежавю.

Sudo — это интерактивная программа, требующая от вас ввода пароля для запуска команды от имени пользователя root (или другого пользователя), если вы недавно не ввели свои учетные данные.rc.localСкрипт не прикреплен к вашей консоли, поэтому вы никогда не увидите, как он запрашивает пароль.

Therc.localскрипт также уже запущен от имени пользователя root, поэтому вам следует удалитьсудокоманда из него.

А еще лучше было бы просто заменить все, что вы добавили, на:/home/filedirec/мой_скрипт(или/home/filedirec/my_script &если необходимо). Использование абсолютного пути позволит быстрее и проще увидеть, что именноrc.localсценарий работает, если его нужно пересмотреть позже,CDи т. п., как правило, лучше подходят для интерактивных оболочек.

решение2

Одна из вещей, которую вы можете сделать, это запустить свой скрипт в отдельномэкрансессия.

Например, ваш файл rc.local может выглядеть так:

/usr/bin/screen -dmS my_script bash -c '/home/filedirec/my_script'

Затем вы можете легко «присоединить» экран после запуска и посмотреть, что происходит с вашим скриптом. Также возможно записывать вывод в файл.

Если команда screen недоступна в вашей системе:sudo apt-get install screen

Учебник с картинками: экран: поддержание работы процессов, несмотря на разрыв соединения

Связанный контент