Команда systemctl

Опубликовано admin - ср, 05/03/2023 - 11:42

Команда Linux systemctl управляет конфигурациями системы и служб, позволяя администраторам управлять ОС и контролировать состояние служб.

Примеры использования команды Linux systemctl

Содержание

Синтаксис

systemctl [опции] [команда]

Команды управления службами

status [PATTERN...|PID...]
Показать статус выполнения одной или нескольких служб
start UNIT...
Запустить (активировать) одну или несколько служб
stop UNIT...
Остановить (деактивировать) одну или несколько служб
restart UNIT...
Запустить (перезапустить) одну или несколько служб
reload UNIT...
Перезагрузить одну или несколько служб
enable [UNIT...|PATH...]
Включить одну или несколько служб
disable UNIT...
Отключить одну или несколько служб
list-units [PATTERN...]
Список служб, находящихся в настоящее время в памяти
list-automounts [PATTERN...]
Список служб автомонтирования, находящихся в настоящее время в памяти и спящем режиме                               

Команд и опций очень много и с их полным списком можно ознакомиться в Справке:

$ systemctl --help 

Использование команды systemctl в Linux

Как работает systemctl

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

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

Запуск служб

Допустим, ваш сервер работает под управлением: nginx, php-fpm, mysql.

Для запуска служб утилита systemctl используется с командой start. Запустим mysql, php-fpm, nginx:

oleg@mobile:~:$ sudo systemctl start mysql.service php-fpm.service nginx.service
oleg@mobile:~:$

Проверка статуса

Для проверки статус службы в системе используется команда status. Сейчас проверим работу запущенных сервисов:

