🐧 Как добавить пользовательский скрипт в systemd в CentOS / RHEL – Information Security Squad
🐧  Как добавить пользовательский скрипт в systemd в CentOS / RHEL

Средство systemd заменяет более старые скрипты инициализации System-V предыдущих выпусков.

Systemd — это управляемое событиями сущность, которое позволяет независимым подсистемам запускаться, управляться или останавливаться параллельно.

В этой статье мы объясним, как добавить собственный скрипт в systemd.

1. Написание и отладка пользовательского скрипта

Обычно скрипт systemd пишется как скрипт шелла.

Начните с написания собственного скрипта, используя обычные опции.

Мы назовем наш скрипт my-custom-script.sh и это будет просто вывод надписи:

#!/bin/sh
echo I am a custom script

2. Скрипт должен быть исполняемым

Давайте сделаем скрипт исполняемым:

# chmod 0755 my-custom-script.sh

3. Опишите пользовательский скрипт для systemd

Скрипт готов к описанию в системе systemd.

Для этого нужен файл [name] .service.

Синтаксис использует формат INI, обычно используемый для файлов конфигурации.

Продолжая наш пример, нам нужен файл my-custom-script.service.

Исполняемый файл будет запускаться ровно один раз при каждом запуске службы.

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

# This is my-custom-script.service, which describes the my-custom-script.sh file
[Unit]
Description=This is executed on shutdown or reboot
DefaultDependencies=no
Wants=network-pre.target                                                                   # (if network is required before running the script)
Before=network-pre.target shutdown.target reboot.target halt.target                        # Defines the order in which units are stoped. #(REQUIRED)

[Service]
Type=oneshot                                                                               # enables specifying multiple custom commands that are then executed sequentially. (REQUIRED)
RemainAfterExit=true                                                                       # required by the oneshot setting (REQUIRED)
Environment=ONE='one' "TWO='2"                                                             # you can set some environment variables, that may be necessary to pass as arguments
ExecStart=/bin/true                                                                        # because is a shutdown script nothing is done when this service is started
ExecStop=/bin/bash /usr/local/bin/my-custom-script.sh ${ONE} ${TWO}                        # < --*********** change to the script full path ************ (REQUIRED)
TimeoutStopSec=1min 35s                                                                    # Configures the time to wait for stop.

[Install]
WantedBy=multi-user.target                                                                 # When this unit is enabled, the units listed in WantedBy gain a Want dependency on the unit. (REQUIRED)

4. Поместите файл сервиса в каталог

Давайте поместим пользовательский скрипт в каталог сервисов, т.е.  в /etc/systemd/system/:

# cp my-custom-script.sh /etc/systemd/system/

5. Включите скрипт для работы при ребуте

Подобно chkconfig из более ранних версий, служба должна быть включена.

Поскольку была добавлена новая служба, уведомите демон systemd о необходимости перенастройки:

# systemctl enable my-custom-script.service
# systemctl daemon-reload

 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *