Как запустить скрипт при запуске? [Дубликат]

82

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

/path/to/my/script.sh

Мне нужно, чтобы этот скрипт запускался каждый раз, когда система запускается (даже если никто не входит в систему). Что мне нужно сделать, чтобы это произошло?

    
задан Rusty 12.12.2012 в 15:40
источник

5 ответов

113

Вам понадобятся права 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
    
ответ дан jdthood 12.12.2012 в 16:07
источник
37

Вам не нужен root или даже войти в систему.

Вы можете отредактировать свой crontab ( crontab -e ) и создать запись вроде этого:

@reboot /path/to/script.sh

Таким образом, вы можете запускать его как обычного пользователя. @reboot означает, что он запускается при запуске компьютера (не обязательно, когда он перезагружен).

    
ответ дан Dan Jones 12.12.2012 в 17:20
8

из терминала

  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. <р> сохранить

или

вы можете сделать это из GUI:

  1. запустите приложение «запуск приложений» в Ubuntu 14.04, вы просто напишите его в поле поиска.
  2. добавить те же Exec , Name и Comment .
ответ дан ChaosPredictor 16.09.2015 в 16:31
2

В вашем доме у вас есть файл с именем .bashrc. Этот файл выполняется при открытии сеанса.

Просто поместите что-то вроде этого в конец файла:

sh /path/to/your/script.sh

EDIT: извините, я не ответил на ваш вопрос, потому что мое решение выполняется, когда пользователь вошел в систему ...

Чтобы выполнить что-то перед входом в систему, вы можете попробовать rcconf или rc-файл: Ссылка     

ответ дан Gp2mv3 12.12.2012 в 15:47
-1

Просто отредактируйте rc.local nano /etc/init.d/rc.local следующим образом:

/path/to/my/script.sh || exit 1 
exit 0
    
ответ дан Arcsector 26.08.2017 в 00:43