功能:使用crontab命令装载cron进程所需要的crontab文件。
格式:
格式1:crontab
格式2:crontab
其中:
-u
-l:在标准输出上显示当前的crontab任务。
-r:删除当前的crontab任务。
-e:使用环境变量指定的编辑器编辑crontab文件。
filename:是一个crontab文件的来源文件
crontab文件的来源文件存在的形式
一个符合语法规则的纯文本文件,使用第2种格式的crontab命令装载
使用第2种格式的crontab命令时,它是一个文本编辑器(如vi)的临时文件,
编辑结束自动装载
crontab文件的来源文件的格式
每一行格式为:
minute
其中:
minute:一小时中的哪一分钟(0~59)
hour:一天中的哪个小时(0~23)
day-of-month:一月中的哪一天(1~31)
month-of-year:一年中的哪一月(1~12)
day-of-week:一周中的哪一天(0~6)
username:以指定的用户身份执行commands
commands:执行的命令(可以是多行命令或者是脚本调用)
五个时间字段的语法说明
不能为空,可以使用统配符*表示任何时间。
可以指定多个值,它们之间用逗号间隔。例如:1,3,7。
可以指定时间段,用减号间隔。例如:0-6。
可以用/n表示步长。例如:8-18/2表示时间序列8,10,12,14,16,18
这是我刚刚学习到的新知识,拿来和大家分享
部分参数说明
crontab
crontab
crontab
crontab-e[user]-编辑用户目前的crontab.
crontab-d[user]-删除用户目前的crontab.
crontab-c
crontab文件的格式:M
M:
H:小时(0-23)。
D:天(1-31)。
m:
d:
cmd要运行的程序,程序被送入sh执行,
这个shell只有USER,HOME,SHELL这三个环境变量。
下面是一个例子文件:
#MIN
#每天早上6点
106*
#每两个小时
0*/2*
#晚上11点到早上8点之间每两个小时,早上部点
0
#每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
0
#1月份日早上4点
0
范例
lark:~>crontab-1
#MIN
10
0*/2*
0
lark:~>
像大部分
这类工作可能频繁到几分钟一次,也可能一年只有一次。
这些工作可以使用
cron
然而,
在其他的发行版,排程资讯位於系统的
您可以指定整数的时间要素
或者用``*''
(例如
一些例子:
30
#
00
00
00
00
注意该指令会输出到一个标准出口
给
在多出的标准
/etc/cron.hourly/
/etc/cron.daily/
/etc/cron.weekly/
crontab
crontab文件格式:
minute
(0~59)
其中:星号可以匹配所有字符;一个整数必须精确匹配;用短划线隔开的两个整数,他们匹配的是值的范围;一系列用逗号隔开的整数或者范围,匹配任何被列到的值。
例如:
不要把星号放在第一个字段,除非你想这个命令每分钟都执行。
weekday与day若同时指定,则满足二者之一即被执行。
例如:0,30
command就是要执行的sh命令,可以是任意有效的shell命令,并且不应该加引号。cron
cron使用百分号(%)来表示command字段的换行。只有第一个百分号前的文本才会包含在实际命令中,其余行则作为该命令的标准输入。
例如:
echo
write
cd
30
20
每天凌晨1:20删除/tmp目录中的3天内未被访问的所有文件
55
除了星期四、五外每天23:55
管理crontab
crontab
crontab
然后将其重新提交给crontab目录(/var/spool/cron)。
crontab
crontab
不带命令行的crontab将试图从他自己的标准输出中读取crontab内容。如果意外进入,不要试图使用Ctrl-D退出,那样会删除整个crontab内容,而要使用Ctrl-C退出。
对于root,有这样的命令:crontab
默认情况下,所有用户都可向cron提交crontab文件。
其默认的用户配置文件是:
如果没有这两个文件的话,只有root才能提交crontab。
重要的是,访问控制是由crontab而不是cron来实现的。
如果某用户可通过其他方式把crontab秘密转移到适合目录中去,
那么cron就会盲目地执行该文件中的命令。
Linux预安装好的crontab项主要在/etc/cron.d下,
如果想使某项不起作用,可以注释掉。
另外,还有/etc/cron.daily
/etc/weekly
常见用途:
清理文件系统
find
删除一星期都没访问过的core映象文件(程序崩溃时产生的映象文件)。
find
删除以
cd
递归删除/tmp下的72小时未修改的所有子目录。
/tmp下的普通文件会在系统启动时被系统启动脚本删除,但有些系统不会删除目录。