На этот вопрос уже есть ответ здесь:
У меня есть скрипт в папке :
/path/to/my/script.sh
Мне нужно, чтобы этот сценарий запускался каждый раз при запуске системы (даже если никто не входит в систему). Что мне нужно сделать, чтобы это произошло?
от терминала
создайте файл newshell.sh.desktop
в ~/.config/autostart
папка:
gedit ~/.config/autostart/newshell.sh.desktop
изменение Exec
, Name
и Comment
оцените и добавьте к файлу: первая строка
[Desktop Entry]
Type=Application
Exec=/full/link/to/your/newshell.sh
Name=newshell
Comment=whatever you want
сохранить
или
можно сделать это от GUI:
Exec
, Name
и Comment
.В Вашем доме у Вас есть файл, названный .bashrc. Этот файл выполняется при открытии Вашей сессии.
Просто поместите что-то вроде этого в конце файла:
sh /path/to/your/script.sh
Править: извините, я не отвечал на Ваш вопрос, потому что мое решение выполняется, когда пользователь зарегистрирован...
Для выполнения чего-то перед входом в систему можно попробовать rcconf или емкостно-резистивный файл: http://www.debianadmin.com/manage-linux-init-or-startup-scripts.html
Вам не нужен root или даже чтобы войти.
Вы можете отредактировать свой crontab (crontab -e
) и создать запись, подобную этой:
@reboot /path/to/script.sh
Таким образом, вы можете запустить его как обычный пользователь. @reboot
просто означает, что он запускается при запуске компьютера (не обязательно только при перезагрузке).
Вам понадобятся привилегии суперпользователя для любого следующего. Чтобы получить root, откройте терминал и выполните команду
sudo -i
, и командная строка изменится на «#», указывая, что сеанс терминала имеет привилегии root.
/etc/rc.local
vi /etc/rc.local
с содержанием, подобным следующему:
# This script is executed at the end of each multiuser runlevel
/path/to/my/script.sh || exit 1 # Added by me
exit 0
Создать /etc/init/myjob.conf
vi /etc/init/myjob.conf
с содержимым, подобным следующему
description "my job"
start on startup
task
exec /path/to/my/script.sh
Создайте новый скрипт в /etc/init.d/myscript
.
vi /etc/init.d/myscript
(Очевидно, это не должно называться «myscript».) В этом сценарии делайте все, что хотите. Возможно, просто запустите сценарий, который вы упомянули.
#!/bin/sh
/path/to/my/script.sh
Сделайте его исполняемым.
chmod ugo+x /etc/init.d/myscript
Сконфигурируйте систему init для запуска этого скрипта при запуске.
update-rc.d myscript defaults
Просто отредактируйте rc.local nano /etc/init.d/rc.local
следующим образом:
/path/to/my/script.sh || exit 1
exit 0