cron是一个用于在Unix操作系统中自动执行任务的工具

首先

cron是一个守护程序,它可以设置一个定时器,在固定的时间、日期和星期几等条件下执行脚本。它经常被用于定期获取日志的场景。守护程序的名字是cron,但命令是crontab。

环境

Ubuntu 20.4 can be paraphrased in natively in Chinese as “Ubuntu 20.4 可以被转述为”.

命令示例

检查cron的守护进程是否正在运行。在Ubuntu默认情况下已启动。

$service --status-all | grep cron

这是一个显示当前设置的命令。

$crontab -l

请谨慎执行以下命令,该命令用于删除设定的内容,请务必避免错误操作。

$crontab -r

这是一个用于编辑设定内容的命令。在退出编辑器后,会进行语法检查。如果语法检查没有问题,则会显示”installing new crontab”。 如果编辑器是nano,可以更改为vi。

$crontab -e

设定示例

执行crontab -e命令后,顶部的描述以英语书写。按照示例设置,每天将在5点0分执行命令。

设置文件格式为“* * * * * 命令”。星号部分依次表示“分钟、小时、日期、月份、星期”。

For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/

这是一个每月20日23:59执行的示例。时间以24小时制表示。如果设置为12,表示中午12点。

59 23 20 * * ./home/hoge.sh

每周五下午5点执行的一个例子。

00 17 * * 5 ./home/hoge.sh

这是一个每5分钟执行一次的示例。/ 斜线后面的是多少分钟间隔?

*/5 * * * * ./home/hoge.sh

这是每天11点执行的示例。

0 11 * * * ./home/hoge.sh

如果你想执行Ruby脚本,即使进行了这样的设置,它也不会执行。

1 12 * * * ruby $HOME/hoge.rb 

如果要运行Ruby脚本,则需要指定Ruby的完整路径。可以使用which命令来查找Ruby的路径。

1 11 * * * ruby /usr/local/rbenv/shims/ruby $HOME/hoge.rb

关于日志

当运行cron时,cron.log文件的大小会不断增长。通过这种设置,日志将在每个月的第一天清空。

* * 1 * * sudo cp /dev/null /var/log/cron.log

这是一个在周一至周五的12点1分执行Ruby脚本的示例。如果出现错误,将输出日志。

1 12 * * 1-5 cd $HOME && /usr/local/rbenv/shims/ruby hoge.rb >> ./log_hoge.log