Автоматично запустити програму при запуску під Linux ubuntu [закрито]


140

Мені потрібна програма, яку потрібно запускати кожен раз, коли я запускаю Linux ubuntu. Тому мені потрібно додати його до мого списку програм запуску. Лише одна проблема: мені потрібно це зробити через термінал.



23
@Flexo Ця відповідь не присутня в жодному з посилань, які ви надали. +1 до цього питання та відповідь
Франциско Вальдес

2
Насправді тут відповідь посилається на перше з цих питань.
Wilson F

4
Для простого, портативного способу зробити це, ви можете використовувати Cron. Запустіть, crontab -eщоб редагувати кронтаб користувача; додати @reboot commandдля запуску commandна кожному завантаженні.
додатки

2
Я не знаю, чи це його дублікат чи ні, але це перший хіт Google ...
Vladimir verleg

Відповіді:


178
sudo mv /filename /etc/init.d/
sudo chmod +x /etc/init.d/filename 
sudo update-rc.d filename defaults 

Тепер сценарій повинен запускатися під час завантаження. Зауважте, що цей метод також працює як з жорсткими, так і з символічними посиланнями ( ln).

Редагувати

На даний момент у процесі завантаження PATH ще не встановлений, тому важливо, щоб абсолютні шляхи використовувалися протягом усього часу. Але, як вказував у коментарях Стів HHH, явно декларування повного шляху до файлу ( /etc/init.d/filename) для команди update-rc.d недійсне в більшості версій Linux. На сторінці сторінки для update-rc.d другий параметр - це сценарій, розташований у /etc/init.d/*. Оновлений вище код, щоб відобразити це.

Ще одна редакція

Також, як зазначено в коментарях (Чарльз Брандт), /filenameмає бути сценарій стилю init. Був також наданий хороший шаблон - https://github.com/fhd/init-script-template .

Ще одне посилання на іншу статтю, щоб уникнути можливої ​​гнилі посилань (хоча було б сумно, якби GitHub помер) - http://www.linux.com/learn/tutorials/442412-managing-linux-daemons-with-init-scripts

щеДруга редакція

Як вказувалося в коментарях (Рассел Ян), це працює лише в режимі default-rc.d за замовчуванням.

Відповідно до посібника update-rc.d, він може працювати в двох режимах, "машини, які використовують застарілий режим, матимуть файл /etc/init.d/.legacy-bootordering", і в цьому випадку вам потрібно передати конфігурацію послідовності та рівня запуску через аргументи командного рядка.

Еквівалентний аргумент, наведений у наведеному вище прикладі, є

sudo update-rc.d filename start 20 2 3 4 5 . stop 20 0 1 6 .


1
Як і FYI, опція "за замовчуванням" встановлює посилання для запуску сценарію в рівнях запуску 2, 3, 4 і 5. (і ставить посилання для зупинки на 0, 1 і 6.)
Дейв Ласлі

5
Я просто спробував це в Ubuntu Server 12.04 LTS, але в 12.04 ви не можете мати префікс /etc/init.d. Це просто sudo update-rc.d filename defaults.
Стів HHH

1
@puk З цим методом працюватимуть і жорсткі, і символічні посилання
Дейв Ласлі

14
Просто хотів додати, що / ім'я файлу в цьому випадку має бути сценарієм init. Ось шаблон для запуску власного користувальницького сценарію init: github.com/fhd/init-script-template
Чарльз Брандт

1
Читаючи це - unix.stackexchange.com/questions/28679/… - разом з відповіддю буде корисно
Арджун Средхаран
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.