oleg@mobile:~:$ sudo systemctl status mysql.service
● mariadb.service - MariaDB 10.11.2 database server
     Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; preset: disabled)
     Active: active (running) since Wed 2023-05-03 10:43:45 EEST; 2min 48s ago
       Docs: man:mariadbd(8)
             https://mariadb.com/kb/en/library/systemd/
    Process: 117296 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
    Process: 117302 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= ||   VAR=`cd /usr/bin/..; /usr/bin/galera_recover>
    Process: 117381 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
   Main PID: 117330 (mariadbd)
     Status: "Taking your SQL requests now..."
      Tasks: 8 (limit: 2157)
     Memory: 140.9M
        CPU: 630ms
     CGroup: /system.slice/mariadb.service
             └─117330 /usr/bin/mariadbd

мая 03 10:43:42 mobile mariadbd[117330]: 2023-05-03 10:43:42 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically wri>
мая 03 10:43:42 mobile mariadbd[117330]: 2023-05-03 10:43:42 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB.
мая 03 10:43:42 mobile mariadbd[117330]: 2023-05-03 10:43:42 0 [Note] InnoDB: log sequence number 4105922644; transaction id 1078080
мая 03 10:43:42 mobile mariadbd[117330]: 2023-05-03 10:43:42 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
мая 03 10:43:43 mobile mariadbd[117330]: 2023-05-03 10:43:43 0 [Note] Server socket created on IP: '0.0.0.0'.
мая 03 10:43:43 mobile mariadbd[117330]: 2023-05-03 10:43:43 0 [Note] Server socket created on IP: '::'.
мая 03 10:43:45 mobile mariadbd[117330]: 2023-05-03 10:43:45 0 [Note] /usr/bin/mariadbd: ready for connections.
мая 03 10:43:45 mobile mariadbd[117330]: Version: '10.11.2-MariaDB'  socket: '/run/mysqld/mysqld.sock'  port: 3306  Arch Linux
мая 03 10:43:45 mobile systemd[1]: Started MariaDB 10.11.2 database server.
мая 03 10:43:47 mobile mariadbd[117330]: 2023-05-03 10:43:47 0 [Note] InnoDB: Buffer pool(s) load completed at 230503 10:43:47
lines 1-26/26 (END)
oleg@mobile:~:$ sudo systemctl status nginx.service
● nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: disabled)
     Active: active (running) since Wed 2023-05-03 10:43:39 EEST; 4min 30s ago
    Process: 117298 ExecStart=/usr/bin/nginx -g pid /run/nginx.pid; error_log stderr; (code=exited, status=0/SUCCESS)
   Main PID: 117299 (nginx)
      Tasks: 3 (limit: 2157)
     Memory: 3.7M
        CPU: 52ms
     CGroup: /system.slice/nginx.service
             ├─117299 "nginx: master process /usr/bin/nginx -g pid /run/nginx.pid; error_log stderr;"
             ├─117300 "nginx: worker process"
             └─117301 "nginx: worker process"

мая 03 10:43:39 mobile systemd[1]: Starting A high performance web server and a reverse proxy server...
мая 03 10:43:39 mobile systemd[1]: Started A high performance web server and a reverse proxy server.
oleg@mobile:~:$ 
oleg@mobile:~:$ sudo systemctl status php-fpm.service
● php-fpm.service - The PHP FastCGI Process Manager
     Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; preset: disabled)
     Active: active (running) since Wed 2023-05-03 10:43:39 EEST; 4min 58s ago
   Main PID: 117297 (php-fpm)
     Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec"
      Tasks: 3 (limit: 2157)
     Memory: 12.0M
        CPU: 130ms
     CGroup: /system.slice/php-fpm.service
             ├─117297 "php-fpm: master process (/etc/php/php-fpm.conf)"
             ├─117308 "php-fpm: pool www"
             └─117309 "php-fpm: pool www"

мая 03 10:43:39 mobile systemd[1]: Starting The PHP FastCGI Process Manager...
мая 03 10:43:39 mobile php-fpm[117297]: [NOTICE] fpm is running, pid 117297
мая 03 10:43:39 mobile php-fpm[117297]: [NOTICE] ready to handle connections
мая 03 10:43:39 mobile systemd[1]: Started The PHP FastCGI Process Manager.
мая 03 10:43:39 mobile php-fpm[117297]: [NOTICE] systemd monitor interval set to 10000ms
oleg@mobile:~:$ 

Полученного отчёта вполне достаточно для проверки корректности работы служб и устранения возможных проблем. 

Перезапуск

Перезапуск службы используется при внесении каких-либо изменений в конфигурацию сервера. Для перезапуска используется команда restart:

oleg@mobile:~:$ sudo systemctl restart mysql.service
oleg@mobile:~:$ 

Перезагрузка

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

oleg@mobile:~:$ sudo systemctl reload nginx.service
oleg@mobile:~:$ 

А здесь, например, команда reload не работает:

oleg@mobile:~:$ sudo systemctl reload mysql.service
Failed to reload mysql.service: Job type reload is not applicable for unit mariadb.service.
oleg@mobile:~:$ 

Включение в автозагрузку

Для включения сервиса в автозагрузку используется команда enable. При этом systemd создаст символьную ссылку:

oleg@mobile:~:$ sudo systemctl enable mysql.service
Created symlink /etc/systemd/system/multi-user.target.wants/mariadb.service → /usr/lib/systemd/system/mariadb.service.
oleg@mobile:~:$ 

Отключение из автозагрузки

Для отключения службы из автозапуска используется команда disable. Символьная ссылка при этом будет удалена:

oleg@mobile:~:$ sudo systemctl disable mysql.service
Removed "/etc/systemd/system/multi-user.target.wants/mariadb.service".
oleg@mobile:~:$ 

Остановка

Для остановки одной или нескольких служб используется команда stop. В качестве примера остановим запущенный сервер:

oleg@mobile:~:$ sudo systemctl stop mysql.service nginx.service php-fpm.service
oleg@mobile:~:$ 

Заключение

В статье были приведены основные принципы работы в Linux с командой systemctl. Любой начинающий администратор своего сервера прочитав её, сможет включать, выключать, перезапускать службы, добавлять их в автозагрузку.

Поделиться с друзьями