Linux Crontab [定时任务] 命令与参数详解

crontab命令常用于Unix和Linux系统中,用于设置周期性被执行的指令。
该命令从标准输入设备读取指令,并将其存放于crontab文件中,以供读取和执行。
通常,crontab储存的指令被守护进程激活,crond服务常常在后台运行。
通过设定的时间来检查是否有作业需要执行,这类作业一般称为:cron jobs.

crontab 文件

crontab文件包含送交cron守护进程的一系列作业和指令。
每个用户可以拥有自己的crontab文件,同时操作系统保存一个针对整个系统的crontab文件。

cron表达式

时间的设定是遵循cron表达式

crontab服务

crontab命令是Linux自带命令,通常是运行在后台、自动启动。
不同版本的Linux系统,crontab的服务名称不所有同:cron/crond
查看服务是否已经运行:
 ps -ax | grep cron/crond
启动或关闭服务的常用命令如下:
 sudo service cron/crond start/stop/restart

Crontab的选项

#. crontab的基本语法
 crontab [-u user] file
 crontab [-u user] [-i] {-e | -l | -r}

#. crontab命令的参数说明

crontab -u user : 设定某个用户的cron服务,一般root用户在执行这个命令时需要此参数
crontab -l : 列出用户的cron服务的详细内容
crontab -r : 删除某个用户的cron服务(用户的cron服务会全部删除,需要慎用)
crontab -e : 编辑某个用户的cron服务

Cron 文件的语法规则

#. 分 时 日 月 星期 命令
   0-59 0-23 1-31 1-12 0-6 COMMAND 

#. 时间设置遵循cron表达式的语法规则,如下是特殊符号的含义:
* : 代表取值范围的数字
/ : 代表每
- : 代表从某个数字到某个数字
, : 分开几个离散的数字

例如,在 12 月内, 每天的早上 6 点到 12 点中,每隔 20 分钟执行一次 /usr/bin/backup :
*/20 6-12 * 12 * /usr/bin/backup
一些示例如下:
30    3    10,20  *     *     ls     #每月10号及20号的3:30执行ls命令[注:“,”用来连接多个不连续的时段]

25    8-11 *      *     *     ls     #每天8-11点的第25分钟执行ls命令[注:“-”用来连接连续的时段]

*/15  *    *      *     *     ls     #每15分钟执行一次ls命令 [即每个小时的第0 15 30 45 60分钟执行ls命令 ]

30    6    */10   *     *     ls     #每个月中,每隔10天6:30执行一次ls命令[即每月的1、11、21、31日是的6:30执行一次ls 命令。 ]

50   7     *      *     *     root     run-parts     /etc/cron.daily    #每天7:50以root 身份执行/etc/cron.daily目录中的所有可执行文件

[ 注:run-parts参数表示,执行后面目录中的所有可执行文件。 ]
创建Crontab
在考虑向cron进程提交一个crontab文件之前,可以设置[编辑器的]环境变量 EDITOR.

在编辑crontab文件时默认采用vi编辑器(Ubuntu默认会使用GNU编辑器打开),方法如下:

1、编辑你的home路径下的.profile文件: vi /home/qi/.profile

2、添加如下内容:
EDITOR=vi;
export EDITOR

3、source /home/qi/.profile

默认vi编辑器设定成功,执行命令测试:crontab -e

#. 创建一个文件,其中的内容就是crontab要执行的命令,文件名称建议:<user>cron

添加crontab任务的命令操作如下:   

crontab <user>cron

列出crontab文件内容:crontab -l

编辑crontab文件内容:crontab -e

删除crontab文件内容: crontab -r <注意:会删除当前用户下的所有执行任务,请谨慎操作>

注释crontab文件内容: # <说明:crontab文件内容的每一行就是一个执行任务>

#. crontab的输出配置

crontab中经常配置运行脚本输出为:> /dev/null 2>&1,来避免crontab运行中有内容输出。

> 代表重定向到哪里,例如:echo "123" > /home/123.txt

/dev/null 代表空设备文件

1 表示stdout标准输出,系统默认值是1,所以"> /dev/null"等同于"1 > /dev/null"

2 表示stderr标准错误

& 表示等同于的意思,2>&1, 表示2的输出重定向等同于1

(注意:在Linux中">>"表示追加)

------------------------------------------------------------
例如:每天5:30执行ls命令,并把结果输出到/home/test文件中

30 5 * * * ls >/home/test 2>&1
注:2>&1 表示执行结果及错误信息。
------------------------------------------------------------

补充的一些说明

#. cron服务每分钟不仅要读取一次/var/spool/cron内的所有文件,还需要读一次/etc/crontab。因此我们配置这个文件也能运用cron服务做一些事情。

   用crontab配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务。

   编辑/etc/crontab文件配置cron

   sudo vim /etc/crontab

   -----------------------------------------------------------------------------------------------------
   SHELL=/bin/sh
   PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

   MAILTO=root //如果出现错误,或者有数据输出,数据作为邮件发给这个帐号  

  HOME=/ //使用者运行的路径,这里是根目录  

   # m h dom mon dow user  command
   17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
   25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
   47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
   52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
   #
   -----------------------------------------------------------------------------------------------------
   run-parts参数表示,执行后面目录中的所有可执行文件。

   如果去掉这个参数的话,后面就可以写要运行的脚本名,而不是文件夹名。

