在UNIX *** 作系统下如何实现定时自动运行指定程序

在UNIX *** 作系统下如何实现定时自动运行指定程序,第1张

我们知道,在WINDOWS *** 作系统下, *** 作系统已经提供了实现定时自动运行指定程序的功能,即只要利用 *** 作系统提供的计划任务程序(通常在“开始”--à“程序”----à“附件”----à“系统工具”------à“计划任务”中),根据“添加已计划的任务”所提供的计划任务向导,就可以很容易地将要定时自动运行的任务添加到计划任务中。但在UNIX *** 作系统下,如何实现定时自动运行指定程序,则较少有人知道。其实,在UNIX *** 作系统下, *** 作系统同样也提供了定时自动运行指定程序的功能,下面就如何利用UNIX *** 作系统提供的这一功能,实现在UNIX *** 作系统下定时自动运行指定程序的方法做一介绍。

首先,要用超级用户登录系统,然后在/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文件或脚本。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12425035.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存