linux定时运行命令

在Ubuntu 10.04下,cron是被默认安装并启动的。通过/etc/crontab文件,可以看到以下内容:

SHELL=/bin/sh     #设置SHELL系统变量
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin  #设置系统命令搜索路径

# 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 ) #执行每月的任务脚本

可以通过以下命令启动/停止等操作cron服务,(有些系统下的命令可能是crond,根据实际情况来使用命令)

sudo cron start //启动服务
sudo cron stop //关闭服务
sudo cron restart //重启服务
sudo cron reload //重新载入配置

直接用crontab命令编辑任务

crontab命令有三种形式的命令行结构:
crontab [-u user] [file]
crontab [-u user] [-e|-l|-r]
crontab -l -u [-e|-l|-r]
第 一个命令行中,file是命令文件的名字。如果在命令行中指定了这个文件,那么执行crontab命令,则将这个文件拷贝到crontabs目录下;如果 在命令行中没有制定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将他们也存放在crontab目录下。
cron服务提供crontab命令来设定cron服务的,以下是一些参数与说明:
crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数
crontab -l //列出某个用户cron服务的详细内容
crontab -r //删除没个用户的cron服务
crontab -e //编辑某个用户的cron服务
比如说root查看自己的cron设置:crontab -u root -l
再例如,root想删除fred的cron设置:crontab -u fred -r
在编辑cron服务时,编辑的内容有一些格式和约定,输入:crontab -u root -e

以下是 crontab 文件的格式:

{minute} {hour} {day-of-month} {month} {day-of-week} {full-path-to-shell-script}

# .---------------- minute (0 - 59) 
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ... 
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7)  OR
#sun,mon,tue,wed,thu,fri,sat 
# |  |  |  |  |
# *  *  *  *  *  command to be executed

# m h  dom mon dow   command

16 19  *  *   *   root echo "hello"   #每天19:16 执行echo "hello"

第一到第五个字段的整数取值范围及意义是:
    0~59 表示分
    1~23 表示小时
    1~31 表示日
    1~12 表示月份
    0~6 表示星期(其中0表示星期日)

示例如下:

每小时执行/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"这个参数了,如果去掉这个参数的话,后面就是要运行的某个脚本名(可能要指定全路径),而不是文件夹名。 

在每个时间字段中可以使用逗号隔开多个时间段, 示例如下:
每天的下午4点、5点、6点的5 min、15 min、25 min、35 min、45 min、55 min时执行命令。 
5,15,25,35,45,55     16,17,18   * * *  command

每周一,三,五的下午3:00系统进入维护状态,重新启动系统。
00 15 * * 1,3,5 shutdown -r +5

使用crontab实现每天指定关机

$ sudo vim /etc/crontab

#在该文件中添加如下命令

30 23   * * *   root    poweroff     #每天23:30关闭计算机

编辑完配置文件后,如果要立即生效就需要使用命令重启cron服务

$sudo restart cron

猜你喜欢

转载自yefzhu.iteye.com/blog/1562190