at & cron 排程管理

参考:

  • man at
  • man crontab

为什么需要工作排程? 排程对於许多管理者来说,是非常重要的一个工作,因为这可以省去大部份的时间来做相同的事,只要您下达好指定的时间,那么时间一到,系统就会自动把您的工作都完成,如此一来您也不用盯者营幕去看那重覆又无聊事了。

排程工具

在 Linux 上,用来排程的工具有两种,一种是 at,而另一种是 cron,这两种有各别不同使用的地方,at 工具只会执行一次您所指定的工作,一旦该工作执行之后,就会自动删除该项工作;而 cron 工具则是一直循环下去,会在指定的日期、时间执行工作。我们将会示范这两种工具的使用方法。

at

at 工具是用来指定下一次工作的时刻,完整的用法如下:

at -f [FILENAME] TIME

参数介绍:

-f 执行指定档案的内容,一般会直接指定可执行的档案。

范例:

在今天的下午 5 点 33 分执行 /root/test.sh。

# at /root/test.sh 5:33pm

在 2004 年 7 月 10 日的早上 10 点 执行 /root/test.sh 档案。

# at -f /root/test.sh 10:00am 7/10/2004

at 还分别有另外的两个工作,atq 和 atrm,它们是用来查寻目前目排程的工作和移除所指定的排程工作。

# atq
6 2004-07-10 10:00 a root
#

从上面可以看到程排的序号 6 中,有所指定的排程,如果要移除 6 号排程的话,可以使用 atrm 这个指令来移除

# atrm 6

执行完之后然后下一次 atq 来看看,看看 6 号工作是否已被删除。

# atq
#

如此 6 号的排程就被删除了。

cron

cron 是目前最常用来做指定排程的工作,因为它可以指定持续性的排程,比方说指定每天的固定时间做指定的事项。在指定排之前,必需要排程的工作填写好,如此才能依照所指定的时间来启动工作。

cron 的格式

cron 的格式分为 6 栏,每个栏位使用一个空白分开;分别为:

[minute] [hour] [day of month] [month] [day of week] [Command]

以上的范围分别为:

  • minute 0-59
  • hour 0-23
  • day of month 1-31
  • month 1-12
  • day of week 0-7 (0 和 7 代表礼拜天)

而 Command 指的是要执行的档案。

了解了格式之后,可以开始指定行程了。要指定行程,要下 crontab -e 这个指令,预设会开启 vi 编辑器来编辑。

# crontab -e
____________________________________________________________________
#每天的凌晨 12 点程中午 12 点执行一次 /root/virus/get_virus_def.sh 这个档案
0 0,12 * * * /root/virus/get_virus_def.sh > /dev/null 2>&1

#每五分钟执行一次 /root/net/ping.sh
*/5 * * * * /root/net/ping.sh > /dev/null 2>&1

#每个礼拜一的凌晨 1 点执行备份 /root 的工作
0 1 * * 1 /bin/tar -zcvf /backup/root.tar.gz /root > /dev/null 2>&1

:__________________________________________________________________
d

注意事项

  • 启用 crond

使用 cron 排程时,请先确定 crond 这个服务是否有启动,如果您已加入排程了,但一直没有动作,那么有可能是您的 crond 这个服务没有启动。

请输入以下指令:

# cd /etc/init.d
# ./crond start
#

这样,就可以启动排程工作了。

  • 如何防止 cron 不断寄信到指定者信箱

当 cron 完成了您所指定的工作时,会马上寄出一份工作项目给您,这样固然是好意,但是如果今天做的是重覆而且频繁的工作时,比如说

5 分钟监控流量一次,那么不就会每 5 分钟就寄一次信了吗?为了防止这样的事发生,就必需加入一些设定:

*/5 * * * * /root/net/ping.sh > /dev/null 2>&1

其中,> /dev/null 2>&1 指的是,不论执行正不正确,都不要寄信到指定者的信箱,也是说不通知执行结果。

 
Index