计划任务与系统日志管理
实验背景:
为了更好地了解和控制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(调试):程序或系统调试信息等。