与使用 systemd 在关机/重启时运行脚本类似但不完全相同:
我想systemd
在系统关闭(关闭或重新启动,也可能出现恐慌)以及系统启动时运行自定义进程。这两个动作都应该尽早运行。
显然Type
服务将是 a oneshot
,但我不确定其余的(Wants
、Before
、After
、WantedBy
等)。
由于我的流程需要日记,我添加了(除其他外):
[Unit]
DefaultDependencies=no
Wants=syslog.target
After=local-fs.target exit.target
Before=multi-user-target
[Service]
Type=oneshot
RemainAfterExit=no
[Install]
WantedBy=multi-user.target
启用该服务后,我的程序在本地文件系统安装后启动(通过),但在创建临时文件之前ExecStart=
立即再次启动(通过)。ExecStop=
重新启动时,它根本没有启动。
经过多次迭代,我发现这个解决方案涉及两个单元;一个用于启动,另一个用于关闭:
在本地文件系统安装后不久(根据要求)记录启动。
在终止前几个服务后记录停止消息(我猜是与它们同时运行)。
在
TimeoutSec=5
那里,只是为了确保挂起的进程不会阻止启动或停止,而且很可能对logger
.