crontab 循環執行例行性命令
想要讓Debian定時執行命令就得靠crontab了!
它的功能類似微軟工作排程,可以在您設定的時間執行命令,
透過編寫設定檔可以組合出複雜的執行時段,讓命令的執行更有效率。
cron設定檔在Debian系統下的位置
1 |
/etc/crontab |
大致內容如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# /etc/crontab: system-wide crontab # Unlike any other crontab you don't have to run the `crontab' # command to install the new version when you edit this file. # This file also has a username field, that none of the other crontabs do. SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # m h dom mon dow user command 17 * * * * root run-parts --report /etc/cron.hourly 25 6 * * * root test -x /usr/sbin/anacron || run-parts --report /etc/cron.daily 47 6 * * 7 root test -x /usr/sbin/anacron || run-parts --report /etc/cron.weekly 52 6 1 * * root test -x /usr/sbin/anacron || run-parts --report /etc/cron.monthly 0 20 1 * * root /usr/bin/updatedb # |
需要設定的是 # m h dom mon dow user command 下面的部份
由左至右代表的意義為
分 0-59
時 0-23
日 1-31
月 1-12
週 0-7
執行命令的使用者
命令
其中比較有意思的是週,0與7都代表星期日
而可以使用的特殊符號有
* (星號) 代表所有時間都接受
, (逗點) 代表同一個分類可以有多個值
– (減號) 代表在這個時段內執行
/n 代表每n個時間就執行一次
範例
30 12 * * * command:每天12:30執行command
0 6,12 15 * * command:每月15日的6:00與12:00執行command
10 8 1-15 6 * command:每年6月1至15日的8:10執行command
*/5 * * * 7 command:星期日每隔五分鐘執行一次command
定时器语法
就是上面计划任务的第一部分。它决定了何时执行计划任务。
它包含5部分:
1.分钟(0-59)
2.小时(0-23)
3.一个月的哪一天(1-31)
4.一年中的哪个月(1-12)
5.星期几(0是星期天)
星号
如果某个部分出现的是星号而不是数字,就是说明这个部分表示的时间全部会执行。
不太容易说清楚,看例子吧。
示例:
下面的计划任务会一直运行
* * * * * [command]
下面的计划任务会在每个小时的0分时运行(就是每小时执行一次)
0 * * * * [command]
下面依旧是一个每小时运行一次的计划任务。不过是在每个小时的一刻钟时运行的(1:15,2:15.。。)
15 * * * * [command]
下面的计划任务每天执行一次,在2:30分
30 2 * * * [command]
下面的计划任务是在每个月2号的午夜执行(比如:2010年2月2日00:00)
0 0 2 * * [command]
下面的计划任务会在每周一的每个小时0分钟时执行一次
0 * * * 1 [command]
下面的会每小时运行3次,在0分,10分,和20分时
0,10,20 * * * * [command]
下面是用除号“/”表示每多少运行一次。本例是每5分钟运行一次
*/5 * * * * [command]
还可以用“-”表示一个范围,如下表示5到10点的每个整点运行一次
0 5-10 * * * [command]
另外还有一个特殊的时间关键字“@reboot”,就是每次重启服务器时运行计划任务
@reboot [command]
设定和管理计划任务
编辑Crontab,来设定计划任务。使用下面的命令,会在vi里打开crontab的内容以供编辑:
crontab -e
如果你只想看看,不需要编辑,可以使用以下的命令
crontab -l
要删除crontab的内容,就是删除所有的计划任务,可以这样:
crontab -r
cron是个linux下的定时执行工具,能在无需人工干预的情况下运行作业。由于Cron 是Linux的内置服务,但他不自动起来,能用以下的方法启动、关闭这个服务:
编辑/etc/crontab 文件配置cron
cron服务每分钟不仅要读一次/var/spool/cron内的所有文件,还需要读一次/etc/crontab,因此我们配置这个文件也
能运用cron服务做一些事情。用crontab配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务。此文件的文件格式是:
1 2 3 4 5 6 7 8 9 |
SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root //如果出现错误,或者有数据输出,数据作为邮件发给这个帐号 HOME=/ //使用者运行的路径,这里是根目录 # run-parts 01 * * * * root run-parts /etc/cron.hourly //每小时执行/etc/cron.hourly内的脚本 02 4 * * * root run-parts /etc/cron.daily //每天执行/etc/cron.daily内的脚本 22 4 * * 0 root run-parts /etc/cron.weekly //每星期执行/etc/cron.weekly内的脚本 42 4 1 * * root run-parts /etc/cron.monthly //每月去执行/etc/cron.monthly内的脚本 |
大家注意”run-parts”这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名了。
Linux
1 |
#/etc/rc.d/init.d/crond restart |