我和linux的第三十二天

这几天学习的东西是有关系统运维方面的,比前面简单些。加油。


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-mat的工作完成后,即使没有输出信息,以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年的11日寄出一封给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.周一至周五的1530,执行脚本/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


本文出自 “开忈的主题” 博客,谢绝转载!

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。