- Как в Linux пользоваться командой systemctl
- Общий синтаксис
- Шпаргалка по часто используемым командам systemctl
- Автозапуск
- Редактирование сервисов
- Как просмотреть статус службы в Linux с помощью systemctl
- Просмотр статуса сервиса:
- Как просмотреть статус службы под названием nginx
- Понимание состояний службы / модулей systemd
- В настоящее время systemd поддерживает следующие модули
- Чтобы показать все установленные файлы модулей, используйте:
- Linux просмотр статуса службы
- Как вывести список модулей, которые systemd в настоящее время имеет в памяти
- Список systemd/systemctl всех отказавших модулей units/services в Linux
- Что делать, если такой сервис, как nginx, не запущен?
- Как просмотреть источник файла службы / модуля systemd
- Вывод
Как в Linux пользоваться командой systemctl
Вместе с подсистемой systemd появилась команда systemctl. Она позволяет управлять основными процессами Linux. Ниже представлена небольшая инструкция в виде шпаргалки наиболее используемых команд.
Общий синтаксис
Без параметров, systemctl показывает список запущенных служб, точек монтирования, устройств и других юнитов.
Примерный вывод команды:
1) название юнита;
2) тип юнита (например, service: служба или демон, mount: точка монтирования, device: устройства);
3) состояние юнита (загружен или нет);
4) обобщенный статус юнита (active: выполняется, inactive: не был запущен, maintenance: требуется внимание администратора);
5) текущий статус (запущен или нет);
6) описание.
Шпаргалка по часто используемым командам systemctl
1. Посмотреть статус службы:
systemctl status network
* покажет статус службы на примере сети network
2. Запустить сервис:
systemctl start mysql
* запустит сервис баз данных на примере mysql
3. Остановить службу:
systemctl stop ntpd
* остановит сервис времени ntpd
4. Перезапустить службу:
systemctl restart nginx
* перезапустит веб-сервер nginx
5. Включить автозапуск службы:
systemctl enable apache
* разрешит автозапуск веб-сервера apache
6. Отключить автозапуск службы:
systemctl disable firewalld
* запретит автозапуск брандмауэра firewalld
7. Выполнить команду на удаленной системе:
systemctl —host root@192.168.0.15 stop cron
* остановит cron на компьютере с IP-адресом 192.168.0.15, подключившись под учетной записью root.
8. Перезагрузить сервер:
* перезагрузит локальный сервер.
9. Проверка работы сервиса.
Выполняется с помощью опции is-active:
systemctl is-active docker
* в данном примере мы проверим работу службы docker.
а) Если сервис запущен, мы увидим:
б) Если не запущен:
в) Если такого сервиса нет в системе:
Если сервис не работает или его нет в системе, команда вернет код ошибки, таким образом конструкция:
systemctl is-active docker && docker run hello-world
. приведет к выполнению команды docker run hello-world только в том случае, если сервис docker работает.
Автозапуск
Подсистему systemd также можно использовать для автозапуска сервисов или скриптов. Для этого в каталоге /usr/lib/systemd/system создаем юнит (файл) с расширением .service. Подробнее разберем на примере сервиса bind:
Содержимое может быть следующего содержания:
[Unit]
Description=Berkeley Internet Name Domain (DNS)
Wants=nss-lookup.target
Wants=named-setup-rndc.service
Before=nss-lookup.target
After=network.target
After=named-setup-rndc.service
[Service]
Type=forking
Environment=NAMEDCONF=/etc/named.conf
EnvironmentFile=-/etc/sysconfig/named
Environment=KRB5_KTNAME=/etc/named.keytab
PIDFile=/run/named/named.pid
ExecStartPre=/bin/bash -c ‘if [ ! «$DISABLE_ZONE_CHECKING» == «yes» ]; then /usr/sbin/named-checkconf -z «$NAMEDCONF»; else echo «Checking of zone files is disabled»; fi’
ExecStart=/usr/sbin/named -u named -c $
ExecReload=/bin/sh -c ‘/usr/sbin/rndc reload > /dev/null 2>&1 || /bin/kill -HUP $MAINPID’
ExecStop=/bin/sh -c ‘/usr/sbin/rndc stop > /dev/null 2>&1 || /bin/kill -TERM $MAINPID’
PrivateTmp=true
* как правило, файл разделен на 3 части:
- Unit — позволяет определить метаданные для юнита.
- Service — раздел для основной конфигурации юнита.
- Install — определение поведения для юнита при его включении или отключении.
Подробнее можно почитать о структуре и возможных опциях на странице https://linux-notes.org/pishem-systemd-unit-fajl/
После внесения изменений и сохранения файла, необходимо перечитать изменения командой:
Теперь можно разрешить автозапуск:
systemctl enable named
Редактирование сервисов
Если мы хотим внести изменения в юнит-файл сервиса, который был установлен с последним, необходимо использовать drop-in файл или файл переопределения настроек. В противном случае, после обновления программы наши изменения могут быть удалены.
И так, мы для примера взяли юнит для bind. Чтобы создать для него drop-in файл, вводим:
systemctl edit named
И вносим, например, такие изменения:
* будет создан файл /etc/systemd/system/named.service.d/override.conf, который будет переопределять настройки основного юнит-файла. В данном примере, мы указываем на необходимость перезапуска сервиса при сбое.
Чтобы убедиться в использовании Drop-In файла смотрим статус сервиса:
Источник
Как просмотреть статус службы в Linux с помощью systemctl
Мы используем systemctl status команду под systemd для просмотра статуса данной службы в операционных системах Linux..
Просмотр статуса сервиса:
Синтаксис команды systemctl следующий
systemctl status
systemctl status
Как просмотреть статус службы под названием nginx
Тип:
$ systemctl status nginx.service
ssh server status
$ systemctl status sshd.service
Lighttpd web server status
$ systemctl status lighttpd.service
Точка (« ● ») использует цвет на поддерживаемых терминалах, чтобы быстро обозначить состояние устройства. Белый цвет указывает на «неактивное» или «деактивированное» состояние. Красный цве т указывает на состояние «сбой» или «ошибка». Зеленый цвет указывает на состояние «активное», «перезагрузка» или «активация».
Понимание состояний службы / модулей systemd
Статус службы Linux зависит от различных состояний, таких как:
Service status | Описание |
---|---|
active (running) | Служба или демон работает в фоновом режиме. Например, веб-сервер sshd или nginx / apache и список для входящего трафика. |
active (exited) | Служба успешно запущена из файла конфигурации. Обычно однократная конфигурация сервисов считывается до выхода из сервиса. Например, сервис AppArmor или Firewall. |
active (waiting) | Наша служба работает, но ожидает события, такого как событие CPUS / печати. |
inactive | Сервис не работает. |
enabled | Служба включается во время загрузки. |
disabled | Служба отключена и не будет запущена при загрузке сервера Linux. |
static | Служба не может быть включена в Linux, но обычно запускается другим модулем systemd автоматически. Другими словами, файл модуля не включен и не имеет условий для разрешения в разделе [Установить] файл модуля. |
masked | Служба полностью отключена, и любая операция запуска на ней всегда заканчивается неудачей. |
alias | Имя службы — это псевдоним. Это означает, что служба является символической ссылкой на другой файл модуля. |
linked | Доступен через одну или несколько символических ссылок на файл модуля (постоянно в /etc/systemd/system/ или временно в /run/systemd/system/), даже если файл модуля может находиться за пределами пути поиска файла модуля |
В настоящее время systemd поддерживает следующие модули
- service : Конфигурация служебного модуля о процессе, который контролируется и контролируется systemd.
- mount : Точка монтирования файловой системы контролируется и контролируется systemd.
- swap : Конфигурация файла подкачки / диска контролируется systemd.
- socket : IPC, сетевой сокет или FIFO файловой системы, управляемый и контролируемый systemd, для активации на основе сокетов.
- target : Он содержит информацию о целевом модуле systemd. Он используется для группирования блоков и как известные точки синхронизации при запуске. Например, graphical.target используется для входа на рабочий стол на основе графического интерфейса пользователя. Точно так же multi-user.target используется серверами, на которых пользователи могут входить в систему с помощью ssh / console.
- device : Устройство, представленное в дереве устройств sysfs / udev. Он включает в себя сетевые и другие устройства.
- automount : Автоматическое монтирование файловых систем
- timer : Cron как модуль systemd для запуска команд и служб в заданном формате даты / времени. Например, обновить прошивку или очистить сеанс, созданный веб-приложениями Python или PHP
- path : Специальный целевой модуль systemd, который устанавливает все модули пути. Например, systemd может выполнять определенные действия в зависимости от пути к файловой системе. Если / etc / foo / modifed предприняли какие-то действия..
- slice : Мы используем срез systemd для изоляции рабочих нагрузок. Они определяют иерархию, в которой размещаются области и услуги. Фактические процессы содержатся в объемах или услугах. Считайте это легким докером. Для каждого слайса могут быть установлены определенные ограничения ресурсов, такие как ограничение ЦП или дискового ввода-вывода, которые применяются ко всем процессам.
- scope : Единицы области видимости не конфигурируются через файлы конфигурации юнитов, а создаются только программно с использованием шинных интерфейсов systemd. Они названы аналогично именам файлов. Единица, имя которой заканчивается на «.scope», относится к единице области видимости. Подразделения областей видимости управляют набором системных процессов. В отличие от единиц обслуживания, единицы области видимости управляют процессами, созданными извне, и не разделяют процессы сами по себе. Основное назначение единиц области видимости — это группировка рабочих процессов системного сервиса для организации и управления ресурсами.
Мы можем перечислить все сервисные единицы следующим образом:
$ sudo systemctl —type=service
Хотите увидеть единицы типа монтирования? Попробуйте:
$ sudo systemctl —type=mount
Отобразить все блоки таймера systemd в вашем Linux:
$ sudo systemctl -t timer
Чтобы показать все установленные файлы модулей, используйте:
$ sudo systemctl list-unit-files
Linux просмотр статуса службы
Введите следующую команду, чтобы просмотреть все службы и состояние модулей в вашей системе Linux с момента загрузки:
$ sudo systemctl
Используйте команду grep command/egrep command чтобы отфильтровать требуемые единицы / службы
$ sudo systemctl | grep ssh
$ sudo systemctl | egrep ‘apache|nginx|lighttpd|php’
Как вывести список модулей, которые systemd в настоящее время имеет в памяти
Выполните следующую команду:
$ sudo systemctl list-units
$ sudo systemctl list-units | more
$ sudo systemctl list-units | grep sshd
$ sudo systemctl list-units —type service
$ sudo systemctl list-units —type timer
Список systemd/systemctl всех отказавших модулей units/services в Linux
$ sudo systemctl list-units —failed
$ sudo systemctl list-units —state failed
$ sudo systemctl list-units —state failed —type service
$ sudo systemctl list-units —state failed —type timer
Что делать, если такой сервис, как nginx, не запущен?
Включите службу systemd:
$ sudo systemctl enable nginx.service
Запустите службу nginx:
$ sudo systemctl start nginx.service
Мы можем остановить или перезапустить службу следующим образом:
$ sudo systemctl stop nginx.service
$ sudo systemctl restart nginx.service
Проверить, включена ли служба или нет, запустить:
$ sudo is-enabled nginx.service
Снова просмотреть статус:
$ sudo status nginx.service
Чтобы увидеть полные выходные данные для проблемы службы -full или -l :
$ sudo status nginx.service -l
$ sudo status openvpn.service —full
Мы может отлаживать и просматривать все сообщения журнала, относящиеся к службе, с помощью команды journalctl:
$ sudo journalctl UNIT=nginx.service
Как просмотреть источник файла службы / модуля systemd
Передайте параметр cat следующим образом:
$ sudo systemctl cat
$ sudo systemctl cat nginx.service
/lib/systemd/system/nginx.service
# Stop dance for nginx
# =======================
#
# ExecStop sends SIGSTOP (graceful stop) to the nginx process.
# If, after 5s (—retry QUIT/5) nginx is still running, systemd takes control
# and sends SIGTERM (fast shutdown) to the main process.
# After another 5s (TimeoutStopSec=5), and if nginx is alive, systemd sends
# SIGKILL to all the remaining processes in the process group (KillMode=mixed).
#
# nginx signals reference doc:
# http://nginx.org/en/docs/control.html
#
[Unit]
Description=A high performance web server and a reverse proxy server
Documentation=man:nginx(8)
After=network.target [Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t -q -g ‘daemon on; master_process on;’
ExecStart=/usr/sbin/nginx -g ‘daemon on; master_process on;’
ExecReload=/usr/sbin/nginx -g ‘daemon on; master_process on;’ -s reload
ExecStop=-/sbin/start-stop-daemon —quiet —stop —retry QUIT/5 —pidfile /run/nginx.pid
TimeoutStopSec=5
KillMode=mixed [Install]
WantedBy=multi-user.target
Вывод
Вы узнали о перечислении модулей systemd, включая службы Linux, с помощью команды systemctl. См. Документацию по systemctl или введите следующую команду man:
Источник