将 sysV 初始化脚本转换为 systemd

将 sysV 初始化脚本转换为 systemd

我有一个运行良好的初始化脚本。在正常情况下,它将执行以下所有操作;

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

现在,既然这systemd是新常态,我想将其转化my-good-script.shSystemd 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

不,不支持自定义服务操作。相反,这些操作应作为外部脚本完成,只需一个/usr/bin/my-script-ctl接受必要子命令的普通脚本即可。


如果您自己编写了守护进程/服务,那么某些事情(例如“当前状态”)可以使用 systemd 的内置函数来完成。例如,sd_notify()C 函数将传递一行简短的内容,该行将显示在systemctl status 你的服务(实例: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)."

相关内容