菜单

linux设置定时任务

duckflew
发布于 2022-02-04 / 324 阅读
0
0

linux设置定时任务

linux设置定时任务(实现自动刷新)

crontab [-u username]    //省略用户表表示操作当前用户的crontab
    -e      (编辑工作表)
    -l      (列出工作表里的命令)
    -r      (删除工作作)

我们用crontab -e进入当前用户的工作表编辑,是常见的vim界面。每行是一条命令。

crontab的命令构成为 时间+动作,其时间有分、时、日、月、周五种,操作符有

  • ***** 取值范围内的所有数字
  • / 每过多少个数字
  • - 从X到Z
  • **,**散列数字

实例

实例1:每1分钟执行一次myCommand

* * * * * myCommand

实例2:每小时的第3和第15分钟执行

3,15 * * * * myCommand

实例3:在上午8点到11点的第3和第15分钟执行

3,15 8-11 * * * myCommand

实例4:每隔两天的上午8点到11点的第3和第15分钟执行

3,15 8-11 */2  *  * myCommand

实例5:每周一上午8点到11点的第3和第15分钟执行

3,15 8-11 * * 1 myCommand

实例6:每晚的21:30重启smb

30 21 * * * /etc/init.d/smb restart

实例7:每月1、10、22日的4 : 45重启smb

45 4 1,10,22 * * /etc/init.d/smb restart

实例8:每周六、周日的1 : 10重启smb

10 1 * * 6,0 /etc/init.d/smb restart

实例9:每天18 : 00至23 : 00之间每隔30分钟重启smb

0,30 18-23 * * * /etc/init.d/smb restart

实例10:每星期六的晚上11 : 00 pm重启smb

0 23 * * 6 /etc/init.d/smb restart

实例11:每一小时重启smb

0 */1 * * * /etc/init.d/smb restart

实例12:晚上11点到早上7点之间,每隔一小时重启smb

0 23-7/1 * * * /etc/init.d/smb restart

通过定时任务 实现仓库自动刷新

刷新仓库的脚本如下

由于我是为了备份系统的数据,而系统的数据大多数为二进制数据所以直接删除掉整个本地git仓库然后强制推送即可

#!/bin/bash
cd /root/.halo
rm -rf .git
git init
git add .
git commit -m "auto commit by script"
git remote add haloconfig https://github.com/129duckflew/haloconfig.git
git push  haloconfig  master  --force

image-20220204022513189

* * * * *  /root/.halo/update.sh 

表示每分钟都刷新

这里我设置一个5小时刷新一次就行

* */5 * * *  /root/.halo/update.sh 

修改配置后重启服务

service crond restart

image-20220204022704067

查看日志文件

  1. linux
    看 /var/log/cron这个文件就可以,可以用tail -f /var/log/cron观察(不能用cat查看)

  2. unix
    在 /var/spool/cron/tmp文件中,有croutXXX001864的tmp文件,tail 这些文件就可以看到正在执行的任务了。

  3. mail任务
    在 /var/spool/mail/root 文件中,有crontab执行日志的记录,用tail -f /var/spool/mail/root 即可查看最近的crontab执行情况。


评论