Как запустить сценарий при запуске? [дубликат]

На этот вопрос уже есть ответ здесь:

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

/path/to/my/script.sh

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

114
задан 24 December 2015 в 04:15

5 ответов

от терминала

  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.
13
ответ дан 24 December 2015 в 04:15

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

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

sh /path/to/your/script.sh

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

Для выполнения чего-то перед входом в систему можно попробовать rcconf или емкостно-резистивный файл: http://www.debianadmin.com/manage-linux-init-or-startup-scripts.html

2
ответ дан 24 December 2015 в 04:15

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

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

@reboot /path/to/script.sh

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

0
ответ дан 24 December 2015 в 04:15

Вам понадобятся привилегии суперпользователя для любого следующего. Чтобы получить 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
0
ответ дан 24 December 2015 в 04:15

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

/path/to/my/script.sh || exit 1 
exit 0
0
ответ дан 24 December 2015 в 04:15

Другие вопросы по тегам:

Похожие вопросы: