相 比用于安排一次性任务的at命令,crontab命令主要是用于安排一些周期性的任务,比如 定期备份数据、定时杀毒、定期清理垃圾文件等。 Linux中的cron进程是一个主要的系统调度进程,可以在后台自动完成用户指定的任务 计划。它每分钟检查一遍各个用户的“”任务计划书“”--也就是crontab文件,如果计划书 中所指定的运行条件满足,就立即为用户执行计划书中的任务。那么,这个计划书放在哪儿 呢?就放在/var/spool/cron/crontabs目录下面。这些计划书是什么样的文件,有什么特别 之外吗?其实它们就只是普通的文本文件,唯一的不同是有两点要求:
1. 命名:计划书的名称与计划书所属的用户名相同。
2. 格式: * * * * * command
分 时 日 月 周 命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
使用方式 :
crontab file [-u user]-用指定的文件替代目前的crontab。
crontab-[-u user]-用标准输入替代目前的crontab.
crontab-1[user]-列出用户目前的crontab.
crontab-e[user]-编辑用户目前的crontab.
crontab-d[user]-删除用户目前的crontab.
crontab-c dir- 指定crontab的目录。
crontab文件的格式:M H D m d cmd.
M: 分钟(0-59)。
H:小时(0-23)。
D:天(1-31)。
m: 月(1-12)。
d: 一星期内的天(0~6,0为星期天)。
cmd要运行的程序,程序被送入sh执行,这个shell只有USER,HOME,SHELL这三个环境变量
说明 :
crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。-u user 是指设定指定
user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设定自己的时程表。
参数 :
crontab -e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说 setenv VISUAL joe) 。保存时,系统会检查格式是否符合要求。
crontab -r : 删除目前的时程表
crontab -l : 列出目前的时程表
crontab file [-u user]-用指定的文件替代目前的crontab。
时程表的格式如下 :
f1 f2 f3 f4 f5 program
其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的程序。
当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,其余类推 。
当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其余类推。
当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其余类推。
当 f1 为 a, b, c,... 时表示第 a, b, c,... 分钟要执行,f2 为 a, b, c,... 时表示第 a, b, c...个小时要执行,其余类推 。
使用者也可以将所有的设定先存放在档案 file 中,用 crontab file 的方式来设定时程表。
补充说明:
1. 环境变量,cron进程执行任务时,并不加载计划书所属用户的环境变量,只加载几个最 基本的环境变量,比如执行任务的sh,$HOME,$MAILTO等。这几个环境变量的定义是在 /etc/crontab文件中。其中$MAILTO是指定计划执行过程中发生错误或者有数据输出时发 送邮件到哪个用户。
2. 不能运行crontab命令或者计划没有被执行,crontab的权限设置是由两个文件来决定的 :/etc/cron.allow, /etc/cron.deny。如果存在/etc/cron.allow,则把要执行计划的 用户名称添加到其中;若/etc/cron.deny存在,则确保要执行计划的用户名称不在 /etc/cron.deny中;如果两个文件都存在,/etc/cron.allow优先。
3. crontab 文件名,提交了新计划文件之后,原来的计划是否还在呢?答案是否定的。这 种方法进行的是完全覆盖,而非追加。同时要说明的是,当运行命令:crontab newplan.txt 之后,系统复制了一份newplan.txt的内容用来创建该用户的计划书,存 放到/var/spool/cron/crontabs目录下,newplan.txt与计划之间并无联系。但建议将其 保留,作为计划书的副本。当要修改计划时,可先修改newplan.txt,然后再提交为新计划。
4. 计划书的输出和日志,如果用户的计划书在运行时有输出,用户是无法直接从终端上看 到的。cron进程会将执行计划时产生的所有输出数据和错误信息发送到指定用户的邮箱 ,用户可到邮箱中去查看,所以建议在计划中把有用的输出数据重定向到文件中。要想 查看各个计划的执行情况,可以查看cron进程的日志文件:/var/log/cron。
5. 更简单的任务计划, 如果觉得这样麻烦,还有一种简单的方法。/etc下面有4个目录: cron.hourly,cron.daily,cron.weekly,cron.weekly,这4个目录下脚本的执行周期 分别是每小时,每天,每周,每月。根据自己的需要,将要运行的脚本直接放置到对应 的目录下即可,系统会自动为你完成任务。
例子 :
#每天早上7点执行一次 /bin/ls :
0 7 * * * /bin/ls
在 12 月内, 每天的早上 6 点到 12 点中,每隔3个小时执行一次 /usr/bin/backup :
0 6-12/3 * 12 * /usr/bin/backup
周一到周五每天下午 5:00 寄一封信给 alex@domain.name :
0 17 * * 1-5 mail -s "hi" alex@domain.name < /tmp/maildata
每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分....执行 echo "haha"
20 0-23/2 * * * echo "haha"
注意 :
当程序在你所指定的时间执行后,系统会寄一封信给你,显示该程序执行的内容,若是你不希望收到这样的信,请在每一行空一格之
后加上 > /dev/null 2>&1 即可
例子2 :
#每天早上6点10分
10 6 * * * date
#每两个小时
0 */2 * * * date
#晚上11点到早上8点之间每两个小时,早上8点
0 23-7/2,8 * * * date
#每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
0 11 4 * mon-wed date
#1月份日早上4点
0 4 1 jan * date
$crontab -l 列出用户目前的crontab.
crontab文件的一些例子:
30 21 * * * /usr/local/etc/rc.d/lighttpd restart ---------------------每晚的21:30重启apache。
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart --------------示每月1、10、22日的4 : 45重启apache。
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart -----------------每周六、周日的1 : 10重启apache。
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart ------在每天18 : 00至23 : 00之间每隔30分钟重启apache。
0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart ----------------每星期六的11 : 00 pm重启apache。
* */1 * * * /usr/local/etc/rc.d/lighttpd restart --------------每一小时重启apache
* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart ---------------晚上11点到早上7点之间,每隔一小时重启apache
0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart ----------每月的4号与每周一到周三的11点重启apache
0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart ----------一月一号的4点重启apache
0 0 * * 1 echo Monday >> /home/test.txt ---------------每个星期一凌晨执行
* * * * date >> /home/date.txt ----------------------------每分钟执行一次
*/10 * * * 1-3 echo "ten minutes pasted" >> /home/time.txt -------------星期一到三每10分钟执行一次。
相关推荐
"仿制Linux中定时任务Crontab v1.0-易语言"项目旨在为易语言用户提供一个类似Linux Crontab功能的实现,让用户在易语言环境下也能享受到类似的功能。 易语言是一款中国本土开发的编程语言,其目标是让编程变得简单...
Linux 系统中的定时脚本 crontab 是一个功能强大的工具,允许用户在指定的时间执行特定的命令或脚本。然而,在使用 crontab 执行 jar 文件时,如果输出结果包含中文字符,可能会出现乱码问题。本文将探讨该问题的...
Linux 的定时任务 crontab 命令是 Linux 系统中的一种非常重要的功能,它允许用户设置定时任务,自动执行指定的命令或程序。下面我们将详细介绍 crontab 命令的使用方法和格式。 一、crontab 命令的基本使用方法 ...
Linux中使用crontab命令实现定时任务 在Linux系统中,crontab命令是一个非常有用的工具,它可以帮助用户实现定时任务的执行。通过crontab命令,用户可以在指定的时间执行特定的命令或程序,这使得系统管理员可以更...
### Linux定时任务Crontab详解 #### 一、Crontab简介 在Linux系统中,Cron服务是一种用于计划执行任务的工具。它允许用户设置周期性运行的任务,例如自动备份数据、定时发送邮件等。Cron服务的核心是`crontab`命令...
Linux 中的定时计划任务 crontab 使用实例 Linux 中的定时计划任务 crontab 是一个非常有用的功能,它允许用户在指定的时间执行特定的任务。crontab 是一个 daemon 程序,它会在后台运行,并根据用户的设置来执行...
在Linux系统中,`crontab` 是一个用于设置周期性被执行的任务的命令,它允许用户根据特定的时间间隔安排任务的执行。在CentOS 6.9这样的旧版本系统中,有时可能会遇到`yum`无法在线获取或更新`crontab`的情况。这...
Linux下的定时执行主要是使用crontab文件中加入定制计划来执行,设置比Windows稍微复杂一些(因为没有图形界面嘛),但是也不是非常复杂,基本上用过一遍能记住了,关键是要记住/var/spool/cron这个目录。下面看一下...
Linux Crontab 定时任务 命令详解 Linux Crontab 是一个强大的定时任务命令,用于在指定的时间间隔执行特定的命令或程序。Crontab 命令的功能是在一定的时间间隔调度一些命令的执行,通过编写 Crontab 文件来实现。...
在 Linux 中,可以使用 `crontab -l` 命令来查看当前用户的定时任务列表,可以使用 `crontab -e` 命令来编辑定时任务文件。 另外,Linux 还提供了 systemctl 命令来管理服务,包括 cron 服务。可以使用 `systemctl ...
NULL 博文链接:https://caoyaojun1988-163-com.iteye.com/blog/1698192
Linux下的定时执行主要是使用crontab文件中加入定制计划来执行,设置比Windows稍微复杂一些(因为没有图形界面嘛),但是也不是非常复杂,基本上用过一遍就能记住了,关键是要记住/var/spool/cron这个目录。...
springboot的定时任务配置和linux的crontab一样例子.zipspringboot的定时任务配置和linux的crontab一样例子.zipspringboot的定时任务配置和linux的crontab一样例子.zip
一、ThinkPHP 5.1中的定时任务 在ThinkPHP 5.1中,定时任务通常被称为计划任务,它们允许开发者设置定期执行的任务,而无需用户交互。这在许多场景下非常有用,例如数据备份、日志清理、发送邮件等周期性任务。...
本文将详细介绍如何在 Linux 中使用 crontab 命令来设置定时任务,并对其格式、参数和使用方法进行详细解释。 crontab 命令 crontab 命令是 Linux 中用来设置定时任务的命令。其基本语法为:`crontab [选项] [命令...
linux基础命令:三剑客-awk、sed、grep,定时任务crontab
Linux 下定时任务设置 Linux 操作系统提供了一个强大的定时任务设置机制,即 cron 服务。cron 服务允许用户设置在特定的时间或间隔执行特定的命令或脚本。下面将详细介绍 Linux 下定时任务设置的知识点。 一、创建...
Linux的定时任务crontab是系统管理中不可或缺的一部分,它允许管理员或用户安排任务在特定的时间点自动执行。本文将深入探讨crontab的工作原理、使用方法以及与PHP等编程语言的结合应用。 首先,crontab是Unix和类...