systemd:控制 *.service 文件中的执行时间

systemd:控制 *.service 文件中的执行时间

我已经设法让我的脚本在关闭或重新启动时运行,但是,我收到一个错误,我认为这是由于脚本运行得太晚造成的。 *.service 文件是:

[Unit]
Description=My special shutdown script

[Service]
Type=oneshot
RemainAfterExit=true
ExecStop=/home/PL/bin/umountb2.sh

[Install]
WantedBy=multi-user.target

我猜答案是before=orwants=字段。

我说存在问题的原因是 umountb2.sh 做了 2 件基本事情:它卸载文件系统(成功),然后调用cryptsetup luksClose.最后一次调用返回错误。即使我捕获其输出并将其重定向到 /dev/kmsg,我也没有看到任何消息,只看到命令echo发出的消息。这就是为什么我认为它在错误的时间被调用。

这是我在发生问题的地方运行的脚本的示例。

cryptsetup luksClose b258
if [ "$?" -ne 0 ]; then
   echo "you gotta problem pal!"

看,cryptsetup没有输出任何我能看到的东西(我是不是看错地方了?)所以我得到的唯一输出就是我自己做的。

编辑:实际上,我刚刚做了一个测试,umount这次我的脚本失败了。但我认为这归结于同一个问题:时机。

我运行的是 Ubuntu 22.04.2。

相关内容