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