crontab定时执行任务

本文详细介绍了Crontab的基本用法及参数设置,包括如何编辑、查看和删除定时任务,解析了定时任务的格式,并提供了多个实际应用场景示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

crontab

按照配置定时执行任务

参数说明
Usage:
 crontab [options] file
 crontab [options]
 crontab -n [hostname]

Options:
 -u <user>  define user # 申明crontab user,对该用户的定时任务进行操作
 -e         edit user's crontab # 执行编辑器来设置定时任务,编辑器默认为VI
 -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
定时任务格式
*  *  *  *  *  <cmd>
|  |  |  |  |	任务的执行脚本
|  |  |  |  星期中的星期几(0-6)
|  |  |  月份(1-12)
|  |  日期(1-31)
|  小时(0-23)
分钟(0-59)

注:
 * :表示都要执行,如:分钟为*,则表示每分钟都要执行
 a-b : 表示a-b范围都要执行,如: 分钟为1-10,表示第1分钟到第10分钟这段时间内每隔1分钟都要执行
 */n : 表示每隔n执行一次,如:分钟为*/3,表示每隔三分钟执行一次
 a,b,c : 表示a,b,c时需执行一次,如:分钟为1,10,20,表示在第1分钟、第10分钟、第20分钟时都要执行
使用示例

每分钟输出测试日志到/tmp/1.log:

* * * * * echo `date -u +\%Y-\%m-\%d\ \%H:\%M:\%S.\%N` test log `uuidgen` >>/tmp/1.log

0-23中每两小时0分执行一次cmd

0 0-23/2 * * * <cmd>

周一到周五的5点执行一次cmd

0 17 * * 1-5 <cmd>
注意事项
  • 每次执行定时任务后系统都会发送一条邮件给当前用户,如果不想收到可以在脚本后边加上重定向>/dev/null 2>&1,调试的话可以开启,定时任务执行出错时会在邮件中显示,也会显示脚本打印的内容,邮件在/var/spool/mail/root中,可以在/var/log/cron中看到定时执行的命令

    邮件示例:

    From root@localhost.localdomain  Wed May 25 05:26:01 2022
    Return-Path: <root@localhost.localdomain>
    X-Original-To: root
    Delivered-To: root@localhost.localdomain
    Received: by localhost.localdomain (Postfix, from userid 0)
    	id 9A035B63; Wed, 25 May 2022 05:26:01 +0800 (CST)
    From: "(Cron Daemon)" <root@localhost.localdomain>
    To: root@localhost.localdomain
    Subject: Cron <root@localhost> /bin/sh -c "echo `date -u +%Y-%m-%d\ %H:%M:%S.%N` test log `uuidgen`"
    Content-Type: text/plain; charset=UTF-8
    Auto-Submitted: auto-generated
    Precedence: bulk
    X-Cron-Env: <XDG_SESSION_ID=84>
    X-Cron-Env: <XDG_RUNTIME_DIR=/run/user/0>
    X-Cron-Env: <LANG=en_US.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: <20220524212601.9A035B63@localhost.localdomain>
    Date: Wed, 25 May 2022 05:26:01 +0800 (CST)
    
    2022-05-24 21:26:01.617994410 test log 636293fd-e4bd-4f21-b8fb-f203e68fb0e0
    
    
  • 在crontab定时任务中,日期需写成date +\%Y-\%m-\%d\ \%H:\%M:\%S.\%N,不能写成date +"%Y-%m-%d %H:%M:%S.%N"

    写成后者会报错:

    /bin/sh: -c: line 0: unexpected EOF while looking for matching `"'
    /bin/sh: -c: line 1: syntax error: unexpected end of file
    
  • 定时任务中的脚本需写绝对路径,脚本中如果用到了环境变量,需调试确认是否有值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值