Debian, начиная с 8 версии по умолчанию используется systemd
вместо init.d
, который использует unit-файлы из каталога /etc/systemd/system
, вместо скриптов в /etc/init.d/
, как это делает init.d
.
Краткое перечисление полезных команд systemctl
.
Содержание
Получение списка служб
Вывести на экран активные сервисы и их состояние:
# systemctl list-units -t service UNIT LOAD ACTIVE SUB DESCRIPTION acpid.service loaded active running ACPI event daemon atd.service loaded active running Deferred execution scheduler console-setup.service loaded active exited LSB: Set console font and keymap ... 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. 32 loaded units listed. Pass --all to see loaded but inactive units, too. To show all installed unit files use 'systemctl list-unit-files'.
Что бы убрать “легенду” внизу списка – используйте --no-legend
.
Что бы вывести все сервисы – используйте--all
:
# systemctl list-units -t service --all ... 63 loaded units listed. ...
Управление службами
Проверить состояние отдельного сервиса:
# systemctl status mysql ● mysql.service - LSB: Start and stop the mysql database server daemon Loaded: loaded (/etc/init.d/mysql) Active: active (running) since Sun 2016-04-24 10:30:32 GMT; 16min ago CGroup: /system.slice/mysql.service ├─3076 /bin/bash /usr/bin/mysqld_safe ├─3077 logger -p daemon.err -t /etc/init.d/mysql -i ├─3215 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --skip-log-error --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306 └─3216 logger -t mysqld -p daemon.error Apr 24 10:30:36 debian-jessie /etc/mysql/debian-start[3267]: mysql.time_zone_transition OK Apr 24 10:30:36 debian-jessie /etc/mysql/debian-start[3267]: mysql.time_zone_transition_type OK Apr 24 10:30:36 debian-jessie /etc/mysql/debian-start[3267]: mysql.user OK ...
Запустить сервис:
# systemctl start mysql
Остановить:
# systemctl stop mysql
Перезагрузить конфигурацию сервиса:
# systemctl reload mysql
Перезапустить службу:
# systemctl restart mysql
Перезапустить, если она запущена:
# systemctl try-restart mysql
Выполнить reload
(конфигурации), если такая команда поддеживается – или перезапустить службу. Если служба остановлена – она будет запущена:
# systemctl reload-or-restart mysql
Убить службу:
# systemctl kill mysql
Больше по kill
см. тут>>>.
Проверить запущен и работает ли сервис:
# systemctl is-active mysql active
Или с помощью кода выполнения:
# systemctl is-active mysql; echo $? active 0
# systemctl is-active mysql --quiet; echo $? 0
Аналогично можно проверить были ли проблемы при запуске сервиса и запущен ли он в данный момент:
# systemctl is-failed mysql active # systemctl is-failed mysql --quiet; echo $? 1
Если сервис был корретно остановлен:
# systemctl is-failed mysql inactive
Управление автозапуском
Добавить в автозапуск:
# systemctl enable mysql
Убрать из автозапуска:
# systemctl disable mysql
Проверить – есть ли юнит в автозапуске:
# systemctl is-enabled sshd enabled
Аналогично примеру с is-active
– можно использовать is-enabled
:
# systemctl is-enabled sshd enabled
# systemctl is-enabled sshd --quiet; echo $? 0
Ссылки по теме
SysVinit to Systemd Cheatsheet
Getting Started with systemd
How To Use Systemctl to Manage Systemd Services and Units