`
天梯梦
  • 浏览: 13732808 次
  • 性别: Icon_minigender_2
  • 来自: 洛杉矶
社区版块
存档分类
最新评论

Linux下crontab命令的用法

阅读更多

cron来源于希腊单词chronos(意为“时间”),是linux系统下一个自动执行指定任务的程序。例如,你想在每晚睡觉期间创建某些文件或文件夹的备份,就可以用cron来自动执行。

 

服务的启动和停止

cron服务是linux的内置服务,但它不会开机自动启动。可以用以下命令启动和停止服务:

/sbin/service crond start
/sbin/service crond stop
/sbin/service crond restart
/sbin/service crond reload

 

以上1-4行分别为启动、停止、重启服务和重新加载配置。

要把cron设为在开机的时候自动启动,在 /etc/rc.d/rc.local 脚本中加入 /sbin/service crond start 即可。

 

查看、编辑和删除

cron把命令行保存在crontab(cron table)文件里,这个文件通常在 /etc 目录下。每个系统用户都可以有自己的crontab(在 /var/spool/cron/ 下)。

 

  • file 使用file文件的内容作为某个用户的cron服务配置,内容会复制到cron服务的配置文件中
  • -u 设定某个用户的cron服务配置,一般root 用户在执行这个命令的时候需要此参数
  • -l   列出某个用户cron服务配置
  • -r  删除某个用户的cron服务配置
  • -e  编辑某个用户的cron服务配置,当指定crontab  不存在时新建,将使用vi打开配置文件进行编辑保存后退出,文件语法见后
  • crontab –v   显示上一次编辑的时间(只在某些操作系统上可用)

如当前是root身份,要查看/编辑/删除/某用户的crontab,只需在相应的命令后加上 -u USERNAME (如 crontab -e -u USERNAME )即可。

 

crontab文件的默认编辑器是vi,可以输入 export VISUAL='editor' 更改默认编辑器。

 

cron服务每分钟不仅要读一次 /var/spool/cron 目录内的所有文件,还需要读一次 /etc/crontab 文件。配置这个文件也能让cron执行任务。使用crontab命令是对用户级任务的配置,而编辑 /etc/crontab 文件是对系统级任务的配置。

 

 

语法说明

 

每行表示一个指令,即表示一项计划任务;每行由空格分隔的六个部分组成,前5部分表示定时任务的执行时间,剩余部分为定时任务要执行的命令,格式如下:

 

分 小时 日 月 星期 命令
Minute  Hour  Day  Month  DayOfWeek  command

  • Minute 每个小时的第几分钟执行该任务,0-59
  • Hour 每天的第几个小时执行该任务,0-23
  • Day 每月的第几天执行该任务,1-31
  • Month 每年的第几个月执行该任务,1-12
  • DayOfWeek 每周的第几天执行该任务,0-6,0表示周日
  • Command 指定要执行的程序

以上前五项可使用以下四个特殊符号:

  • *  表示所有数值,如第一位使用* 表示每分钟
  • /  表示每,如第一位使用 */5 表示每5分钟
  • -  表示数值范围,如第二位使用2-4表示2点到4点
  • ,  表示离散的多个数值,如第2位使用6,8 表示6点和8点
  • 指定“步长”:8-14/2 表示8,10,12,14
  • 指定列表:比如 “1,2,3,4″,”0-4,8-12″

在每行的六项字段中,除了Command是每次都必须指定的字段以外,其它字段皆为可选字段,可视需要决定。对于不指定的字段,要用“*”来填补其位置。

 

1)除去前五段,从第六段开始到换行符或者“%”为止,为要执行的命令。

2)默认第六段将被/bin/sh执行,除非在crontab文件中指定了非/bin/sh的SHELL变量。

3)第六段中的”%”号,除非前面加”\”号转交,否则,“%”号将结束命令行、换行的意义,并且其后的内容会被做为标准输入发送给前面的命令。

 

举例如下:

Every minute (* * * * *)
Every 5 minutes (*/5 * * * *)
Twice an hour (0,30 * * * *)
Once an hour (0 * * * *)
Twice a day (0 0,12 * * *)
Once a day (0 0 * * *)
Once a week (0 0 * * 0)
1st and 15th (0 0 1,15 * *)
Once a month (0 0 1 * *)
Once a year (0 0 1 1 *)

 

5      *      *     *     *    ls  > /var/log.txt           指定每小时的第5分钟执行一次ls命令,并将结果保存到/var/log.txt文件
30    5      *      *     *     ls    指定每天的 5:30 执行ls命令
30    7      8      *     *     ls    指定每月8号的7:30分执行ls命令
30    5      8      6     *     ls    指定每年的6月8日5:30执行ls命令
30    6      *      *     0     ls    指定每星期日的6:30执行ls命令 [注:0表示星期天,1表示星期1,以此类推,也可以用英文来表示,sun表示星期天,mon表示星期一等。]
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命令。]

 

cron配置文件

使用crontab命令添加完成计划任务后会在/var/spool/cron目录中生成一个用户名字的文件,文件里面就是你的计划任务,cron服务会每分钟读取一次/var/spool/cron 中的文件。

 

系统计划任务

还有一种方法可以添加计划任务,编辑/etc/crontab (cron服务每分钟也读取一次/etc/crontab文件。

用crontab配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务。此文件的文件格式是:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root //如果出现错误,或者有数据输出,数据作为邮件发给这个帐号
HOME=/ //使用者运行的路径,这里是根目录
# run-parts
#每小时执行/etc/cron.hourly内的脚本
01   *   *   *   *     root run-parts /etc/cron.hourly
#每天执行/etc/cron.daily内的脚本 
02   4   *   *   *     root run-parts /etc/cron.daily
#每星期执行/etc/cron.weekly内的脚本
22   4   *   *   0     root run-parts /etc/cron.weekly
#每月去执行/etc/cron.monthly内的脚本
42   4   1   *   *     root run-parts /etc/cron.monthly

 

注意”run-parts”这个参数,如果去掉这个参数的话,后面就要写要运行的某个脚本名,而不是文件夹名。例如:11 2 21 10 * rm -rf /mnt/fb

 

以下是两个cron语句的例子(在 /etc/crontab 文件里)。前者用来晚间备份 /etc 目录,后者运行Analog程序处理服务器的统计信息。

12 3 * * * root tar czf /usr/local/backups/daily/etc.tar.gz /etc >> /dev/null 2>&1
52 5 * * * root /usr/local/src/analog-5.32-lh/analog >> /dev/null 2>&1

 

以下是cron语句中的字段与字段说明:

字段 说明
1 分钟(0-59)
2 小时(0-23)
3 日期(1-31)
4 月份(1-12;或英文缩写Jan、Feb等)
5 周几(0-6,0为周日;或单词缩写Sun、Mon等)
6 用户名(执行命令时以此用户的身份)
7 要执行的命令(路径)
   

 

现在来看第一行:

12 3 * * * root tar czf /usr/local/backups/daily/etc.tar.gz /etc >> /dev/null 2>&1

 

这条语句将在每天的凌晨3点12分 (03:12)运行 tar czf /usr/local/backups/daily/etc.tar.gz /etc 命令。>> /dev/null 2>&1 表示把所有标准输出发送到 /dev/null(linux的回收站),把标准错误输出(2)发送到和标准输出(1)同样的地方(即 /dev/null)。运行这行命令将不会产生任何输出。

这条语句可以变得稍微复杂一点:

30 15 13 6 1 * root tar czf /usr/local/backups/daily/etc.tar.gz /etc >> /dev/null 2>&1

 

它将在6月13日周一的15:30 运行 tar czf /usr/local/backups/daily/etc.tar.gz /etc 命令。

以下语句可以达到同样的效果:

30 15 13 Jun Mon * root tar czf /usr/local/backups/daily/etc.tar.gz /etc >> /dev/null 2>&1

 

如果你想以用户joey的身份每小时的第15分钟 运行某个程序,可以使用:

15 * * * * joey /usr/bin/somecommand >> /dev/null 2>&1

 

其中的星号(*)是通配符,表示cron将忽略这个字段。

如果你想每两小时 就运行某个程序,可以在小时字段里使用 */2 。它将会在2点,4点,6点……22点,24点运行。具体语句如下:

0 */2 * * * joey /usr/bin/somecommand >> /dev/null 2>&1

 

cron语句中还可以使用逗号(,)来指定多个时间。例如你想在每小时的15分和30分 运行某个程序,可以在分钟字段使用 15,30

15,30 * * * * joey /usr/bin/somecommand >> /dev/null 2>&1

 

如果你想在每月的第一周(即1号到7号)每天的指定时间 运行某个程序,可以在日期字段使用 1-7

15,30 */2 1-7 * * joey /usr/bin/somecommand >> /dev/null 2>&1

 

这条语句将在每月的第1-7日每两小时的15分和30分 (02:15,02:30……22: 15,22:30等)运行 /usr/bin/somecommand 命令。

 

如果你想在每天的16:18 执行一个脚本集合,可以把所有要执行的脚本放到一个目录中(如 /home/username/cron),可以使用:

18 16 * * * root run-parts /home/username/cron >> /dev/null 2>&1

 

如果你想保存某个程序的输出结果, 可以把 >> /dev/null 2>&1 替换为 >> /home/user/somecommand.log 2>&1

 

总结

  • 查看当前用户的cron配置,使用 crontab -l
  • 编辑当前用户的cron配置,使用 crontab -e
  • 删除当前用户的cron配置,使用 crontab -r
  • 删除计时器设置时要先询问,使用 crontab -i 交互式模式
  • 以root身份查看/编辑/删除某用户的cron配置,在命令后加上 -u USERNAME
  • 配置系统级的任务,编辑 /etc/crontab 文件

 

 

 

ubuntu 重设crontab -e的默认编辑器

 

sudo select-editor
 

 

On Gnome-based Ubuntu systems Gnome Scheduled tasks tool (from the gnome-schedule package) in Applications --> System Tools provides a graphical interface with prompting for using Cron. The project website is at http://gnome-schedule.sourceforge.net/; the software is installable from the Software Center or by typing

 

sudo apt-get install gnome-schedule

 

in a terminal.

 

来源: https://help.ubuntu.com/community/CronHowto

[root@localhost ~]# crontab -l                  #查看定时运行的程序
59 23 * * * /bin/sh /var/www/database/bak.sh
59 3 * * * /bin/sh /var/www/database/mylinux.sh
59 5 * * 0 /sbin/reboot

 

 

分享到:
评论

相关推荐

    Linux下crontab命令的用法[归类].pdf

    Linux下crontab命令的用法 crontab命令是Linux系统下的定时任务触发器,它允许用户设置定期执行的任务。crontab命令的使用非常广泛,包括系统执行的工作和个人执行的工作。 系统执行的工作 系统执行的工作是指...

    linux下crontab命令

    Linux 下 Crontab 命令 Crontab 是 Linux 中一个非常强大的功能,它允许用户在固定时间或固定间隔执行某个程序。Crontab 命令是用来设置和管理这些自动执行程序的。下面是 Crontab 命令的详细介绍: 语法 Crontab...

    Linux Crontab 定时任务 命令详解

    Linux Crontab 定时任务 命令详解 Linux Crontab 是一个强大的定时任务命令,用于在指定的时间间隔执行特定的命令或程序。Crontab 命令的功能是在一定的时间间隔调度一些命令的执行,通过编写 Crontab 文件来实现。...

    crontab命令的用法

    关于linux命令crontab的用法,自己总结的 包含简单的用法

    linux C7 crontab离线安装包

    在Linux系统中,Crontab...总结来说,Linux CentOS 7的Crontab离线安装包提供了在无网络环境下安装和管理定时任务的能力,通过RPM包管理方式,我们可以方便地在系统中部署和配置Crontab,实现自动化维护和管理工作。

    linux定时执行,crontab命令使用介绍借鉴.pdf

    Linux 定时执行 Crontab 命令使用介绍借鉴 Linux 系统中的 Crontab 命令是一个非常有用的工具,用于在指定的时间执行某个任务或命令。Crontab 命令是基于 Cron 服务的,它可以让用户在指定的时间执行某个任务,例如...

    Linux中使用crontab自动清除日志

    在 Linux 中使用 crontab 自动清除日志的方法是通过编写一个 shell 命令,然后在 cron 中编写定时任务。例如,以下是一个删除 30 天前的日志文件的 shell 命令: find /opt/soft/log/ -mtime +30 -name "*.log" -...

    Linux学堂 Crontab命令的实用方法

    Crontab命令是Linux操作系统中用于管理定时任务的重要工具,它允许用户设置周期性被执行的任务。这些任务可以是系统维护、数据备份或是其他自动化任务。Crontab命令提供了方便的方式来创建、查看和删除这些定时任务...

    Linux crontab 命令格式与详细例子

    ### Linux Crontab命令详解与应用实例 Cron是Linux系统中的一个守护进程,用于调度周期性执行的任务或脚本。Cron通过读取每个用户的crontab文件来确定哪些任务需要被执行,以及何时执行。本文将深入解析Crontab命令...

    Linux的定时任务crontab命令怎么用.pdf

    Linux中使用crontab命令实现定时任务 在Linux系统中,crontab命令是一个非常有用的工具,它可以帮助用户实现定时任务的执行。通过crontab命令,用户可以在指定的时间执行特定的命令或程序,这使得系统管理员可以更...

    Linux crontab 命令用法详解

    Linux crontab 命令 Linux crontab是用来定期执行程序的命令。 当安装完成操作系统之后,默认便会启动此任务调度命令。 crond 命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。 ...

    crontab命令格式与例子

    ### crontab命令格式与例子解析 #### 一、crontab简介 `crontab` 是 Linux 和 Unix-like 操作系统中一个非常重要的工具,用于设置周期性执行的任务。通过编写 crontab 文件(cron job),用户可以指定某个脚本或...

    Linux的定时任务crontab命令怎么用.docx

    Linux 的定时任务 crontab 命令怎么用 Linux 的定时任务 crontab 命令是 Linux 系统中的一种非常重要的功能,它允许用户设置定时任务,自动执行指定的命令或程序。下面我们将详细介绍 crontab 命令的使用方法和...

    Linux crontab 命令格式.docx

    crontab 命令的使用权限为所有用户,可以在命令行中直接输入 `crontab` 来编辑自己的时程表,也可以使用 `-u user` 参数来设定指定用户的时程表。 crontab 文件的格式为 `M H D m d cmd`,其中每个星号 (`*`) 代表...

    Linux系统计划任务crontab命令简单介绍.docx

    以下是 crontab 命令的一些基本用法: * crontab -u 设定某个用户的 cron 服务 * crontab -l 列出当前用户的 cron 服务的详细内容 * crontab -r 删除当前用户的 cron 服务 * crontab -e 编辑当前用户的 cron 服务 ...

    crontab命令详解

    ### crontab命令详解 #### 一、引言 `crontab` 是 Linux 和 Unix 系统中用于定时执行任务的重要工具。通过 `crontab`,用户可以在指定的时间间隔内自动执行脚本或者命令,这对于自动化运维、数据备份等场景非常...

    使用linux命令crontab间隔时间执行其它命令

    在/etc目录下有一个crontab文件,这里存放有系统运行的一些调度程序。每个用户可以建立自己的调度crontab。 如: 代码如下:[root@dave ~]# cat /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin ...

    Crontab命令.doc

    ### Crontab命令详解 Crontab是Unix和Linux系统中用于设置周期性任务调度的命令,它允许用户设定在特定的时间或间隔自动执行某个程序或脚本,从而实现自动化管理,提高系统的运行效率和便利性。下面我们将深入探讨...

    LINUX命令大全之CRONTAB命令使用详解.pdf

    对于用户权限管理,可以通过`/etc/cron.deny`和`/etc/cron.allow`文件来限制哪些用户可以使用`crontab`命令。 `crontab`文件的格式包含六个字段:分钟(minute)、小时(hour)、日期(day)、月份(month)、星期...

    Linux定时脚本crontab中文乱码.docx

    当我们在 Linux 系统中使用 crontab 执行 jar 文件时,输出结果中出现中文乱码的原因是由于 Unix/Linux 下的 crontab 环境与用户环境的差异。通常情况下,用户环境中会设置一些环境变量,例如语言环境变量 LANG,...

Global site tag (gtag.js) - Google Analytics