at : 这个工作仅执行一次就从 Linux 系统中的排程中取消;
cron : 这个工作将持续例行性的作下去!
at命令
既然是工作排程,那么自然要有写入工作的纪录档啰!没错啦!
我们可以使用 at
这个指令来帮忙写入工作纪录档,工作纪录档预设的放置目录在 /var/spool/at 底下,在写入 at
记录档后,该工作便进入排程当中并等待执行。 当然啦,要让 /var/spool/at 目录底下的工作被实际运作,必须要启动我们上面提到的 atd
那个服务啦!
不过,并不是所有的人都可以进行 at 工作排程喔!为什么?因为安全的理由啊~
很多主机被所谓的绑架后,最常发现的就是他们的系统当中有很多的怪客程式 (cracker program)
被写入例行性命令的排程当中了,所以,那些可恶的程式就可能定时或不定时的在你的系统当中工作, 呵呵!所以啰,除非是您认可的帐号,否则先不要让他们使用 at 吧!
此外,我们可以利用 /etc/at.allow 与 /etc/at.deny 这两个档案来进行 at 的使用限制呢! 加上这两个档案后, at
的工作情况其实是这样的:
- 先找寻 /etc/at.allow 这个档案,写在这个档案中的使用者才能使用 at ,没有在这个档案中的使用者则不能使用 at (
即使没有写在 at.deny 当中 );
- 如果没有 /etc/at.allow 就寻找 /etc/at.deny 这个档案,若写在这个 at.deny 的使用者则不能使用 at
,而没有在这个 at.deny 档案中的使用者,就可以使用 at 咯;
- 如果两个档案都不存在,那么只有 root 可以使用 at 这个指令。
上面的情况说明了,其实我们只要有 at.deny
这个档案存在就好了,因为我们假设系统内的帐号都是懂得操作的使用者, 因此,预设让他们可以任意使用 at 这个好用的东西!这也是系统的预设值。我们的 FC4
预设也是只有 /etc/at.deny 存在,而且该档案内并未有任何帐号资料!这表示任何人均可使用 at 啦!不过,万一你不希望有某些使用者使用 at
的话,将那个使用者的帐号写入 /etc/at.deny 即可! 一个帐号写一行。
crontab命令
例题:假若你的女朋友生日是 5 月 2 日,你想要在 5 月 1 日的 23:59 发一封信给他,这封信的内容已经写在
/home/dmtsai/lover.txt 内了,该如何进行?
答:
直接下达 crontab -e 之后,编辑成为:
59 23 1 5 * mail kiki <
/home/dmtsai/lover.txt
那样的话,每年 kiki
都会收到你的这封信喔!(当然啰,信的内容就要每年变一变啦!)
01 * * * * root run-parts
/etc/cron.hourly:
五个数字后面接的是 root
喔!没错,与 crontab -e 的内容是不太一样的!这个栏位的 root 代表的是‘
执行的使用者身份为
root ’当然啰,你 也可以将这一行改写成其他的身份哩!而 run-parts 代表后面接的 /etc/cron.hourly 是‘
一个目录内(/etc/cron.hourly)的所有可执行档 ’,这也就是说,
每个小时的 01 分,系统会以 root 的身份去 /etc/cron.hourly/
这个目录下执行所有可以执行的档案!后面的三行也都是类似的意思!你可以到 /etc/
底下去看看,系统本来就预设了这四个目录了!你可以将每天需要执行的命令直接写到 /etc/cron.daily/ 即可,还不需要使用到 crontab -e
的程式呢!方便吧
基本上, /etc/crontab 这个档案里面支援两种下达指令的方式,一种是直接下达指令, 一种则是以目录来规划,例如:
- 指令型态
01 * * * * dmtsai
mail -s "testing" kiki < /home/dmtsai/test.txt
以 dmtsai
这个使用者的身份,在每小时执行一次 mail 指令。
- 目录规划
*/5 * * * * root
run-parts /root/runcron
建立一个 /root/runcron
的目录,将要每隔五分钟执行的‘可执行档’都写到该目录下, 就可以让系统每五分钟执行一次该目录下的所有可执行档。