总结:创建crontab任务的两种方式

1)在命令行输入:crontab -e 然后添加相应的任务。(需要先创建一个执行用户任务的文件)

2)直接编辑/etc/crontab文件,添加相应的任务即可
   

Linux Crontab [定时任务] 命令与参数详解

时间: 2024-12-26 11:00:02

Linux Crontab [定时任务] 命令与参数详解的相关文章

Linux文件管理常用命令常用参数详解

目录管理 1.LS [参数] [目标目录] LS 列出目录下子目录和文件 -a 列出所有目录和文件包括隐藏目录 -l 列出文件详细信息:自左到右文件类型,权限,属主,属组,大小,时间,文件名 -h 列出可以读懂的格式文件大小 -S 根据文件大小排序 -s 列出文件块大小 -t 根据时间排序排序 -r 以相反顺序排序 2.mkdir 创建空目录 rmdir 删除空目录 可以一次创建多个目录 -v 显示创建目录详细信息 -p 递归创建子目录 mkdir -vp /tmp/{x,y/m} mkdir

linux TOP命令各参数详解【转载】

实时监控或查看系统资源使用情况的工具——TOP top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器. 下面详细介绍它的使用方法: (实时监控系统资源使用情况图) 统计信息区前五行是系统整体的统计信息: 第一行是任务队列信息,同 uptime  命令的执行结果.其内容如下: 01:06:48 当前时间 up 1:22 系统运行时间,格式为时:分 1 user 当前登录用户数 load average: 0.06, 0.60, 0.

Linux字符集和系统语言设置-LANG,locale,LC_ALL,POSIX等命令及参数详解

博文说明[前言]: 本文将通过个人口吻介绍Linux字符集和系统语言设置,包括LANG,locale,LC_ALL,POSIX等命令及参数详解的相关知识,在目前时间点[2017年6月21号]下,所掌握的技术水平有限,可能会存在不少知识理解不够深入或全面,望大家指出问题共同交流,在后续工作及学习中如发现本文内容与实际情况有所偏差,将会完善该博文内容. 本文参考文献引用链接: 1.http://blog.csdn.net/z4213489/article/details/7937894[好文,必看]

monkey命令行参数详解

monkey命令行参数详解:http://blog.sina.com.cn/s/blog_6fc352ca01017fsf.html Monkey的使用:http://blog.csdn.net/bruce_ke/article/details/8470252

VLC命令行参数详解

VLC命令行参数详解 2012-11-29 14:00 6859人阅读 评论(0) 收藏 举报 Usage: vlc [options] [stream] ...You can specify multiple streams on the commandline. They will be enqueued in the playlist.The first item specified will be played first. Options-styles:  --option  A gl

[转帖]XCopy复制文件夹命令及参数详解以及xcopy拷贝目录并排除特定文件

XCopy复制文件夹命令及参数详解以及xcopy拷贝目录并排除特定文件 https://www.cnblogs.com/smartsmile/p/7665979.html xcopy dirA dirB /s /e /y XCOPY是COPY的扩展,可以把指定的目录连文件和目录结构一并拷贝,但不能拷贝系统文件:使用时源盘符.源目标路径名.源文件名至少指定一个:选用/S时对源目录下及其子目录下的所有文件进行COPY.除非指定/E参数,否则/S不会拷贝空目录,若不指定/S参数,则XCOPY只拷贝源目

Linux Crontab 定时任务 命令详解

在工作中需要数据库在每天零点自动备份所以需要建立一个定时任务.我选择在Linux下使用Crontab来添加定时任务执行shell文件.shell文件有数据库备份命令. 一.  Crontab 介绍          crontab命令的功能是在一定的时间间隔调度一些命令的执行. 二.查看/etc/crontab文件 vim  /etc/crontab 三.文件/etc/crontab中每行任务的描述格式如下: minute hour day month dayofweek command min

(转)linux TOP命令各参数详解【转载】

实时监控或查看系统资源使用情况的工具——TOP top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器. 下面详细介绍它的使用方法: (实时监控系统资源使用情况图) 统计信息区前五行是系统整体的统计信息: 第一行是任务队列信息,同 uptime  命令的执行结果.其内容如下: 01:06:48 当前时间 up 1:22 系统运行时间,格式为时:分 1 user 当前登录用户数 load average: 0.06, 0.60, 0.

linux-linux top 命令各参数详解

简介 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器. top显示系统当前的进程和其他状况,是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止. 比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最"敏感"的任务列表.该命令可以按CPU使用.内存使用和执行时间对任务进行排序:而且该命令的很多特性都可以通过交互式命令或者在