Linux服务器Crontab定时任务配置使用方法

Linux服务器Crontab定时任务配置使用方法我们使用 Linux 系统的时候常常会遇到周期性的任务调度需求 使用自动化任务调度方法可以避免遗忘和出错 一 Crontab 环境安装 apt getinstallcr 二 Crontab 使用 crontab 命令常见于 Unix 和类 Unix 的操作系统之中 用于设置周期性被执行的指令 1 crontab 文件的含义用户所建立的 crontab 文件中 每一行都代表一项任务 每行的每个字段代表一项设置 它的格式共分为六个字段 前五段是时间设定段 第六段是要执行的命令段 格式如下 minutehour

我们使用Linux系统的时候常常会遇到周期性的任务调度需求,使用自动化任务调度方法可以避免遗忘和出错。

一、Crontab环境安装

apt-get install cron 

二、Crontab使用

crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。

1. crontab文件的含义

用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:

minute hour day month week command ========================================== minute :表示分钟,可以是从0到59之间的任何整数。 hour :表示小时,可以是从0到23之间的任何整数。 day :表示日期,可以是从1到31之间的任何整数。 month :表示月份,可以是从1到12之间的任何整数。 week :表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。 command :要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。 

Crontab格式说明
在以上各个字段中,还可以使用以下特殊字符:

星号(*) :代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。 逗号(,) :可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9” 中杠(-) :可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6” 正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。 同时正斜线可以和星号一起使用,例如:*/10,如果用在minute字段,表示每十分钟执行一次。 

2. crontab命令详解

命令格式:

crontab [-u user] file crontab [-u user] [ -e | -l | -r ] 

命令功能:

通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本。 时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。 这个命令非常设合周期性的日志分析或数据备份等工作。 

命令参数:

-u user :用来设定某个用户的crontab服务,例如,“-u ixdba”表示设定ixdba用户的crontab服务,此参数一般有root用户来运行。 filefile是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将它们载入crontab。 -e :编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。 -l :显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。 -r :从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。 -i :在删除用户的crontab文件时给确认提示。 

3. crontab服务操作方法

service cron start // 启动服务 service cron stop // 关闭服务 service cron restart // 重启服务 service cron reload // 重新载入配置 service cron status // 启动服务 

4. crontab配置方法

运行” crontab -e”,进入编辑状态:

1. 如果需要稍微复杂一点的任务,可以在进入“crontab -e”编辑模式之前先创建shell脚本;然后将需要执行的任务在shell脚本中实现;接下来将shell脚本保存为test.sh,并给shell脚本test.sh赋予可执行权限;最后将shell脚本test.sh在进入“crontab -e”编辑模式后写入command字段执行,如下图红框所示: 2. 如果任务比较简单可以直接在进入“crontab -e”编辑模式后直接在command字段进行实现 3. 每一个定时任务占一行,可以在编辑最后一行依次添加 4. 为避免定时任务执行后出现大量打印信息,可以编辑定时任务时使用重定义方法输出log 

【注意】crontab的默认编辑器是nano,操作比较复杂,新手估计会怀疑人生;这里给出一版操作方法:

方案一:nano版操作方法

crontab编辑状态
任务编辑完成后,接下来我们需要保存任务;
在使用命令之前如果不清楚命令有什么用,可以先执行【CTRL+G Get Help】获取命令帮助信息;
CTRL+G Get Help
接下来执行【CTRL+O Write Out】写入操作;
然后在写入操作界面下选择【CTRL+T To Files】写入文件选择,如下图红框所示:
在这里插入图片描述
后面这一步的操作非常重要,将光标移动到下图红框位置(不管是使用【CTRL+F Forward】向前移动,还是右箭头【->】均可);
选中后回车[ENTER]保存,会自动跳转到编辑界面
在这里插入图片描述
然后【CTRL+X Exit 】退出即可;
最终如果退出后出现如下log,证明cron任务创建或更新成功!






















crontab: installing new crontab 

终于弄完了,但是这样就满足了吗,有没有更简单的方法呢?!
别急… … 下面正式揭晓答案:另外一种更简单的方法,一劳永逸!!!

方案二:vim版操作方法

sudo select-editor 

crontab的默认编辑器切换
编辑器选择完成后,我们就可以随心所欲的操作想要的定时任务了

1. 首先还是先使用“crontab -e”进入任务界面 2. 接下来使用vim编辑器的操作命令【i】进入编辑模式;进行定时任务编辑 3. 定时任务编辑完成后,使用vim编辑器保存并退出命令 【ESC】+ wq 4. 任务提示:crontab: installing new crontab;成功创建或更新定时任务 

Crontab定时任务创建或更新完成后还可以用如下命令进行查看,确认定时任务是否创建成功

crontab -l 

5. 监测cron任务

1. ps aux | grep cron 2. pgrep cron 3. service cron status # 查看cron服务状态 

service cron status 查看cron服务状态
cron服务状态

三、Crontab注意事项

1. 注意环境变量问题

在crontab文件中定义多个调度任务时,需要特别注意的一个问题就是环境变量的设置;可以在crontab脚本开头加入环境变量

