linux crontab需要指定目录,Linux crontab 命令详解(含配置文件路径)

Linux——Crontab使用详解名称 :

crontab

使用权限 : 所有使用者

使用方式 :

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.

基本格式

:

*  *  *  *  *  command

分  时  日  月

周  命令

M:

分钟(0-59)。每分钟用*或者 */1表示

H:小时(0-23)。(0表示0点)

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 的方式来设定时程表。

例子 :

#每天早上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.

/usr/lib/cron/cron.allow表示谁能使用crontab命令。如果它是一个空文件表明没有一个用户能安排作业。如果这个文件不存在,而有另外一个文件/usr/lib/cron/cron.deny,则只有不包括在这个文件中的用户才可以使用crontab命令。如果它是一个空文件表明任何用户都可安排作业。两个文件同时存在时cron.allow优先,如果都不存在,只有超级用户可以安排作业。

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

例子:

每两个时间值中间使用逗号分隔。

除了数字还有几个个特殊的符号就是”*”、”/”和”-”、”,”,*代表所有的取值范围内的数字,”/”代表每的意思,”*/5″表示每5个单位,”-”代表从某个数字到某个数字,”,”分开几个离散的数字。

每天早上6点

0 6 * * * echo "Good morning."

>> /tmp/test.txt

//注意单纯echo,从屏幕上看不到任何输出,因为cron把任何输出都email到root的信箱了。

每两个小时

0 */2 * * * echo "Have a break

now." >> /tmp/test.txt

晚上11点到早上8点之间每两个小时,早上八点

0 23-7/2,8 * * * echo "Have a good

dream:)" >>

/tmp/test.txt

每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点

0 11 4 * 1-3 command

line

1月1日早上4点

0 4 1 1 * command

line

每次编辑完某个用户的cron设置后,cron自动在/var/spool/cron下生成一个与此用户同名的文件,此用户的cron信息都记录在这个文件中,这个文件是不可以直接编辑的,只可以用crontab

-e

来编辑。cron启动后每过一份钟读一次这个文件,检查是否要执行里面的命令。因此此文件修改后不需要重新启动cron服务。

2.编辑/etc/crontab

文件配置cron

cron

服务每分钟不仅要读一次/var/spool/cron内的所有文件,还需要读一次/etc/crontab,因此我们配置这个文件也能运用cron服务做一些事情。用crontab配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务。此文件的文件格式是:

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"这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名了。

5,15,25,35,45,55 16,17,18 * * *

command

这就是表示任意天任意月,其实就是每天的下午4点、5点、6点的5

min、15 min、25 min、35 min、45 min、55 min时执行命令。

[例]

在每周一,三,五的下午3:00系统进入维护状态,重新启动系统。那么在crontab

文件中就应该写入如下字段:

00 15 * * 1,3,5 shutdown -r

+5

然后将该文件存盘为foxy.cron,再键入crontab

foxy.cron安装该文件。

[例]

每小时的10分,40分执行用户目录下的innd/bbslin这个指令:

10,40 * * * *

innd/bbslink

[例]

每小时的1分执行用户目录下的bin/account这个指令:

1 * * * * bin/account

[例]

每天早晨三点二十分执行用户目录下如下所示的两个指令(每个指令以;分隔):

20 3 * * * (/bin/rm -f expire.ls

logins.bad;bin/expire$#@62;expire.1st)

[例]

每年的一月和四月,4号到9号的3点12分和3点55分执行/bin/rm -f

expire.1st这个指令,并把结果添加在mm.txt这个文件之后(mm.txt文件位于用户自己的目录位置)。

12,55 3 4-9 1,4 * /bin/rm -f

expire.1st$#@62;$#@62;mm.txt

[例]

我们来看一个超级用户的crontab文件:

#Run the ‘atrun’ program every

minutes

#This runs anything that’s due to

run from ‘at’.See man ‘at’ or ‘atrun’.

0,5,10,15,20,25,30,35,40,45,50,55

* * * * /usr/lib/atrun

40 7 * * * updatedb

8,10,22,30,39,46,54,58 * * * *

/bin/sync

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值