Как я могу настроить службу для запуска при запуске

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

LassePoulsen
источник
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-rc.d: /etc/init.d/usermanage: файл не существует
Ризван Патель
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. Сохраните файлы. И ваш скрипт будет запускаться при загрузке.

hhlp
источник
2
В комментариях к /etc/init.d/rc.local в Ubuntu 12.04 написано «Краткое описание: Запустите /etc/rc.local, если он существует», поэтому, возможно, было бы лучше добавить сценарии в /etc/rc.local?
Санхьюн Ли
Будет ли этот метод выдавать команду «shutdown» службе или просто завершать процесс при завершении работы ОС?
Вадим Чекан
Вадим, rc.local просто запускается при загрузке, при выключении ничего не получается. Процесс, скорее всего, будет остановлен ОС при завершении работы.
Weboide
1
К вашему сведению: Разница между rc.localдобавлением и добавлением в init заключается в том, что rc.local выполняется в конце последовательности запуска init, а не как ее часть
BobTuckerman
35
  • Чтобы запустить демон при запуске:

    update-rc.d service_name defaults
    
  • Удалять:

    update-rc.d -f service_name remove
    

по умолчанию => уровни запуска по умолчанию 2,3,4 и 5

Пример:

update-rc.d tomcat7 defaults
Лакал Малимаж
источник
1
Когда я делаю эту команду, я получаю «Ссылки на запуск / остановку системы для /etc/init.d/tomcat7 уже существуют». однако, когда я перезагружаюсь, он не запускает tomcat, мне всегда приходится делать «запуск сервиса tomcat7».
Джон Литтл
в моем случае sudo update-rc.d myservice default всегда завершается без вывода, и служба не запускается при загрузке или при запуске myservice службы sudo, которая также завершается без вывода сообщений . Однако 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.

tanius
источник