crontab
linux下面定期分为二部分,一部分是后台程序 crond
,一部分是 crontab
往 crond
输入指令的接口。
crontab
命令用于安装、删除或者列出用于驱动 cron
后台进程的表格。也就是说,用户把需要执行的命令序列放到 crontab
文件中以获得执行,每个用户都可以有自己的 crontab
文件。
利用 crontab
编写 shell
脚本程序,定时执行 php
相关程序。在这个过程中,经常使用到的 crontab
命令如下:
(root权限下)
crontab启动: /etc/init.d/cron start ( service cron start )
crontab重启: /etc/init.d/cron restart (service cron restart )
crontab关闭: /etc/init.d/cron stop ( service cron stop )
或者
1)service cron start /*启动服务*/
2)service cron stop /*关闭服务*/
3)service cron restart /*重启服务*/
4)service cron reload /*重新载入配置*/
在终端中,可以利用 ps -aux|grep cron
查询 crontab
状态,默认情况下,是自启动的。
安装 cron
如果系统没有 cron,安装
ubuntu 安装 cron
安装:apt-get install cron
启动:service cron start
重启:service cron restart
停止:service cron stop
重新载入配置 : service cron reload
检查状态:service cron status
查看crontab服务状态 : service cron status
查询cron可用的命令:service cron
检查Cronta工具是否安装:crontab -l
centOS 安装:
(1)vixie-cron 软件包是 cron 的主程序;
(2)crontabs 软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序。
yum install vixie-cron
yum install crontabs
在CentOS系统中加入开机自动启动:
chkconfig --level 345 crond on
常见命令用法
1)crontab -u /*设定某个用户的cron服务*/
2)crontab -l /*列出某个用户cron服务的详细内容*/
3)crontab -r /*删除某个用户的cron服务*/
4)crontab -e /*编辑某个用户的cron服务*/
5)crontab -r /*使用下面的命令移除已经计划的cron作业*/
6)crontab -ir /*使用下面的命令移除所有已计划的cron作业,且无需再次确认。*/
crontab -l -u jp // 列出用户 jp 的所有调度任务
* * * * *
分钟 小时 天 月 天每星期 命令
每个字段代表的含义及取值范围如下:
Minute : 分钟(0-59),表示每个小时的第几分钟执行该任务
Hour : 小时(1-23),表示每天的第几个小时执行该任务
Day : 日期(1-31),表示每月的第几天执行该任务
Month : 月份(1-12),表示每年的第几个月执行该任务
DayOfWeek : 星期(0-6,0代表星期天),表示每周的第几天执行该任务
Command : 指定要执行的命令(如果要执行的命令太多,可以把这些命令写到一个脚本里面,然后在这里直接调用这个脚本就可以了,调用的时候记得写出命令的完整路径)]
30 5 * * * ls /*指定每天的 5:30 执行ls命令*/
30 7 8 * * ls /*指定每月8号的7:30分执行ls命令*/
50 7 * * * root run-parts /etc/cron.daily /*每天7:50以root 身份执行/etc/cron.daily目录中的所有可执行文件*/
每隔一分钟执行一次任务 * * * * *
每五分钟执行 */5 * * * *
每小时的0点执行一次任务,比如6:00,10:00 0 * * * *
每天执行 0 0 * * *
每周执行 0 0 * * 0
每月执行 0 0 1 * *
每年执行 0 0 1 1 *
每分钟执行一次 * * * * * user command
每隔2小时执行一次 * */2 * * * user command (/表示频率)
每个月2号,每小时的6分和10分执行一次任务 6,10 * 2 * *
每天8:30分执行一次 30 8 * * * user command
每隔3分钟或5分钟执行一次任务,比如10:03,10:05,10:06 */3,*/5 * * * *
每小时的30和50分各执行一次 30,50 * * * * user command(,表示并列)
每个月的3号到6号的8:30执行一次 30 8 3-6 * * user command (-表示范围)
每个星期一的8:30执行一次 30 8 * * 1 user command(周的范围为0-7,0和7代表周日)
Ubuntu cron 定时执行任务
ununtu 通过调用 run-parts 命令,定时运行四个目录下的所有脚本。
1)/etc/cron.hourly,目录下的脚本会每个小时让执行一次,在每小时的2分钟时运行;
2)/etc/cron.daily,目录下的脚本会每天让执行一次,在每天0点17分时运行;
3)/etc/cron.weekly,目录下的脚本会每周让执行一次,在每周第七天的3点56分时运行;
4)/etc/cron.mouthly,目录下的脚本会每月让执行一次,在每月19号的5点32分时运行;
当然,以上的时间均是系统默认时间,可以根据自己的需求进行修改
(系统级的)做系统级配置我们会直接配置 /etc/crontab
(用户级的)一般还是建议大家使用 crontab -e ,这样系统也会帮着检查我们配置的脚本语法。
使用
第一次进入的时候要选择编辑器,选择后你可以配置新cron作业了,一般是选3
crontab -e
1.Ctrl+O 写入
2.出现“FIile name to Write…”,输入Enter
3.Ctrl+x 保存输出
提示“crontab:installing new crontab”表示成功。
注意 :
1、crond 守护进程是在系统启动时由 init 进程启动的,受 init 进程的监视,如果它不存在了,会被 init 进程重新启动。这个守护进程每分钟唤醒一次,并通过检查 crontab 文件判断需要做什么。
2、每个用户有一个以用户名命名的 crontab
文件,存放在 /var/spool/cron/crontabs
目录里。若管理员允许或者禁止其他用户拥有 crontab
文件,则应编辑 /etc/
下面的 cron.deny
和 cron.allow
这两个文件来禁止或允许用户拥有自己的 crontab
文件。每一个用户都可以有自己的 crontab
文件,但在一个较大的系统中,系统管理员一般会禁止这些文件,而只在整个系统保留一个这样的文件。
例子 :
0 0 10,14,16 * * 每天上午10点,下午2点,4点触发
0 0/30 9-17 * * 朝九晚五工作时间内每半小时触发
0 0 12 ? * WED 表示每个星期三中午12点触发
0 0 12 * * 每天中午12点触发
0 15 10 ? * * 每天上午10:15触发
0 15 10 * * 每天上午10:15触发
0 15 10 * * 每天上午10:15触发
0 * 14 * * 在每天下午2点到下午2:59期间的每1分钟触发
0 0/5 14 * * 在每天下午2点到下午2:55期间的每5分钟触发
0 0/5 14,18 * * 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
0 0-5 14 * * 在每天下午2点到下午2:05期间的每1分钟触发
0 15 10 ? * MON-FRI 周一至周五的上午10:15触发
0 15 10 15 * * 每月15日上午10:15触发
0 15 10 L * * 每月最后一日的上午10:15触发
15,30,45,59 * * * * echo "xgmtest....." 表示,每隔15分钟,执行一次打印命令