#!/bin/sh source /etc/profile export LD_LIBRARY_PATH=/home/work/local/mysql5/lib/mysql 

2. 系统级任务调度与用户级任务调度

Crontab定时任务分为两种系统级任务调度和用户级任务调度: 用户级任务调度:root用户的任务调度操作可以通过“crontab –u root –e”来设置,也可以将调度任务直接写入/etc/crontab文件; 系统级任务调度:需要注意的是,如果要定义一个定时重启系统的任务,就必须将任务放到/etc/crontab文件,即使在root用户下创建一个定时重启系统的任务也是无效的。 

3. crontab使用注意事项

1. 当crontab突然失效时,可以尝试/etc/init.d/crond restart解决问题。或者查看日志看某个job有没有执行/报错tail -f /var/log/cron。 2. 千万别乱运行crontab -r:它从Crontab目录(/var/spool/cron)中删除用户的Crontab文件。删除了该用户的所有crontab都没了。 3. 在crontab中%是有特殊含义的,表示换行的意思。如果要用的话必须进行转义\%,如经常用的date ‘+%Y%m%d’在crontab里是不会执行的,应该换成date ‘+\%Y\%m\%d’ 

4. Crontab使用技巧

1. 定时任务最好添加上注释,避免过多的定时任务冲突或未知 2. 环境变量问题,crontab执行shell时,只能识别为数不多的环境变量,普通的环境变量是无法识别的,所以在编写shell时,最好使用export重新声明变量,确保脚本执行。 3. 命令的执行最好用脚本,并给脚本加可执行权限 4. 时间变量要用反斜线转义,在crontab中%是有特殊含义的,表示换行的意思,最好用脚本转换时间变量 5. 定时任务中不要随意打印日志文件;最好重定义log: > /user/xxx/xx.log 2>&1 ==> & > /user/xxx/xx.log 6. 定时任务里面的程序脚本尽量用全路径,避免脚本名重复造成任务执行错误 8. 定时任务尽量精简,避免不必要的程序以及命令输出 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/229926.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午3:32
下一篇 2026年3月16日 下午3:33


相关推荐

  • OpenClaw配置QQ Bot(QQ机器人)

    OpenClaw配置QQ Bot(QQ机器人)

    2026年3月13日
    2
  • 详解深浅拷贝

    详解深浅拷贝前言说道拷贝大家可能联想到深拷贝和浅拷贝概念 然而在 swift 却很少涉及宝贝问题 即使 swift 下依然有 copy 和 mutableCopy 方法 但终其原因 创建单纯的 swift 类并不需要继承 NSObject 而是使用 swift 类 另外很多牵扯拷贝问题的数组和字典 在 swift 对应于 Array 和 Dictionary 不同于 NSArray 和 NSDictionary swift 的 Array 和 Dictionary 是值类型 赋值后并不需要担心其拷贝问题 所以主要结束 Objective C 中的深拷贝和浅拷贝

    2026年3月17日
    2
  • hyperledger fabric1.0整体架构与记账逻辑架构的分析

    hyperledger fabric1.0整体架构与记账逻辑架构的分析

    2022年3月12日
    46
  • WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None))解决办法汇总(超全)

    WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None))解决办法汇总(超全)解决办法 pip 换源指定安装源修改注册表信息就我自己在 windsows 系统上的经验来看 很有可能是由于系统代理软件的锅 一般我们可以通过以下三种方法解决 pip 换源 windows 换源参考 Ubuntu Windows 给 pip 换源打开 appdata 文件夹新建一个名为 pip 的文件夹在 pip 文件夹里面新建名为 pip ini 文件将下面信息添加在 pip ini 文件内 global timeout 6000index url https pypi tuna tsinghua edu

    2026年3月17日
    2
  • 令牌桶算法

    令牌桶算法一 什么是令牌桶算法令牌桶算法是比较常见的限流算法之一 要点如下 所有的请求在处理之前都需要拿到一个可用的令牌才会被处理 根据限流大小 设置按照一定的速率往桶里面添加令牌 桶设置最大的放置令牌限制 当桶满时 新添加的令牌就被丢弃或者拒绝 请求到达后首先要获取令牌桶中的令牌 拿着令牌才可以进行其他的业务逻辑 处理完业务逻辑之后 将令牌直接删除 令牌有最低限额 当桶中的令牌达到最低限额的时候 请求处理完之后不会删除令牌 以此保证足够的限流

    2026年3月26日
    3
  • Word 设置页码从指定页开始的详细步骤!

    Word 设置页码从指定页开始的详细步骤!设置页码从指定页开始 这个功能一直是很多同学写论文头疼的问题 今天刚好写了个机器学习小论文的作业 这里把我设置页码从第三页正文开始的步骤分享给大家 其实非常简单 先给封面 目录 正文等分 3 节再设置页脚 1 先分节要想设置页脚从指定页开始 必须要分节 把一个文档分为不同的节 这样页脚就不会一直连续了 比如我要给封面和目录分节 那么我点击封面底部进入编辑状态 然后点击 页面布局 gt 下一页 即可插入分解符 2 选择是否链接前一节相同的节可以把当前页的页脚链接到上一页 但是不同的

    2026年3月20日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号