Содержание
Автозагрузка сервисов в 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
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
[ + ] - сервис работает в настоящее время
[ - ] - сервис в настоящее время не работает
[ ? ] - вывод статуса для сервиса не предусмотрен
Добавить 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 у нас определенное количество уровней выполнения (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
БОНУС - шпаргалка 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 | Не используется, нет аналога. |
Бонус к бонусу - шпаргалка в pdf, svg, dvi, tex | PDF версия, зеркало rtfm.wiki
Обсуждение
Благодарю