我有一个运行良好的初始化脚本。在正常情况下,它将执行以下所有操作;
/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
不,不支持自定义服务操作。相反,这些操作应作为外部脚本完成,只需一个/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)."