首先,要用超级用户登录系统,然后在/usr/spool/cron/crontabs目录下,找到文件名为root的文件(在UNIX *** 作系统下,通常在该目录下都会有该文件,如果没有该文件,则可以创建一个),然后用vi编辑器,在该文件中,腊塌按照下面的格式,添加所要计划运行的任务:
20 17 * 3,5 * /usr/cite/uptty_t.sh 4 tty67h
#30 18 * * */usr/cite/shell/killtty.sh tty67h
0 16 * * 1-5 /usr/cite/shell/killtty.sh tty65h
上面的每一行代表一个任务,每行有六个字段组成,每个字段间用空格分举尘开,前5个字段由整数表示,为时间,最后一个字段为要运行的程序,顺序为:
分钟(0-59) 小时(0-23) 日(1-31) 月(1-12) 星期(0-6) 要运行的程序
每个字段可用“-”号连接两个数表示一个范围,或用“,”分开几个数,表示任一轮答圆数确定的时间;或用“*”表示该段省缺,即该字段所有有效值都合法。
每行最前面的#号表示该行是注释行。星期字段中0代表星期天,6代表星期六。
添加完所要增加的计划任务后,保存并退出vi编辑器。然后执行下列命令:
crontab root
这个命令把root文件中的内容复制到crontab文件中,一次只能有一个crontab文件。注意,root文件按要求输入并保存好后,一定要执行上面的命令,否则所添加的计划任务不会按要求执行。在某些系统中,并不是所有用户都能使用crontab。目录/etc/cron.d 或 /usr/lib/cron中的cron.allow文件列出了可以使用crontab的用户登录名,如果没有这个文件,则文件/usr/lib/cron/cron.deny中列出了不可以使用crontab的用户名。如果该文件存在,但文件是空的,则每个人都可以使用crontab。如果两个文件都不存在,则只有系统超级用户可以使用crontab。
在使用上面方法进行定时自动运行指定程序的时候,要注意在被执行的程序中,要用cd命令将工作目录切换到指定目录下,否则程序有可能运行不正常。
应用举例:
假如每天要在18:30自动删除/usr/switch/BACKUP/DB/FULL目录下的当前计算机系统日期前2天产生的所有文件(包括该目录下所有子目录里前2天产生的所有文件),则要在/usr/spool/cron/crontabs/root文件中添加下列一行:
30 18 * * * /usr/spool/cron/crontabs/cj.sh
添加完上面一行后,保存退出vi编辑器,然后执行下列命令:
crontab root
这样每天18:30系统就会自动删除/usr/switch/BACKUP/DB/FULL目录下的当前计算机系统日期前2天产生的所有文件(包括该目录下所有子目录里前2天产生的所有文件)。
可执行文件cj.sh存放在/usr/spool/cron/crontabs目录下,注意该文件必须被赋予执行权。该文件的内容为:
cd /usr/switch/BACKUP/DB/FULL
find . -type d -atime +2 -exec /bin/rm -r '{}' 2>/dev/null \
find . -type f -atime +2 -exec /bin/rm -r '{}' 2>/dev/null \
cp /usr/spool/cron/crontabs/db_serio.dat .
cp /usr/spool/cron/crontabs/ftptmp .
cp /usr/spool/cron/crontabs/backuphead .
chmod 777 ftptmp
chmod 777 backuphead
chown switch *
chgrp informix *
注意:在该被执行的程序cj.sh中,用cd /usr/switch/BACKUP/DB/FULL
命令将工作目录切换到了指定目录下,保证程序中第二行语句和第三行语句find . -type d -atime +2 -exec /bin/rm -r '{}' 2>/dev/null \和find . –type f -atime +2 -exec /bin/rm -r '{}' 2>/dev/null \能正确执行。
在find . -type f -atime +2 -exec /bin/rm -r '{}' 2>/dev/null \语句中,选项-atime +2是表示找出最近2天前访问过的文件(日期从运行可执行程序cj.sh时的那个时间算起,从该时间起24小时以内算当天),该选项还可以有下列值:
-ctime n: 找出n天前、后或n天改变的文件,包括权限改变的文件;
-mtime n: 找出n天前、后和当天修改或写入的文件。
选项 –exec 命令 ‘{}’ \对每个匹配的文件运行命令。指定的命令必须跟换义分号(\)。在命令运行时, ‘{}’变元替换当前文件名。该选项也可以用下列值:
-ok 命令 ‘{}’ \同 –exec,但执行命令前先要用y响应。
选项 -type f 是查找普通文件;选项 –type d 是查找目录。
命令 /bin/rm –r在这里是删除指定目录/usr/switch/BACKUP/DB/FULL下的文件或目录(由选项 –type f 或-type d来指定),如果是删除普通文件(由选项 –type f指定),则包括该目录下所有子目录里满足指定时间的文件。
Linux中,周期执行的任务一般由cron这个守护进程来处理 ps -ef | grep cron
cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间。
cron的配置文件称为“crontab”,是“cron table”的简写。
一、 cron在3个地方查找配置文件(设置shell脚本):
1、/var/spool/cron/yanggang 这个目录下存放的是每个用户(包括root)的和携crontab任务,每个任务以创建者的名字命名,比如用户tom建的crontab任务对应的文件是/var/spool/cron/tomyanggang@barry$ sudo ls -l /var/spool/cron/(或有时是 /var/spool/cron/crontabs/)
-rw------- 1 root crontab 1071 2011-09-19 17:20 root
-rw------- 1 yanggang crontab 1176 2011-09-24 11:07 yanggang
一般一个用户最多只有一个crontab文件(如:root, yanggang等),其对应日志在/var/spool/mail/root(或/var/spool/mail/yanggang)文件里
2、/etc/crontab 这个文件负责安排由系统管理员制定的维护系统以及其他任务的crontab。SHELL=/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=rootHOME=/
# .---------------- 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
例如:
*/5 * * * * root /usr/libexec/atrun
minute:代表一小时内的第几分,范围 0-59。
hour:代表一天中的第几小时,范围 0-23。
mday:代表一个月中的第几天,范围 1-31。
month:代表一年中第几个月,范围 1-12。
wday:代表星期几,范围 0-7 (0及7都是星期天)。
who:要使用什么身份执行该指唤缺伏令,当您使用 crontab -e 时,不必加此字段。
command:所要执行的指令。
3、/etc/cron.d/ 这个目录用来存放任何要执行的crontab文件或脚本。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)