计划任务与系统日志管理


实验背景:


为了更好地了解和控制Linux 服务器的有序运行,需要管理员熟悉进程管理和计划任务设置的相关操作,以完成各种运行维护任务;

在Linux服务器上运行的程序会把系统消息和错误消息写入相应的日志文件,一旦出现异常就会“有据可查”,充分了解并灵活使用日志,有助于快速诊断和解决运维过程中遇到的问题。




实验内容:


1.使用at机制管理一次性延时执行的任务。


2.使用cron机制管理按固定周期重复执行的任务。


3.分析系统通用日志、内核日志,了解系统和服务程序运行情况。


4.分析与用户相关的日志,了解用户账号的登录情况。


5.搭建syslog日志服务器,集中存放来自其他服务器的日志记录。


实验实践:


1.管理at一次性计划任务


1)确认atd服务处于运行状态

#service atd status//查看服务的状态

#/etc/init.d/atd restart//启动服务

#chkconfig atd on//没有启动的话启动服务

2)at的使用限制

#ls /etc/at.allow//搜寻限制文档

#ls /etc/at.deny

3)添加并验证at的延时任务

#atq//查看当前at任务

#date

#at 17:30

at>bin/mkdir tmp/jihua//延时任务的第一条执行语句

at>bin/touch  tmp/jihua/a.file  //最好用mkdir和touch绝对路径

at><EOT>//按Ctrl+d 提交计划

#atq//查询已添加的at任务列表

#ls -lh /tmp/jihua//时间未到时,任务未执行

#ls -lh /tmp/jihua//时间到,任务已经执行

 同时指定时间、日期的at任务

#at 22:30 2014-06-01

at>shutdown -r now

at> <EOT>

#atq

#at -c 2//查看第二条计划任务的内容

4)at计划任务的删除

#atrm 2//删除第二条计划任务


#atq//再查找找不到了


2.管理cron周期性计划任务

1)#service crond status

#ls /etc/cron.allow//满足allow,不再查询deny

#ls /etc/cron.deny

#cat /etc/crontab//查看一下全局计划配置

2)添加并验证crontab的周期性计划任务

#crontab -e//编辑当前用户的计划任务

30 7 * * * tar zcf opt/etcbak-$(date +\%Y\%m\%d).tgz /etc/

  //每天早上7点半tar备份整个/etc目录

#crontab -l

#ls -lh /opt/etcbak-*.tgz  //验证

每天早上7点30开启sshd服务,每天晚上22:30关闭sshd服务


#crontab -e

... ...

30 7 * * * /etc/init.d/sshd start

30 22 * * * /etc/init.d/sshd stop


3)删除计划任务

#crontab -r

#crontab -l


3.使用2台RHEL 5虚拟机,主要在主机A(1.1.1.1)上完成,主机B(1.1.1.2)仅  在测试远程提交日志时作为客户机


1)#ifconfig //查看各自的ip地址

#ping 1.1.1.1//在主机B上ping主机A,确定能ping通

#rpm -qi sysklogd//查寻服务是否安装

#service syslog status//查看syslog服务运行情况

2)搭建syslog日志服务器

#vim /etc/sysconfig/syslog//服务器配置

SYSLOGD_OPTIONS="-r -x -m 0"    //修改此行,添加 -r -x

#service syslog restart//重启syslog服务


3)修改客户机的日志记录配置

#vim /etc/syslog.conf//修改主机B(注意和服务器A修... ...改的不是同一个文件)

cron.*@1.1.1.1        //@发送到1.1.1.1

#service syslog restart//重启服务

4)测试日志消息的远程提交

#crontab -e//在客户机B上启用crond服务

1 * * * * echo"hello world">/tmp/test.txt //每分钟写入信息

#tail -f /var/log/cron//在服务器A上及时查看B生成的日志记录


4.日志的轮转



1)logrotate轮转

减小日志大小,降低分析难度

丢弃过期日志节省空间

结合cron每天执行

2)软件包

logrotate

3)主配置文件(daily, weekly, monthly, or yearly)

/etc/logrotate.conf

weekly  轮转频率,默认每周

rotate 4  保留4个轮转备份

create  执行轮转后创建新文件

#compress  是否压缩日志

include /etc/logrotate.d  包含此目录下的配置

/var/log/wtmp {  启用轮转的日志文件

monthly  每月轮转一次

missingok  丢失不提示

notifempty 如果为空则不轮转

minsize 1M  日志达到1MB才开始轮转

create 0664 root utmp  建新文件并设权限,root用户,utmp组

rotate 1       只保留一个备份

}



4)比如建一个admin的轮转

#vim /etc/logrotate.d/admin

/var/log/admin.log{//进行编辑

size 10M

daily

compress

rotate 3

create 0644 root root

}

 在/var/log/下新建一个admin.log文件

#logrotate -f /etc/logrotate.conf//强制执行


~                                                                     在/var/log/下查看会生成一个新的admin.log1.tgz文件





logrotate手工执行轮转

-v启动显示模式

-f强制rotate


/var/lib/logrotate.status










实验总结:

 crontab -e 编辑下的格式:

分 时 日 月 周命令

*    表示该范围内的任意时间

,    表示间隔的多个不连续时间点

-    表示一个连续的时间范围

/    指定间隔的时间频率


根据日志消息的严重程度不同,Linux内核定义了8个不同的日志级别(数值越小,优先级越高,消息越重要):


0 EMERG(紧急):会导致主机系统不可用的情况。

1 ALERT(警告):必须马上采取措施解决的问题。

2 CRIT(严重):比较严重的情况。

3 ERR(错误):运行出现错误。

4 WARNING(提醒):可能影响系统功能,需要提醒用户的重要事件。

5 NOTICE(注意):不会影响正常功能,但是需要注意的事件。

6 INFO(信息):一般信息。

7 DEBUG(调试):程序或系统调试信息等。