软硬件环境
- ubuntu 20.04
视频看这里
此处是 youtube
的播放链接,需要科学上网。喜欢我的视频,请记得订阅我的频道,打开旁边的小铃铛,点赞并分享,感谢您的支持。
前言
crontab
是 linux
系统下自带的定时任务工具。通过 crontab
命令,我们可以在固定的间隔时间执行指定的系统指令或 shell
脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常适合周期性任务如数据备份等工作。
命令格式
crontab [-u user] file crontab [-u user] [ -e | -l | -r ]
其中
- -u user:用来设定某个用户的
crontab
服务 - file:命令文件的名字,表示将
file
作为crontab
的任务列表文件并载入crontab
- -e:编辑某个用户的
crontab
文件内容。如果不指定用户,则表示编辑当前用户的crontab
文件 - -l:显示某个用户的
crontab
文件内容,如果不指定用户,则表示显示当前用户的crontab
文件内容 - -r:从
/var/spool/cron
目录中删除某个用户的crontab
文件,如果不指定用户,则默认删除当前用户的crontab
文件
crontab文件格式
上图是 crontab
的文件格式说明
- 第1列分钟0~59
- 第2列小时0~23
- 第3列日1~31
- 第4列月1~12
- 第5列星期0~7(0和7表示星期天)
- 第6列要运行的命令
第一次操作 crontab
时,系统会要求选择编辑器
如果后续想要修改编辑器,可以使用命令 select-editor
一些实例
每小时的第3和第15分钟执行
3,15 * * * * command
在上午8点到11点的第3和第15分钟执行
3,15 8-11 * * * command
每隔两天的上午8点到11点的第3和第15分钟执行
3,15 8-11 */2 * * command
每周一上午8点到11点的第3和第15分钟执行
3,15 8-11 * * 1 command
每晚的21:30重启samba
30 21 * * * /etc/init.d/smb restart
每月1、10、22日的4:45重启samba
45 4 1,10,22 * * /etc/init.d/smb restart
每周六、周日的1:10重启 samba
10 1 * * 6,0 /etc/init.d/smb restart
每天18:00至23:00之间每隔30分钟重启 samba
0,30 18-23 * * * /etc/init.d/smb restart
每星期六的晚上23:00重启 samba
0 23 * * 6 /etc/init.d/smb restart
每一小时重启 samba
* */1 * * * /etc/init.d/smb restart
晚上11点到早上7点之间,每隔一小时重启 samba
0 23-7 * * * /etc/init.d/smb restart
注意事项
有时我们创建了一个 crontab
,但是这个任务却无法自动执行,而手动执行这个任务却没有问题,这种情况一般是由于在 crontab
文件中没有配置环境变量引起的。尽量在脚本中涉及文件路径时写全局路径,使用其它环境变量时,可以通过 source
命令引入环境变量。
如果对 crontab
格式不是很熟悉的话,这里提供一个在线的工具,https://crontab-generator.org/, 它可以帮你自动生成 crontab
命令的格式,非常实用。