Проверка работы сервиса linux

Как в 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 $ $OPTIONS
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

Читайте также:  Run ��� ��������� astra linux

Редактирование сервисов

Если мы хотим внести изменения в юнит-файл сервиса, который был установлен с последним, необходимо использовать drop-in файл или файл переопределения настроек. В противном случае, после обновления программы наши изменения могут быть удалены.

И так, мы для примера взяли юнит для bind. Чтобы создать для него drop-in файл, вводим:

systemctl edit named

И вносим, например, такие изменения:

* будет создан файл /etc/systemd/system/named.service.d/override.conf, который будет переопределять настройки основного юнит-файла. В данном примере, мы указываем на необходимость перезапуска сервиса при сбое.

Чтобы убедиться в использовании Drop-In файла смотрим статус сервиса:

Источник

Список служб Linux с помощью Systemctl

В Linux служба — это программа, работающая в фоновом режиме . Службы можно запускать по запросу или во время загрузки.

Если вы используете Linux в качестве основной операционной системы или платформы разработки, вы будете иметь дело с различными службами, такими как веб-сервер, ssh или cron . Знание того, как перечислить запущенные службы или проверить статус службы, важно при отладке системных проблем.

Большинство последних дистрибутивов Linux используют systemd в качестве системы инициализации и диспетчера служб по умолчанию.

Systemd — это набор инструментов для управления системами Linux. Он используется для загрузки машины, управления службами, автоматического монтирования файловых систем, регистрации событий, настройки имени хоста и других системных задач.

В этой статье объясняется, как составить список служб в Linux.

Список служб Linux

Systemd использует концепцию модулей, которыми могут быть службы, сокеты, точки монтирования, устройства и т. Д. Модули определяются с помощью текстовых файлов в формате ini . Эти файлы содержат информацию об устройстве, его настройках и командах для выполнения. Расширения файлов определяют тип файла модуля. Например, файлы системных сервисных модулей имеют расширение .service .

systemctl — это утилита командной строки, которая используется для управления systemd и службами. Он является частью экосистемы systemd и по умолчанию доступен во всех системах.

Чтобы получить список всех загруженных служебных единиц, введите:

Каждая строка вывода содержит следующие столбцы слева направо:

  • UNIT — Название сервисной единицы.
  • LOAD — Информация о том, загружен ли файл объекта в память.
  • ACTIVE — состояние активации файла модуля высокого уровня, которое может быть активным, перезагружающимся, неактивным, неудачным, активируемым, деактивируемым. Это обобщение столбца SUB .
  • SUB — состояние активации файла юнита низкого уровня. Значение этого поля зависит от типа объекта. Например, модуль типа service может находиться в одном из следующих состояний: неработающий, завершенный, сбойный, неактивный или работающий.
  • DESCRIPTION — Краткое описание файла объекта.

По умолчанию команда перечисляет только загруженные активные юниты. Чтобы увидеть загруженные, но неактивные модули, передайте параметр —all :

Если вы хотите увидеть все установленные файлы модулей, а не только загруженные, используйте:

Отображение статуса службы

Чтобы проверить статус службы, используйте команду systemctl status :

Где — это имя сервисной единицы, которую вы хотите проверить. Например, чтобы определить текущий статус службы nginx, вы должны запустить:

Команда напечатает следующую информацию:

  • Loaded — Loaded ли служебный модуль и полный путь к файлу модуля. Он также показывает, разрешен ли запуск устройства во время загрузки.
  • Active — активна и работает ли служба. Если ваш терминал поддерживает цвета, а служба активна и работает, точка ( ● ) и часть «активен (работает)» будут напечатаны зеленым цветом. Строка также показывает, как долго работает служба.
  • Docs — служебная документация.
  • Process — информация о процессах обслуживания.
  • Main PID — сервисный PID.
  • Tasks — количество задач, учитываемых для объекта, и лимит задач.
  • Memory — информация об используемой памяти.
  • CGroup — информация о связанных контрольных группах.
Читайте также:  Visual studio 2021 для windows 10

Если вы хотите только проверить статус службы, используйте команду systemctl is-active . Например, чтобы убедиться, что служба nginx запущена, вы должны запустить:

Команда покажет вам статус службы. Если служба активна, команда возвращает статус выхода 0, что может быть полезно при использовании команды внутри сценариев оболочки.

Выводы

Мы показали вам, как использовать команду systemctl для systemctl списка служб Linux и проверки их статуса.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии ниже.

Источник

Как просмотреть статус службы в 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», относится к единице области видимости. Подразделения областей видимости управляют набором системных процессов. В отличие от единиц обслуживания, единицы области видимости управляют процессами, созданными извне, и не разделяют процессы сами по себе. Основное назначение единиц области видимости — это группировка рабочих процессов системного сервиса для организации и управления ресурсами.
Читайте также:  Как узнать версию консоли windows

Мы можем перечислить все сервисные единицы следующим образом:
$ 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:

Источник

Оцените статью