欢迎访问我的网站,希望内容对您有用,感兴趣的可以加入免费知识星球。

crontab定时任务

Linux 迷途小书童 3年前 (2020-11-21) 2981次浏览 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)

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

Ads Blocker Image Powered by Code Help Pro

Ads Blocker Detected!!!

请关闭 Adblock 等类似浏览器插件,然后刷新页面访问,感谢您的支持!

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.