无法从服务编辑 crontab

无法从服务编辑 crontab

我想通过安排每日自动关闭sudo service autoshutdown start或通过 中止它sudo service autoshutdown stop

/etc/systemd/system/autoshutdown.service

[Unit]
Description=AutoShutdown
[Service]
User = root
Type = oneshot
ExecStart=/etc/systemd/system/autoshutdown.sh
ExecStop=/usr/bin/crontab -r
[Install]
WantedBy=multi-user.target

/etc/systemd/system/autoshutdown.sh

#!/bin/bash
echo "scheduling a shutdown 19:00..."
whoami
crontab -l | cat - /etc/systemd/system/autoshutdown.txt > crontab.txt && crontab crontab.txt
echo "crontab is now"
crontab -l

/etc/systemd/system/autoshutdown.txt

50 18 * * * /sbin/shutdown +10

一切都太棒了。所以starting service 运行正确,当statusing service 时,我看到

[省略] autoshutdown.sh[11178]:安排关闭 19:00...

[省略] autoshutdown.sh[11178]: root

[省略] autoshutdown.sh[11178]: 50 18 * * * /sbin/shutdown +10

所以一切看起来都很好。然而,后者sudo crontab -l返回一个空表。

我的 crontab 去“哪里”了?

可能[un]相关的问题:

  1. 无法以非 root 用户身份编辑 crontab
  2. 无法编辑 crontab

答案1

好的,对于所需的行为,最合适的选项是RemainAfterExit=yes(默认值:否)。

否则,一旦ExecStart结束,ExecStop立即执行。

来源:FreeDesktop Systemd 手册

相关内容