1

У меня есть скрипт инициализации, который отлично работает. В хороший день будет сделано все следующее;

/etc/init.d/my-good-script.sh {start|stop|status|info|check|config|timetravel}

Теперь, когда systemd является новой нормой, я хочу перевести my-good-script.sh в Systemd Service File

Я нашел онлайн пример, подобный следующему;

[Unit]
Description=Postfix Mail Transport Agent
After=syslog.target network.target
Conflicts=sendmail.service exim.service

[Service]
Type=forking
PIDFile=/var/spool/postfix/pid/master.pid
EnvironmentFile=-/etc/sysconfig/network
ExecStartPre=-/usr/libexec/postfix/aliasesdb
ExecStartPre=-/usr/libexec/postfix/chroot-update
ExecStart=/usr/sbin/postfix start
ExecReload=/usr/sbin/postfix reload
ExecStop=/usr/sbin/postfix stop

[Install]
WantedBy=multi-user.target

Следил за этим и умел делать;

systemctl {start|stop|status} my-good-script

Но я не очень уверен, как это сделать;

systemctl {info|check|config|timetravel} my-good-script

Это вообще возможно или как обойти?

1 ответ1

1

Нет, пользовательские сервисные действия не поддерживаются. Вместо этого они должны быть выполнены как внешний скрипт, просто старый /usr/bin/my-script-ctl который принимает необходимые подкоманды.


Если вы написали сам демон / сервис, то некоторые вещи, например, "текущий статус", могут быть выполнены с помощью встроенных функций systemd. Например, sd_notify() C передает короткую строку, которая будет отображаться в статусе systemctl yourservice (примеры в реальном времени: systemd-timesyncd, systemd-udevd, org.cups.cupsd).

● systemd-timesyncd.service - Network Time Synchronization
   Loaded: loaded (...)
   Active: active (running) since ...
   Status: "Synchronized to time server 81.29.25.50:123 (2.arch.pool.ntp.org)."

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .