linux定时任务(crontab)

4 篇文章 0 订阅
3 篇文章 2 订阅

linux定时任务(crontab)


创建时间: 2021年2月19日09:41:41
最后修改时间: 2021年2月23日10:49:13


简介

我们可能会对linux进行简单的监控或者定期执行一些操作,因此会用到linux自带的定时任务功能.

语法

man
Usage:
 crontab [options] file
 crontab [options]
 crontab -n [hostname]

Options:
 -u <user>  define user
 -e         edit user's crontab
 -l         list user's crontab
 -r         delete user's crontab
 -i         prompt before deleting
 -n <host>  set host in cluster to run users' crontabs
 -c         get host in cluster to run users' crontabs
 -s         selinux context
 -x <mask>  enable debugging
1. 查看定时任务
1)查看当前用户的
crontab -l 
2)查看指定用户的
crontab -l  -u zzz       # zzz为系统存在的一个用户

查看指定用户(zzz)正在执行的任务 ,只需要添加-u参数即可,其他命令也同理

3)查看系统所有用户的
cat /etc/passwd |cut -f 1 -d : |xargs -I {} crontab -l -u {}
2. 删除当前的定时任务
crontab -r 
3.新增或编辑定时任务
crontab -e

进入编辑模式, 按照指定任务命令格式编辑命令, 格式参照下面的任务命令格式

4.查看支持的环境变量
cat /etc/crontab

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root      #发送邮件到账号

任务命令格式

任务命令分为两个部分: 第一部分是cron表达是, 后面跟着sh命令

例子

* * * * *  /root/date.sh   # 每分钟执行一次date.sh
0 * * * * echo '-------------' >> /root/date.txt   # 每小时0分的时候向date.txt文件中加入一句话
* 1 * * 0 rm -rf /root/date1   #每个星期的星期天的1点左右删除date1文件
cron表达式的语法规则
*    *    *    *    *
-    -    -    -    -
|    |    |    |    |
|    |    |    |    +----- 星期中星期几 (0 - 6) (星期天 为0)
|    |    |    +---------- 月份 (1 - 12) 
|    |    +--------------- 一个月中的第几天 (1 - 31)
|    +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59)
sh命令语法规则

单行的可执行的sh命令, 可以是运行shell脚本的命令,也可以是直接的sh命令

其他

1) 任务是否执行查询

/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. 任务是否出错判断

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

您在 /var/spool/mail/root 中有新邮件
...
X-Cron-Env: <XDG_SESSION_ID=4303>
X-Cron-Env: <XDG_RUNTIME_DIR=/run/user/0>
X-Cron-Env: <LANG=zh_CN.UTF-8>
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>
Message-Id: <20210222015652.48902109F2CC@mail.qq.com>
Date: Fri, 19 Feb 2021 10:31:02 +0800 (CST)

/root/date.sh:行3: success: 未找到命令

crontab发送邮件

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

cat /etc/crontabMAILTO=root 修改为你需要的外部邮箱账号

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

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值