这几天学习的东西是有关系统运维方面的,比前面简单些。加油。
linux系统的例行性工作
两种工作调度方式:
一种是例行行的,就是每隔一定的周期要来办的事;
一种是突发性的,就是一次完成后就没有第二次。
linux中常见的例行性工作:
进行日志文件的轮替(log rotate);
日志文件分析logwatch的任务;
新建locate的数据库;
whatis数据库的建立;
RPM软件日志文件的新建;
删除临时文件;
与网络服务有关的分析行为。
仅执行一次的工作调度:at
启用atd:/etc/init.d/atd restart 开机时就启用:chkconfig atd on
at的运行方式:使用at命令来生产所要运行的工作,并将这个工作以文本文件的方式写入/etc/spool/at/目录内,该工作便能等待atd这个服务的取用与执行了。
at工作流程:
1.先寻找/etc/at.allow这个文件,卸载这个文件中的用户才能使用at,没有在这个文件中的用户则不能使用at(即使没有写在at.deny中);
2.如果/etc/at.allow不存在,就寻找/etc/at.deny这个文件,若写在这个at.deny的用户则不能使用at,而没有在这个at.deny文件中的用户就可以使用at;
3.如果两个文件都不存在,那么只有root可以使用at这个命令。
at [参数] TIME,-m当at的工作完成后,即使没有输出信息,以email通知用户该工作已完成、-l相当于atq,列出目前系统上面的所有该用户的at调度、-d相当于atrm,可以取消一个在at调度中的工作、-c可以列出后面接的该项工作的实际命令内容。
batch:系统有空时才进行的后台任务。它会在CPU工作负载小于0.8的时候,菜进行你所执行的工作任务。batch操作与at相同。
循环执行的例行性工作调度:crontab,系统默认启用。
/etc/cron.allow:将可以使用crontab的账号写入其中,若不在这个文件内的用户则不可以用crontab;
/etc/cron.deny:将不可以使用crontab的账号写入其中,若未记录到这个文件当中的用户,就可以使用crontab。
/etc/cron.allow比/etc/cron.deny优先执行,判断上面,这两个文件只选择一个来限制,一般来说,系统默认保留/etc/cron.deny。当用户使用crontab这个命令来新建工作调度之后,该项工作就会被记录到/var/spool/cron/里面,而且是以账号来作为判别的。
crontab [参数],-u只有root才能进行这个任务,帮其他用户新建/删除crontab工作调度、-e编辑crontab的工作内容、-l查阅crontab的工作内容、-r删除所有的crontab的工作内容。
crontab -e;
012***mail xeyes -s “at 12:00” < /hone/xeyes/.bashrc
分时日月周命令串
系统的例行性工作在文件/etc/crontab中,cron这个服务的最低检测限制是“分钟”,所以会每分钟读取一次/etc/crontab与/var/spool/cron里面的数据。
唤醒停机期间的工作任务:anacron
anacron并不是用来替代crontab的,anacron存在目的是处理非24小时一直启动的linux系统中的crontab的执行。所以anacron并不能指定何时执行某项任务,而是以天为单位或者是在开机后立刻进行anacron的操作,它会去检测停机期间应该进行但是并没有进行的crontab任务,并将该任务执行一遍,然后anacron就会自动停止。
所以anacron也是通过crontab来运行的,因此anacron运行的时间通常有两个,一个是系统开机期间运行,一个是写入crontab调度中。
anacron [参数],-s开始连续执行各项工作,会依据时间记录文件de数据判断是否进行、-f强制执行,不去判断时间记录文件的时间戳、-n立刻进行未进行的任务,不延迟(delay)时间、-u仅更新时间记录文件时间戳,不进行任何工作、job由/etc/anacrontab定义各项工作名称。
/etc/anacrontab;
165cron.dailyrun-parts /etc/cron.daily
天数延迟时间工作名称定义实际要进行的命令串
运行流程:
1.由/etc/anacrontab分析到cron.daily这项工作名称的天数为1天;
2.由/var/spool/anacron/cron.daily取出最近一次执行anacron时间戳;
3.由上个步骤与目前的时间比较,若差异天数为1天以上(包括1天),就准备进行命令;
4.若准备进行命令,根据/etc/anacrontab的设置将延迟65分钟;
5.延迟时间过后,开始执行后续命令,即“run-parts /etc/cron.daily”命令;
6.执行完毕后,anacron程序结束。
1.今天假设我有一个指令程序,名称为ping.sh。我想要让系统每三分钟执行这个文件一次, 但是偏偏这个文件会有很多的信息显示出来,所以我的root 帐号每天都会收到差不多四百多封的信件,光是收信就差不多快要疯掉了!那么请问应该怎么设置比较好呢?
A.crontab -e;*/3 * * * * ping.sh > /dev/null 2>&1。
2.您预计要在2015年的1月1日寄出一封给xeyes,只有该年才寄出!该如何执行指令?
A.at 00:00 2015-01-01;/bin/mail xeyes -s “Hello world” < letter.txt
3.执行crontab -e后,如果输入这一行,代表什么意思?30 15 * * 1-5 /usr/local/bin/tea_time.sh
A.周一至周五的15:30,执行脚本/usr/local/bin/tea_time.sh。
4.我用vim编辑/etc/crontab这个文件,我编辑的那一行是这样的:
25 00 * * 0 /usr/local/bin/backup.sh这一行代表的意义是什么?
A.语法错误,缺少执行者身份,无意义。
5.请问,您的系统每天、每周、每个月各有进行什么工作?
A.cat /etc/cron.*查看
6.每个星期六凌晨三点去系统查找一下含有有SUID/SGID的任何文件。并将结果输出到/tmp/uidgid.files
A.vim /etc/crontab;00 03 * * 6 root find / -perm +6000 > /tmp/uidgid.files。
本文出自 “开�岬闹魈�” 博客,谢绝转载!