Linux定时任务

您所在的位置:网站首页 英文缩写星期几 Linux定时任务

Linux定时任务

2023-06-27 01:26| 来源: 网络整理| 查看: 265

linux内置了cron进程,cron搭配shell脚本,就可以完成特定的需求,有定时任务的效果。

crontab指令即cron table的简写,相关的配置文件目录如下:

/var/spool/cron/ 目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名/etc/crontab 这个文件负责调度各种管理和维护任务。/etc/cron.d/ 这个目录用来存放任何要执行的crontab文件或脚本。还可以把脚本放在/etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly、/etc/cron.monthly目录中,让它每小时/天/星期、月执行一次。 crontab [-u username]    //省略用户表表示操作当前用户的crontab -e (编辑工作表) -l (列出工作表里的命令) -r (删除工作作) Usage: crontab [options] file crontab [options] crontab -n [hostname] Options: -u define user -e edit user's crontab -l list user's crontab -r delete user's crontab -i prompt before deleting -n set host in cluster to run users' crontabs -c get host in cluster to run users' crontabs -s selinux context -x enable debugging 1、安装 yum install cronie

service crond start //启动服务 service crond restart //重启服务 service crond stop //关闭服务 service crond reload //重新加载服务 service crond status //查看状态

cron进程是linux中的守护进程,在系统后台运行2.linux的crontab服务默认每隔一分钟去读取一次/var/spool/cron,/etc/crontab,/etc/cron.d下面所有的内容3.编辑crontab文件后系统会自动存放在/var/spool/cron/目录中。

1、指令 查看当前用户的定时任务 crontab -l 查看指令用户的定时任务 crontab -l -u root 查看系统所有用户的 cat /etc/passwd |cut -f 1 -d : |xargs -I {} crontab -l -u {} 删除当前的定时任务 crontab -r 新增或编辑定时任务 crontab -e 查看支持的环境变量 cat /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root #发送邮件到账号 2、cron的语法 * * * * * - - - - - | | | | | | | | | +----- 星期中星期几 (0 - 6) (星期天 为0) | | | +---------- 月份 (1 - 12) | | +--------------- 一个月中的第几天 (1 - 31) | +-------------------- 小时 (0 - 23) +------------------------- 分钟 (0 - 59)

在这里插入图片描述

星号(*):通配符匹配,代表所有可能的值。例如:在小时字段中,一个星号等同于每个小时;在月份字段中,一个星号则等同于每月逗号(,):在一个字段上指定多个值。例如:“1,2,5,7,8,9”中杠(-):指定一个值得范围。例如:“2-6”表示“2,3,4,5,6”正斜线(/):指定时间的间隔频率。例如:“0-23/2”表示每两小时执行一次

crontab的特殊字符:

linux中提供了8个特殊字符串用来替代crontab命令的前五个字段,这样不但可以节省时间,还可以提高可读性。

特殊字符 含义 @reboot 在每次启动时运行一次 @yearly 每年运行一次,例如:“0 0 1 1 *” @annually 与@yearly用法一致 @monthly 每月运行一次,例如:“0 0 1 * *” @weekly 每周运行一次,例如:“0 0 * * 0” @daily 每天运行一次,例如:“0 0 * * *” @midnight 与@daily用法一致 @hourly 每小时运行一次,例如:“0 * * * *”

实例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 3、crontab发送邮件

发送到外部邮箱,以qq邮箱为例

在cat /etc/crontab将MAILTO=root 修改为你需要的外部邮箱账号

且在crontab -e 的第一行添加MAILTO=外部邮箱账号

并且配合linux发送邮件文章使用

4、任务日志查询

任务是否执行查询 在/var/log/目录下有cron开头的文件, 里面包含了crontab的执行记录

Feb 19 10:19:01 zdc CROND[8314]: (root) CMD (/root/date.sh) Feb 19 10:20:01 zdc CROND[8390]: (root) CMD (/root/date.sh) Feb 19 10:21:01 zdc CROND[8440]: (root) CMD (/root/date.sh) Feb 19 10:22:01 zdc CROND[8487]: (root) CMD (/root/date.sh) Feb 19 10:23:01 zdc CROND[8544]: (root) CMD (/root/date.sh)

荐将任务写成脚本, 在其中添加执行成功失败之类的输出逻辑,自定义输出到指定文件中 如

date >> /root/date1 echo "成功" >> /root/date1 1 2

任务是否出错判断 当任务执行过程中报错后,会给当前用户发送邮件,默认情况下在/var/spool/mail 中的对应用户文件下

您在 /var/spool/mail/root 中有新邮件 ... X-Cron-Env: X-Cron-Env: X-Cron-Env: X-Cron-Env: X-Cron-Env: X-Cron-Env: X-Cron-Env: X-Cron-Env: Message-Id: Date: Fri, 19 Feb 2021 10:31:02 +0800 (CST) /root/date.sh:行3: success: 未找到命令

https://www.cnblogs.com/My-IronMan/p/15703884.html



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3