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

我们知道,在WINDOWS操作系统下,操作系统已经提供了实现定时自动运行指定程序的功能,即只要利用操作系统提供的计划任务程序(通常在“开始”--“程序”-... 我们知道,在WINDOWS操作系统下,操作系统已经提供了实现定时自动运行指定程序的功能,即只要利用操作系统提供的计划任务程序(通常在“开始”--“程序”----“附件”----“系统工具”------“计划任务”中),根据“添加已计划的任务”所提供的计划任务向导,就可以很容易地将要定时自动运行的任务添加到计划任务中。但在UNIX操作系统下,如何实现定时自动运行指定程序,则较少有人知道。 展开
 我来答
czbb陈
2017-11-10
知道答主
回答量:8
采纳率:100%
帮助的人:6621
展开全部
我们知道,在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指定),则包括该目录下所有子目录里满足指定时间的文件。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式