如何像 crontab 一样定期执行脚本但不使用 crontab?
请注意,执行的脚本不应与另一个脚本一起触发并使用“睡眠”命令对其进行调度,我希望它具有与 crontab 相同的功能,但它不应出现在 crontab 列表中,并且不应在终端或会话结束时停止,
crontab 完全正确,但没有 croning 它。
如何像 crontab 一样定期执行脚本但不使用 crontab?
请注意,执行的脚本不应与另一个脚本一起触发并使用“睡眠”命令对其进行调度,我希望它具有与 crontab 相同的功能,但它不应出现在 crontab 列表中,并且不应在终端或会话结束时停止,
crontab 完全正确,但没有 croning 它。
现代的选择是使用
systemd
定时器单元。这需要创建一个systemd
定义您要定期运行的作业的systemd.timer
单元,以及一个定义作业调度的单元。假设您想以普通用户身份运行作业,请将这些文件放入
$HOME/.config/systemd/user
:我的工作服务
我的工作计时器
然后启用新创建的单元,并启动计时器:
要验证是否设置了计时器:
journalctl -xe
应该显示正在运行的作业的日志条目。man systemd.timer
有关配置计时器行为的许多选项(包括随机启动、唤醒计算机、停机时间的持久性、计时器准确性等),请参阅参考资料,并了解有关一般单位man systemd.unit
的优秀文档。systemd
systemd
您可以运行一个脚本
at
并让它重新安排自己作为最终指令。例如像这样:要停止作业,请将其从
at
队列中移除:或者简单地删除文件
my.job
,以便下一次执行cat "$HOME/my.job"
将出错,因此at
不会被调用并且不会发生重新调度。