Как запустить скрипт при запуске?
У меня есть скрипт в папке:
/path/to/my/script.sh
Мне нужен этот скрипт для запуска каждый раз, когда система запускается (даже если никто не входит в систему). Что мне нужно сделать, чтобы это произошло?
5 ответов
Вам понадобятся привилегии root для любого следующего. Чтобы получить root, откройте терминал и выполните команду
sudo -i
и командная строка изменится на "#", что означает, что сеанс терминала имеет привилегии root.
Альтернатива № 1: Добавить команды в /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
Альтернатива № 2: добавить задание Upstart (для систем старше 15.04)
Создать /etc/init/myjob.conf
vi /etc/init/myjob.conf
с содержанием, подобным следующему
description "my job"
start on startup
task
exec /path/to/my/script.sh
Альтернатива № 3: Добавить скрипт инициализации (устарел)
Создать новый скрипт в /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
Вам не нужен root, или даже войти в систему.
Вы можете редактировать свой crontab (crontab -e
) и создайте такую запись:
@reboot /path/to/script.sh
Таким образом, вы можете запустить его как обычный пользователь. @reboot
просто означает, что он запускается при запуске компьютера (не обязательно только при перезагрузке).
От терминала
создать файл
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
спасти
или же
Вы можете сделать это из графического интерфейса:
- запустите инструмент "автозапуск приложений" в Ubuntu 14.04, просто напишите его в поле поиска.
- добавить же
Exec
,Name
а такжеComment
,
У вас дома есть файл с именем.bashrc. Этот файл выполняется при открытии вашей сессии.
Просто поместите что-то вроде этого в конец файла:
sh /path/to/your/script.sh
РЕДАКТИРОВАТЬ: извините, я не ответил на ваш вопрос, потому что мое решение выполняется, когда пользователь вошел в систему...
Чтобы выполнить что-либо до входа в систему, вы можете попробовать rcconf или rc-файл: http://www.debianadmin.com/manage-linux-init-or-startup-scripts.html
Просто отредактируйте rc.local nano /etc/init.d/rc.local
следующее:
/path/to/my/script.sh || exit 1
exit 0