在 arch 上每 5 分钟运行一次 cron 作业

在 arch 上每 5 分钟运行一次 cron 作业

我搜索了一些答案,但似乎没有什么可以澄清我的困惑。

我有一个 cron 作业,我想每 5 分钟运行一次:

*/5 * * * * cd /mnt/internal-storage/coindata && shell/command coins update

我是否将其放在/etc/cron.daily文件夹或创建一个/etc/cron. 分钟

另外我在这个文件夹中创建了什么类型的文件?

答案1

最好的解决方案可能是在 crontab 中添加一行。访问 crontab 文件可能因 cron 的实现而异,因此我在官方 Arch 存储库中提供了两个 cron 实现的命令。如果您想要一个不需要特定 cron 实现的解决方案,我已经写过另一个答案而是使用 systemd/Timers 。

crontab -e或其变体使用 EDITOR 环境变量(默认为 vi)。如果您想使用不同的编辑器,请将其导出到 EDITOR 变量,如下所示:

export EDITOR=vim

其中 vim 被替换为您选择的编辑器。


使用 cronie 编辑 crontab:

crontab -e

使用 fcron 编辑 crontab:

fcrontab -e

将 cron 命令添加到文件中并保存:

*/5 * * * * cd /mnt/internal-storage/coindata && shell/command coins update

该文件中行的格式为

minute hour day_of_month month day_of_week command

如果 cron 没有运行,启动它的守护进程。

对于亲信:systemctl start cronie.service

对于 fcron:systemctl start fcron.service

如果您希望 crontab 中的命令在重新启动后继续运行,请确保 cron 守护程序已启用:

systemctl enable cronie.service或者systemctl enable fcron.service

答案2

Arch Linux 内置的计时系统是系统/定时器。 Arch Wiki 列出了几个使用它作为 cron 替代品的优点和缺点。我想添加另一个优点:不需要安装 cron 实现。

总的来说,为了简单起见,我建议使用 cronjob,但这是一个(理论上)适用于任何 Arch 安装的解决方案; cron 实施无关。

计时器中的实现(将 TIMERNAME 替换为计时器的名称):

计时器文件位置:/etc/systemd/system/TIMERNAME.timer


[Unit]
Description=Run TIMERNAME every five minutes

[Timer]
OnCalendar=*:0/15
Persistent=true     

[Install]
WantedBy=timers.target

定时器服务文件位置:/etc/systemd/system/TIMERNAME.service


[Unit]
Description=Run some commands - for use with TIMERNAME.service

[Service]
ExecStart=cd /mnt/internal-storage/coindata && shell/command coins update
# Alternatively could be used to run a script with the above commands in it.
# If your script is located at /usr/local/bin, change the above command to:
#    ExecStart:/usr/local/bin/SCRIPTNAME

[Install]
WantedBy=multi-user.target

首先,运行:

systemctl start TIMERNAME.timer

启用(以便它在将来重新启动后继续工作):

systemctl enable TIMERNAME.timer

停止和禁用遵循相同的格式。

相关内容