Как запустить скрипт при запуске?

У меня есть скрипт в папке:

/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 просто означает, что он запускается при запуске компьютера (не обязательно только при перезагрузке).

От терминала

  1. создать файл newshell.sh.desktop в ~/.config/autostart папка:

    gedit ~/.config/autostart/newshell.sh.desktop
    
  2. менять Exec, Name а также Comment значение и добавление в файл: первая строка

     [Desktop Entry]
     Type=Application
     Exec=/full/link/to/your/newshell.sh
     Name=newshell
     Comment=whatever you want
    
  3. спасти

или же

Вы можете сделать это из графического интерфейса:

  1. запустите инструмент "автозапуск приложений" в Ubuntu 14.04, просто напишите его в поле поиска.
  2. добавить же 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
Другие вопросы по тегам