Як налаштувати службу для запуску при запуску


244

У мене демон, який працює нормально, якщо запустити його вручну serviceкомандою:

ricardo@ricardo-laptop:~$ sudo service minidlna start                   
 * Starting minidlna minidlna                                                              [ OK ] 

але він не налаштований для автоматичного запуску, коли ПК перезавантажується.

Як я можу налаштувати його на автоматичний запуск, навіть якщо ніхто не ввійшов у ПК?


@ user154721 Які аргументи ви дали на update-rc.d, щоб автозапуск працював? Я спробував різні варіанти, але не пощастив.
BennyTheBen

Програми автоматичного запуску налаштовуються в autostartманіфестах або у *.serviceфайлах у кількох місцях, а також у init.dабо crontab. Дивіться: unix.stackexchange.com/a/525845/43233
Ноам Манос

Відповіді:


281
sudo update-rc.d minidlna defaults

Це має додати послугу до системи автоматичного запуску. Але якщо ви отримаєте:

System start/stop links for /etc/init.d/minidlna already exist.

Виконай команду

sudo update-rc.d minidlna enable

PS : Для отримання більш детальної інформації перегляньте головну сторінку для update-rc.d, ввівши командуman update-rc.d


7
дякую, але що, якщо я отримаю цей результат під час виконання цієї команди ?:System start/stop links for /etc/init.d/minidlna already exist.
Рікардо Рейєс

1
якщо minidlna не записує в будь-який файл реєстрації, ви не знайдете його ніде. Можливо, це не вдалося, оскільки під час його запуску немає мережевого з'єднання? Спробуйте подивитися на конфігурацію, чи можна включити налагодження та / або ведення журналу, щоб з’ясувати, що не так.
LassePoulsen

8
@RicardoReyes використовує sudo update-rc.d -f minidlna removeдля видалення існуючих посилань.
Dogweather

5
Я отримую нижче update error-rc.d: /etc/init.d/usermanage: файл не існує
Rizwan Patel

2
Я також отримав таку ж помилку update-rc.d: /etc/init.d/mongod: file does not exist. Потім sudo systemctl enable mongod.serviceпрацювали на мене.
дослідник

36

Іноді потрібно запустити сценарій під час завантаження, наприклад, запустити конфігурацію iptables під час завантаження. Тому вам не доведеться запускати сценарій вручну при кожному перезавантаженні.

Ви можете запустити свій скрипт під час завантаження в Ubuntu, додавши його у /etc/init.d/rc.localфайл. Подивіться кроки нижче.

  1. Відкрити /etc/rc.localфайл за допомогою цієї команди:

    vim /etc/rc.local
    
  2. Додайте свій скрипт, який ви хочете запустити в процесі завантаження, наприклад:

    sh /home/ivan/iptables.sh 
    echo 'Iptable Configured!'
    
  3. Перегляньте коментарі, що містяться у цьому файлі, і переконайтеся, що вихід 0 знаходиться в кінці.

  4. Збережіть файли. І ваш сценарій буде працювати під час завантаження.


2
У коментарях /etc/init.d/rc.local в Ubuntu 12.04 написано "Короткий опис: запустити /etc/rc.local, якщо він існує", тож можливо краще додати сценарії до /etc/rc.local?
Sanghyun Lee

Чи видав би цей метод команду "shutdown" службі або просто вбив процес при відключенні ОС?
Вадим Чекан

Вадим, rc.local просто працює під час завантаження, нічого не досягається при відключенні. Цей процес, швидше за все, буде убитий ОС при відключенні.
Weboide

1
FYI: Різниця між rc.localдодаванням його до init полягає в тому, що rc.local виконується в кінці послідовності запуску init, а не як його частина
BobTuckerman

35
  • Щоб запустити демон при запуску:

    update-rc.d service_name defaults
    
  • Видалити:

    update-rc.d -f service_name remove
    

defaults => рівні запуску за замовчуванням 2,3,4 та 5

Приклад:

update-rc.d tomcat7 defaults

1
Коли я виконую цю команду, я отримую "Посилання для запуску / зупинки системи для /etc/init.d/tomcat7 вже існують". однак, коли я перезавантажую, він не запускає tomcat, мені завжди доводиться робити «сервіс tomcat7 start».
Джон Маленький

у моєму випадку sudo update-rc.d за замовчуванням myservice завжди завершується без виводу, і служба не запуститься при завантаженні або запуску служби sudo myservice, яка також завершується безшумно. sudo /etc/init.d/myservice розпочав роботу, однак
axk

13

Оскільки Ubuntu 15.10 (респ. Debian 8 "jessie"), вам потрібно використовувати таку команду, щоб налаштувати вашу службу minidlnaпід час запуску:

sudo systemctl enable minidlna.service

І знову відключити його від запуску під час завантаження:

sudo systemctl disable minidlna.service

Це працює з усіма посиланнями назви служб, які ви можете знайти ls /lib/systemd/system/*.service.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.