Запускать скрипт автоматически при запуске: скрипт работает неправильно
Я хочу запустить скрипт bash при запуске моей платы Parallella, которая имеет Ubuntu. Я искал в SO и нашел инструкцию здесь:
- Запуск автоматической программы при запуске под Linux ubuntu Программно запускается при запуске Linux?
Мой скрипт bash - test.sh
, который имеет только одну строку:
echo "Hello World" &> /home/qsp/WIP/test/hello.txt
1) Первый способ, которым я пытался, - добавить /etc/rc.local
путь aboslute к скрипту:
/home/qsp/WIP/test/test.sh
2) Второй способ, который я пробовал, - следовать приведенному выше ответу.
sudo mv test.sh /etc/init.d/
sudo update-rc.d test.sh defaults
В обоих случаях сценарий выполнялся после загрузки, и в папке был создан файл hello.txt
. Однако содержимое файла пуст (а владелец - root). Интересно, я что-то упустил. Спасибо.
====== UPDATE =======
Следуя ответу Skynet, я меняю свой сценарий на:
echo "Hello World" | tee /home/qsp/WIP/test/hello.txt
и сценарий записывается в файл после правильной загрузки. У меня есть другой вопрос, почему мой оригинальный скрипт с &>
не работал, хотя он все еще работает, если выполняется из командной строки.
Вы должны сделать это в стиле сценария init, как цитируется первым вопросом SO. Вот так:
case "$1" in
start)
#startup code
;;
stop)
#stop code
;;
restart)
#restart code
;;
esac
Также взгляните на https://github.com/fhd/init-script-template/blob/master/template
После редактирования /etc/rc.local
и добавления ваших команд,
проверьте, что ваш скрипт должен всегда заканчиваться exit 0.
Также убедитесь, что вы сделали его исполняемым с помощью команды chmod
chmod 777 test.sh
Измените линию вывода как
echo "Hello World" | tee /home/qsp/WIP/test/hello.txt
Создайте файл.desktop и настройте свой ystem для автоматического запуска во время входа в систему
Создайте файл.desktop, как показано ниже.
$ vim ~/.config/autostart/test_script.desktop
добавить информацию ниже
[Desktop Entry]
Type=Application
Name=Test script
Exec=~/test.sh
X-GNOME-Autostart-enabled=true
Обратите внимание, что ~/test.sh указывает на созданный вами скрипт. Сохрани это.
Сделайте его исполняемым:
$ chmod o + x ~/.config/autostart/test_script.desktop
Перезагрузитесь, и для следующего входа ваш скрипт должен работать.