14.5 系统资源的定时调用
Solaris操作系统支持系统资源的定时调用。本节将介绍系统管理员如何通过相关命令和设置,按照事先定好的时间调用系统资源。
14.5.1 系统资源的循环定时调用
可以使用crontab将系统设定在每天、每周和每月的某个时刻自动运行某个命令或者应用程序,实现系统资源的循环定时调用。在不需要人工干预的情况下,还可以设定好将系统执行信息记录在某个文件之中,我们定期查看这些文件,以了解系统执行情况。
1.crontab命令的使用
命令介绍:
crontab
参数:
-e:执行文字编辑器来设定时程表,内定的文字编辑器是VI。
-r:删除目前的时程表。
-l:列出目前的时程表。
时程表的格式如下:
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的方式来设定时程表。
例14-25 使用crontab实现定时执行。
每月每天每小时的第0分钟执行一次/bin/ls:
0 * * * * /bin/ls
在12月内,每天早上6点到12点钟之间,每隔20分钟执行一次/usr/bin/backup:
0/20 6-12 * 12 * /usr/bin/backup
周一到周五每天下午5:00寄一封信给
aleex@domain.name:
0 17 * * 1-5 mail -s "hi"
aleex@domain.name < /tmp/maildata
每月每天的午夜0点20分,2点20分,4点20分……执行echo "haha":
20 0-23/2 * * * echo "haha"
2.如何控制用户使用crontab命令
控制使用crontab命令的文件存在/etc/cron.d目录下,即cron.deny和cron.allow两个文件。这两个文件与用户名相联系,一个用户名在文件中列为一行。控制文件是这样工作的:
如果cron.allow文件存在,只有列在文件中的用户才能创建、编辑、显示和删除crontab文件。
如果cron.allow不存在,除列在cron.deny文件中用户名的用户外,所有用户都能创建、编辑、显示和删除crontab文件。
如果cron.allow和cron.deny文件都不存在,只有超级用户才能使用crontab命令。
cron.deny文件系统初始化安装时就已经存在,cron.deny默认的内容如下:
$ cat /etc/cron.d/cron.deny
daemon
bin
smtp
nuucp
listen
nobody
noaccess
列在cron.deny中的用户都不能使用crontab命令。你可以编辑文件以添加或删除用户名。
而cron.allow文件在默认情况下是不存在的,必须由用户创建。所以,当系统刚安装好后,除了列在cron.deny用户外,其他所有用户都可以使用crontab命令。如果你建立cron.allow文件,那么就只有列在这个文件中的用户可以使用crontab命令。