我搜索了一些答案,但似乎没有什么可以澄清我的困惑。
我有一个 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
停止和禁用遵循相同的格式。