欢迎访问我的网站,希望内容对您有用,感兴趣的可以加入我们的社群。

crontab定时任务

Linux 迷途小书童 4年前 (2020-11-21) 4441次浏览 0个评论

软硬件环境

  • ubuntu 20.04

视频看这里

此处是 youtube 的播放链接,需要科学上网。喜欢我的视频,请记得订阅我的频道,打开旁边的小铃铛,点赞并分享,感谢您的支持。

前言

crontablinux 系统下自带的定时任务工具。通过 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

上图是 crontab 的文件格式说明

  • 第1列分钟0~59
  • 第2列小时0~23
  • 第3列日1~31
  • 第4列月1~12
  • 第5列星期0~7(0和7表示星期天)
  • 第6列要运行的命令

第一次操作 crontab 时,系统会要求选择编辑器

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 命令的格式,非常实用。

喜欢 (0)

您必须 登录 才能发表评论!