====== Автозагрузка сервисов в Linux ====== ===== CentOS ===== ==== CentOS 7 ==== Вывести список всех сервисов # systemctl list-unit-files --type=service Проверить статус httpd # systemctl status httpd Добавить сервис в автозагрузку (аналог chkconfig on) # systemctl enable httpd Убрать сервис из автозагрузки # systemctl disable httpd Проверить добавлен ли httpd в автозагрузку # systemctl is-enabled httpd Проверить какие сервисы не смогли запуститься при старте системы # systemctl --failed UNIT LOAD ACTIVE SUB DESCRIPTION ip6tables.service loaded failed failed IPv6 firewall with ip6tables LOAD = Reflects whether the unit definition was properly loaded. ACTIVE = The high-level unit activation state, i.e. generalization of SUB. SUB = The low-level unit activation state, values depend on unit type. Более подробный список доступных команд Ниже представлены основные команды systemctl: ^ Команда ^ Описание ^ | systemctl start name.service | запуск сервиса | | systemctl stop name.service | остановка сервиса | | systemctl restart name.service | перезапуск сервиса | | systemctl try-restart name.service | перезапуск сервиса только, если он запущен | | systemctl reload name.service | перезагрузка конфигурации сервиса | | systemctl status name.service | проверка, запущен ли сервис с детальным выводом состояния сервиса | | systemctl is-active name.service | проверка, запущен ли сервис с простым ответом: active или inactive | | systemctl list-units --type service --all | отображение статуса всех сервисов | | systemctl enable name.service | активирует сервис (позволяет стартовать во время запуска системы) | | systemctl disable name.service | деактивирует сервис | | systemctl reenable name.service | деактивирует сервис и сразу активирует его | | systemctl is–enabled name.service | проверяет, активирован ли сервис | | systemctl list-unit-files --type service | отображает все сервисы и проверяет, какие из них активированы | | systemctl mask name.service | заменяет файл сервиса симлинком на /dev/null, делая юнит недоступным для systemd | | systemctl unmask name.service | возвращает файл сервиса, делая юнит доступным для systemd | ==== CentOS 6 ==== === chkconfig === Вывести список всех сервисов # chkconfig --list acpid 0:off 1:off 2:on 3:on 4:on 5:on 6:off atd 0:off 1:off 2:off 3:on 4:on 5:on 6:off auditd 0:off 1:off 2:on 3:on 4:on 5:on 6:off crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off htcacheclean 0:off 1:off 2:off 3:off 4:off 5:off 6:off httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off ip6tables 0:off 1:off 2:off 3:off 4:off 5:off 6:off ipset 0:off 1:off 2:on 3:on 4:on 5:on 6:off iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off memcached 0:off 1:off 2:on 3:on 4:on 5:on 6:off munin-node 0:off 1:off 2:on 3:on 4:on 5:on 6:off mysql 0:off 1:off 2:on 3:on 4:on 5:on 6:off named 0:off 1:off 2:on 3:on 4:on 5:on 6:off netconsole 0:off 1:off 2:off 3:off 4:off 5:off 6:off netfs 0:off 1:off 2:off 3:off 4:off 5:off 6:off network 0:off 1:off 2:on 3:on 4:on 5:on 6:off nginx 0:off 1:off 2:on 3:on 4:on 5:on 6:off ntpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off ntpdate 0:off 1:off 2:off 3:off 4:off 5:off 6:off portreserve 0:off 1:off 2:on 3:on 4:on 5:on 6:off postfix 0:off 1:off 2:on 3:on 4:on 5:on 6:off rdisc 0:off 1:off 2:off 3:off 4:off 5:off 6:off restorecond 0:off 1:off 2:off 3:off 4:off 5:off 6:off rsyslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off saslauthd 0:off 1:off 2:off 3:off 4:off 5:off 6:off sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off svnserve 0:off 1:off 2:off 3:off 4:off 5:off 6:off sysstat 0:off 1:on 2:on 3:on 4:on 5:on 6:off udev-post 0:off 1:on 2:on 3:on 4:on 5:on 6:off vnstat 0:off 1:off 2:on 3:on 4:on 5:on 6:off xinetd 0:off 1:off 2:off 3:off 4:off 5:off 6:off Показать информацию по сервису httpd # chkconfig --list httpd httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off Добавить сервис в автозагрузку # chkconfig httpd on или # chkconfig --level 345 httpd on Чтобы отключить # chkconfig httpd off === ntsysv === Также можно воспользоваться утилитой ''[[https://www.centos.org/docs/5/html/Deployment_Guide-en-US/s1-services-ntsysv.html|ntsysv]]'' # yum install ntsysv # ntsysv --level 345 {{:linux:ntsysv.png|}} ===== Debian/Ubuntu ===== ==== update-rc.d ==== Вывести список сервисов и их состояние # service --status-all [ + ] acpid [ - ] anacron [ + ] atd [ + ] avahi-daemon [ - ] bootlogs [ ? ] bootmisc.sh [ ? ] checkfs.sh [ ? ] checkroot-bootclean.sh [ - ] checkroot.sh [ - ] console-setup [ + ] cron [ + ] dbus [ + ] exim4 [ ? ] hdparm [ - ] hostname.sh [ ? ] hwclock.sh [ - ] kbd [ - ] keyboard-setup [ - ] keymap.sh [ ? ] killprocs [ ? ] kmod [ - ] motd [ ? ] mountall-bootclean.sh [ ? ] mountall.sh [ ? ] mountdevsubfs.sh [ ? ] mountkernfs.sh [ ? ] mountnfs-bootclean.sh [ ? ] mountnfs.sh [ ? ] mtab.sh [ ? ] mysql [ ? ] networking [ + ] nginx [ + ] php5-fpm [ - ] procps [ ? ] rc.local [ - ] rmnologin [ - ] rsync [ + ] rsyslog [ ? ] sendsigs [ + ] ssh [ - ] sudo [ + ] udev [ ? ] udev-mtab [ ? ] umountfs [ ? ] umountnfs.sh [ ? ] umountroot [ - ] urandom [ + ] - сервис работает в настоящее время\\ [ - ] - сервис в настоящее время не работает\\ [ ? ] - вывод статуса для сервиса не предусмотрен Перевод [[http://manpages.ubuntu.com/manpages/trusty/man8/update-rc.d.8.html|man]] доступен [[http://manpages.ylsoftware.com/ru/update-rc.d.8.html|здесь]] Добавить apache2 в автозагрузку # update-rc.d apache2 defaults update-rc.d: using dependency based boot sequencing Удалить apache2 из автозагрузки # update-rc.d -f apache2 remove update-rc.d: using dependency based boot sequencing Чуть подробнее. В Linux у нас определенное количество уровней выполнения ([[https://ru.wikipedia.org/wiki/Уровень_выполнения|runlevel]]) К примеру MySQL и Apache у нас загружаются на 3 уровне. И скорее всего вы хотите, чтобы MySQL стартовал перед Apache, а при перезагрузке сначала должен быть остановлен Apache, а потом MySQL. Для этого нам нужно установить start (S) и kill (K) приоритеты. Для MySQL нужно поставить приоритет на стадии загрузки, а для Apache приоритет на shutdown\reboot'е. При старте (S), чем меньше значение приоритета, тем раньше сервис будет запущен. Сервис со start приоритетом равным 10 будет запущен раньше сервиса с приоритетом равным 20. При остановке (K) всё наоборот. Сервис с большим приоритетом будет остановлен раньше, чем сервис с меньшим приоритетом. Небольшой пример. Устанавливаем приоритет start и kill сервису Apache Синтаксис следующий update-rc.d apache2 defaults [START] [KILL] Итак, сделаем так, чтобы сначала стартовал MySQL, а потом Apache. А при рестарте сначала останавливался Apache, а потом MySQL. # update-rc.d apache2 defaults 90 90 # update-rc.d mysql defaults 10 10 Так как start и kill приоритеты в данном случае одинаковые, то можно сократить команды следующим образом # update-rc.d apache2 defaults 90 # update-rc.d mysql defaults 10 ==== Утилита sysv-rc-conf ==== # apt-get install sysv-rc-conf # sysv-rc-conf {{:linux:sysv-rc-conf.png|}} ===== БОНУС - шпаргалка SysVinit/systemd ===== via https://fedoraproject.org/wiki/SysVinit_to_Systemd_Cheatsheet/ru ^ Команда sysvinit ^ Команда systemd ^ Комментарий ^ |service frobozz start |systemctl start frobozz.service |Используется для разового запуска службы. | |service frobozz stop |systemctl stop frobozz.service |Используется для разовой остановки службы. | |service frobozz restart |systemctl restart frobozz.service |Используется для разового перезапуска службы. | |service frobozz reload |systemctl reload frobozz.service |Если такая возможность поддерживается службой, перезагружает конфигурационный файл, не прерывая процесса. | |service frobozz condrestart |systemctl condrestart frobozz.service |Перезапускает службу, если она запущена. | |service frobozz status |systemctl status frobozz.service |Сообщает, запущена ли служба. | |ls /etc/rc.d/init.d/ |ls /lib/systemd/system/*.service /etc/systemd/system/*.service |Используется для получения списка служб, которые могут быть запущены или остановлены. | |chkconfig frobozz on |systemctl enable frobozz.service |Включает запуск службы после перезагрузки. | |chkconfig frobozz off |systemctl disable frobozz.service |Отключает запуск службы после перезагрузки. | |chkconfig frobozz |systemctl is-enabled frobozz.service |Используется для проверки, будет ли служба запущена после перезагрузки. | |chkconfig frobozz --list |ls /etc/systemd/system/*.wants/frobozz.service |Выдает список уровней загрузки(целей), при которых данная служба будет запущена автоматически. | |chkconfig frobozz --add | |Не используется, нет аналога. | Бонус к бонусу - [[https://github.com/ruzickap/linux.xvx.cz/tree/gh-pages/files/systemd_cheatsheet|шпаргалка в pdf, svg, dvi, tex]] | {{ :linux:systemd_cheatsheet.pdf |PDF версия, зеркало rtfm.wiki}}