例行性命令解析
时间:2010-09-16 来源:cup
例行性命令就是任务计划,在计算机中设置一些任务计划,告诉计算机在某个时间自动执行哪些命令,设置例行性命令可以有效的减少系统管理员繁琐的工作,例行性命令使用举例如下:
程序分析:每隔一段时间,就自动对系统中的进程进行分析,查看是否有僵尸进程,如果有,将其删除,保证内存空间的有效使用。
Locate数据库的建立:locate搜索的速度非常快,是因为linux将文件和路径都记录在数据库中,使用locate命令的时候,直接指向数据库/var/lib/slocate/slocate.db,所以要定时更新此数据库,不然刚刚更新的一些文件,没有被更新到数据库中,有可能找不到。
例行性命令有两种:at和cron
At:仅执行一次就从linux系统任务分配中消失。
Cron:工作将周期性的持续执行,每隔一段时间就会执行一次。
执行例行性命令之前需将atd和crond服务开启,#chkconfig –list|grep atd(crond)查看,
#/etc/init.d/atd start开启服务
At:仅执行一次的任务
首先查看/etc/at.allow和/etc/at.deny文件,在/etc/at.allow中的帐号才可以使用at命令,如没有/etc/at.allow则查看/etc/at.deny在此文件中的帐号则不能使用at命令。
[root@localhost ~]# at 15:20 2010-9-16 #设置at任务
at> /bin/sync
at> reboot
at> <EOT> #at任务输入完毕后,ctrl+d退出
job 2 at 2010-09-16 15:20
[root@localhost ~]# atq #使用atq查看当前有哪些at任务分配
2 2010-09-16 15:20 a root #2010/9/16 15:20有一项工作,该工作的执行者为root,该工作的工作号为2
如果发现命令输入错误,如想取消上述关机命令,则可以:
[root@localhost ~]#atrm 2 #取消工作号为2的工作
[root@localhost ~]#atq #查看当前有哪些任务在执行,没有则表明已经取消该工作
Crontab:例行性周期执行的任务
首先查看/etc/cron.allow和/etc/cron.deny文件,在/etc/cron.allow文件中的账户可以使用crontab命令,如没有/etc/cron.allow则查看/etc/cron.deny在此文件中的账号则不能使用cron命令。
针对用户的例行性任务
[root@localhost ~]#crontab [-u username] [-l|-e|-r]
-u:只有root才能执行这个命令,即帮助其他用户创建/删除crontab。
-e:编辑crontab,即进入crontab编辑模式。
-l:查看crontab文件的内容
-r:删除crontab文件的内容;注:要是删除某一项的内容,只能使用crontab –e手动删除
基本格式:
* * * * * command
分 时 日 月 周 命令
0~59 0~23 1~31 1~12 0~7
*表示任何时间都接受;任何时间都可以执行该命令
,表示分隔时段;0 2,4 * * * command 表示2点和4点都会执行该命令
-表示一段时间范围内;5 2-4 * * * command 表示2点和4点内的每小时5分钟都会执行该命令
/n表示每隔多长时间单位;*/5 * * * *command表示每隔5分钟执行一次该命令
[root@localhost ~]# cat hello
#!/bin/bash
#hello
echo hello
[root@localhost ~]# crontab -l
0 21 * * * /root/./hello> /root/a #每天21点将hello脚本信息输出到/root/a中,默认情况屏幕上看不到任何输出,cron把任何输出都email到root的信箱中。
针对系统的例行性任务
使用root对/etc/crontab进行编辑,可以设置系统的例行性任务。
设置完/etc/crontab文件需要重启crond服务才能使设置生效 /etc/init.d/crond restart
[root@localhost bin]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
MAILTO=root:当/etc/crontab文件中的例行性命令发生错误或执行结果有STDOUT/STDERR时,默认由系统发送一封邮件给root,可以将MAILTO=后面的地址改成自己邮箱地址,如[email protected],以随时了解系统情况。
PATH=/sbin:/bin:/usr/sbin:/usr/bin:输入执行文件的搜索路径,保持默认即可。
HOME=/:使用者运行的路径,此处为根目录
01 * * * * root run-parts /etc/cron.hourly:
root表示执行命令的身份为root,可以改成其他用户。
run-parts后面接/etc/cron.hourly目录中所有可执行文件;即每小时01分,系统会以root身份在/etc/cron.hourly下执行所有的可执行文件。
可以将每天需要执行的命令放置到/etc/cron.daily中,无需使用crontab –e。
/etc/crontab文件中的命令支持两种执行命令的方式;
直接执行命令:
0 1 * * *root /root/./hello> /root/a #以root身份每天1点执行hello脚本,将其输出到文件a中
目录规划:
*/5 * * * *root run-parts /root/five #建立/root/five目录,将每隔五分钟执行一次的执行文件放置在此目录中,每隔五分钟执行目录中的所有可执行文件
run-parts,如果去掉此参数,后面就可以写要运行的某个脚本名,而不是目录名
30 21 * * * /etc/init.d/network restart 每晚21:30重启network服务
30 21 * * */usr/local/etc/rc.d/atd restart每晚21:30重启network服务