仙游阁 2015-01-03
1.例行性排程有两中方式:
1)每隔一定周期就要来办的事项,用crontab指令实现
2)突发性的,就是这次做完后,就没有了用at指令实现,不过这个需要atd服务的支持
2.Linux常见的例行性任务有:
1)进行登录档的轮替:Linux会将系统所发生的各种信息都记录下来,这就是登录档,随着系统的运行这些登录档会越来越大,导致系统读写效能下降,因此就需要将这些数据按时间的新旧分别存放,这就是登录档的轮替任务
2)登录文件分析:如果系统发生了软件问题,硬件错误,资源安全问题等,绝大部分的错误都会被记录到登录文件中,因此系统管理员的重要任务之一就是分析登录档。但你不可能手动透过vim等软件去监视登录文件,因为数据太复杂了,因此系统提供了logwatch这只程序,来主动分析登录信息。
3)locate数据库的建立:存放在/var/lib/mlocate中,系统会主动在规定时间调用updatedb这条指令,更新这个数据库
3)whatis数据库的建立
4)RPM软件登录文件的建立:RPM是一种软件管理机制。由于系统可能会常常变更软件,包括软件的新安装,非经常性更新等,都会造成软件文件名的差异。为了方便未来追踪,系统也帮我们将文件名做个排序的记录。有时候系统也会透过排程来帮忙RPM数据库的重新建置
5)移除暂存档:软件运行会产生一些临时文件,但软件关闭后,这些临时文件可能还存在,如果超出一定的时间后,这个暂存盘就没有效用了,此时移除这些暂存盘就是一件重要的工作。否则磁盘会很快被耗光。
6)与网络服务相关的分析行为:如果安装了www网站服务软件,那么Linux通常会主动分析该软件的登录文件。同时某些凭证与认证的网络信息是否过期问题,我们的Linux系统也会帮我们自行检查
3.atd的启动与at的运行方式:
1)启动方式:/etc/init.d/atd restart(start ,stop)
2)at的运行方式:
a)先找寻/etc/at.allow这个档案,写在这个档案中的使用者才能使用at,没有在这个档案中的使用者则不能使用at
b)如果/etc/at.allow不存在,就寻找/etc/at.deny这个档案,若写在这个at.deny的使用者则不能使用at,而没有在这个at.deny档案中的使用者,就可以使用at这个指令了
c)如果两个档案都不存在,那么只有root可以使用at这个指令
3)通常系统默认所有的用户都是可信任的,因此系统通常会保留一份空的/etc/at.deny档案,不过万一你不希望某些使用者使用at指令,将那个使用者的账号写入/etc/at.deny即可,一个账号一行
4.at [-mldv] TIME;at -c 工作号码:单一工作排程,参数,
1)at的工作完成后,及时没有输出信息,也要给使用者发邮件,告知使用者该工作已完成
2)-l:atq的别名,列出目前系统上面的所有该用户的at排程
3)-d:at -d相当于atrm ,可以取消一个在at排程中的工作
4)-v:可以使用较明显的时间格式列出at排程中的任务栏表
5)-c:可以列出后面接的该项工作的实际指令内容。
6)TIME:时间格式,这里可以定义出设么时候要进行at这项工作的时间,格式有
HH:MM,在今日的HH:MM时刻进行,若该时刻已超过,则明天的这个点进行此工作
HH:MM YYYY-MM-DD,强制规定在某年某月的某一天的特殊时刻进行该工作
HH:MM[ap|pm] [Month][Date],强制在当前年,指定月日进行
HH:MM[ap|pm]+number[minutes|hours|days|weeks],可以用now指代当前时间,即在某个时刻后的多久执行该操作。
7)当我们使用at时会进入一个atshell的环境来让用户下达工作指令,此时,建议你最好使用绝对路径来下达你的指令,比较稳定,因为指令的下达与PATH变量有关,同时与当时的工作目录还有关。at在运行时,会跑到当时下达at指令的那个工作目录去执行指令
8)在at指令中下达echo "Hello"。不会显示到屏幕上,因为at的执行与终端机环境有关,而与标准输出或标准错误输出无关,如果想在终端机上看到信息可以通过echo "Hello" > /dev/tty1这个指令来实现。
9)由于at工作排程的使用上,系统会将该项at工作独立出你的bash环境中,直接交给系统的atd程序来接管,因此,当你下达了at的工作之后就可以立刻脱机了,剩下的工作交给Linux管理即可。如果有长时间的网络管理工作时,使用at可以让你免除网络断线的困扰。
5.batch:系统有空时才进行背景任务。batch是利用at来进行指令的下达。只是加入了一些控制参数。这个batch会在CPU工作负载小于0.8的时候,才进行工作你所下达的工作任务。负载是指CPU在单位时间所负责的工作数量(进程数),不同于CPU利用率,比如有一只程序他需要一直使用CPU的运算功能,那么此时CPU的使用率可能达到100%,但是CPU的工作负载则是趋近于1,如果同时执行两只程序,则负载是2
所以CPU的负载反映的是CPU需要在多少个不同工作之间切换。
6.循环执行的例行性工作排程:由cron(crond)这个系统服务来控制,同样可以通过/etc/cron.allow,/etc/cron.allow来进行限制该服务的使用名单。当用户使用crontab这个指令后,该项记录会被记录到/var/spool/cron/里面去,并且以账号作为判断。比如huge执行了crontab这个指令,他的工作会被记录到/var/spool/cron/huge里去。但不要直接使用vi直接编辑该档案,因为可能输入语法错误。会导致无法执行cron。另外,cron执行的每一项工作都会被记录到/var/log/cron这个登录档中,所以可以根据这个档案,来擦看是否有木马植入。
7.crontab [-u username] [-l|-e|-r]:循环执行例程任务,参数
1)-u:只有root才能执行这个任务,亦即帮其他使用者建立/移除crontab工作排程
2)-e:编辑crontab的工作内容
3)-l:查阅crontab的工作内容
4)-r:移除所有crontab的工作内容,若仅移除一项,使用-e比较好。
每项指令都有六个字段,含义依次为:分钟(0-59)、小时(0-23)、日期(1-31)、月份(1-12)、周(0-7)、指令。其中0和7都代表周日。
还有一些辅助字符:
a)*:代表任何时刻都接受的意思。
b),:代表分割时段的意思,比如下达3到6点,则是这样的:0 3,6 * * * command
c)-:代表一段时间范围,比如8到12点之间的每小时的20分钟进行一项工作:20 8-12 * * * command
d)/n(斜线):n表示数字,亦即每隔n单位间隔的意思,例如每5分钟进行一次,则:* /5 * * * * command。
8./etc/crontab:系统配置文件,crontab -e是针对使用者的cron来设计的,如果是系统例行性任务时,只需编辑.etc/crontab这个档案就可以了,cron这个服务的最低侦测限制是分钟,所以cron会每分钟去读取一次/etc/crontab与/usr/bin/crontab这个执行档,所以,只要你编辑完/etc/crontab这个档案,并将它保存之后,那么cron的设定就自动会来执行了。
查看该文件会发现有一个PATH,代表执行文件搜寻路径,MAILTO=root:代表若有额外的STDOUT,将以email将数据传给该指定的用户。
/etc/crontab这个档案支持两种指令下达方式:
1)指令型态,即直接在后面跟指令
2)目录规划,使用run-parts指令,将要执行的脚本都放到这个目录下面,即可
9.一些注意事项:
1)资源分配不均,包括流量,区域内其他PC的流量侦测,CPU使用率,RAM使用率,在线人数实时侦测。
2)取消不要输出的项目
3)安全监测,在/var/log/cron线面查看木马
4)周与日月不可共存
10.anacron:处理非24小时一直启动的Linux系统的crontab的执行,所以anacron并不能指定合适执行某项任务,而是以天为单位或者是在开机后立即进行anacron的动作,他会去侦测停机期间应该进行但是没有进行的crontab任务,并将该任务执行一遍后,anacron就会自动停止了。
anacron其实是一只程序,而不是一个服务。
11.anacron [-sfn] [job];anacron -u [job]:参数,
1)开始一连续的执行各项工作(job),会依据时间记录文件的数据判断是否进行
2)-f:强制进行,而不去判断事件记录文件的时间戳
3)-n:立刻进行未进行的任务,而不延迟等待时间
4)-u:仅更新时间记录文件的时间戳,不进行任何工作
5)job:有/etc/anacrontab定义的各项工作名称
12.当我们下达anacron指令后,它会运作:
1)由/etc/anacrontab分析到cron.daily这项工作名称的天数为1天
2)由/var/spool/anacron/cron.daily取出最近一次执行anacron的时间戳
3)由上个步骤与目前的时间比较,若差异天数为设定的天数以上(包含这一天,/etc/anacrontab的第一个参数)就准备进行该指令
4)若准备进行指令,根据/etc/anacrontab的设定,将延迟设定的分钟数(/etc/anacrontab的第二个参数)
5)延迟时间过后,开始执行后续指令,亦即,run -parts 后面的指令
6)执行完毕,anacron程序结束
13.chkconfig --list anacron:查看anacron是否开机事主动执行。