如何使用systemd替换要每五分钟运行一次的cron作业?

紫罗兰色

我们有一个嵌入式目标环境(与主机构建环境分开)在其中systemd运行,但没有在其中运行cron

我们还有一个脚本,在大多数系统下,我只需创建一个cron条目即可每五分钟运行一次。

现在,我知道了如何在该目录创建服务systemd但是此脚本是一个单步操作,完成后将退出。我想做的是让它在启动时立即运行(syslog.target当然在之后),然后每五分钟运行一次。

阅读了systemd计时器后,我创建了以下服务文件/lib/systemd/system/xyzzy.service

[Unit]
Description=XYZZY
After=syslog.target

[Service]
Type=simple
ExecStart=/usr/bin/xyzzy.dash

并等效/lib/systemd/system/xyzzy.timer

[Unit]
Description=XYZZY scheduler

[Timer]
OnBootSec=0min
OnUnitActiveSec=5min

[Install]
WantedBy=multi-user.target

不幸的是,启动目标时,计时器似乎未启动,因为的输出systemctl list-timers --all不包含它。手动启动计时器单元似乎可以正常工作,但这应该在用户干预下自动运行。

我以为WantedBy可以确保计时器单元已安装并正在运行,因此可以定期启动该服务。但是,我注意到multi-user.target.wants目录实际上没有计时器的符号链接。

这是如何完成的systemd

马克·斯托斯伯格

计时器直到您真正启用它后才处于活动状态:

systemctl enable xyzzy.timer

如果要在重新启动之前查看其工作方式,也可以启动它:

systemctl start xyzzy.timer

在一个单独的目标环境中执行此操作时,您不一定能够在引导时轻松运行任意命令(但大概控制文件系统内容),您可以简单地在开发区域中创建相同的符号链接。该enable命令将执行的操作。

例如(假设SYSROOT标识目标文件系统的根目录):

ln -s ${SYSROOT}/lib/systemd/system/xyzzy.timer
      ${SYSROOT}/lib/systemd/system/multi-user.target.wants/xyzzy.timer 

这将有效地将计时器单元置于的启用状态multi-user.target,因此systemd将从该目标启动它。


同样,通常,您的自定义文件将存储在中/etc/systemd/system/等效lib目录旨在承载systemd由软件包或操作系统安装的文件。

如果重要的是您的cron作业必须每5分钟准确运行一次,则应检查准确性,因为systemd的单调计时器会随着时间推移而滑动

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

让cron作业每30分钟运行一次-使用cron.hourly?

我如何每5分钟设置一次cron作业,而不使用可被5整除的分钟?

两小时之间每10分钟运行一次Cron作业

我如何每30分钟执行一次cron作业?

如何每1小时10分钟执行一次cron作业

您如何每5分钟执行一次cron作业?

如何在Logstash 5.0中每五分钟运行一次计划?

Quartz Scheduler for Java-如何每5分钟运行一次作业

如何每8小时1分钟运行一次CRON

每5分钟在拱门上执行一次cron作业

在两次之间每5分钟执行一次cron作业

配置在Hangfire中每15分钟执行一次的cron作业

每5分钟执行一次cron作业

每2小时执行一次cron作业,持续30分钟

Cron字符串每5分钟运行一次?

Cron每1或2分钟就会运行一次

30分钟之前每5分钟执行一次Cron工作

Cronjob每30分钟运行一次

每5分钟运行一次.sh

使用延迟的作业每5分钟发送一次邮件

如何在每5分钟运行一次的SQL Server代理作业中仅更新一次列

如何每15分钟运行一次android函数,尤其是每天15分钟?

如何停止正在运行的每10分钟运行一次的.bat文件

使用H / 1每隔一分钟运行一次Jenkins作业

在onCreate Firestore事件发生后每30分钟执行一次Cron作业

如何安排本地Azure DevOps构建每5分钟运行一次?

气流:如何确保DAG每5分钟运行一次?

节点JS:如何每30分钟运行一次任务,包括现在

如何使烧瓶应用程序每5分钟运行一次?