《1-16- Linux计划任务与日志的管理.docx》由会员分享,可在线阅读,更多相关《1-16- Linux计划任务与日志的管理.docx(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Linux计划任务与日志的管理本节所讲内容:1-16-1 Linux中计划任务与日志的管理 Linux中的计划任务 at计划任务的使用 cron 计划任务的使用1-16-2 Linux服务器的日志管理 日志的种类和记录的方式 实战-自定义ssh服务的日志存储 扩展-日志的回滚第1章 什么是计划任务大家平常都会有一些比如说:你每天固定几点起床?每天按时上班打卡、每月5号准时开工资、每年2月14你俩口子某某纪念日等这些诸如此类,这些都是定时发生的。或者说是通俗点说:例行公事;还比如说我们还会遇到一些突发事件,临时几点过来加个班?刚好晚上几点聚个餐?像上面这些情况,如果事少的话你大脑可以记住,如果事
2、很多,像老板经理董事长每天的工作安排,通常都是记在一些本上,或者闹铃提醒等。那么,咱们的LINUX系统和上面的情况也很类似,我们也可以通过一些设置。来让电脑定时提醒我们该做什么事了。或者我们提前设置好,告诉电脑你几点做什么几点做什么,这种我们就叫它定时任务。而遇到一些需要执行的事情或任务。我们也可以通过命令来告诉电脑一会临时把这个工作给做一下总结:在我们LINUX中,我们就是通过crontab和at这两个东西来实现这些功能的计划任务的作用:是做一些周期性的任务,在生产中的主要用来定期备份数据两种命令的区别我们从上面的举例中可以看到,我们一般的工作安排方式分两种:一种是定时性的,也就是例行。就是
3、每隔一定的周期就要重复来做这个事情一种是突发性的,就是这次做完了这个事,就没有下一次了,临时决定,只执行一次的任务我们回到LINUX中来看at crontab这两个命令:at:它是一个可以处理仅执行一次就结束的指令crontab:它是会把你指定的工作或任务,比如:脚本等,按照你设定的周期一直循环执行下去第2章 at计划任务的使用语法格式: at 时间服务:atd 开启atd服务在RHEL6中2.1 实战-使用at创建计划任务rootpanda # date -查看当前时间Mon Jun 26 20:41:17 CST 2017rootpanda # at 20:43 -注意:如果是上午时间,后
4、面加上am上午9:20表示9:20amat mkdir /root/xuegod1705 -输入你要执行的命令或脚本at -结束:ctrl+djob 1 at Mon Jun 26 20:43:00 2017rootpanda # dateMon Jun 26 20:42:57 CST 2017rootpanda # atq1 Mon Jun 26 20:43:00 2017 a root2.2 如何查看执行任务这个查看,只能看到还没有执行的。如果这个任务已经开始执行或者执行完成了,是看不到的at -l 查看计划任务atq 查看计划任务rootpanda # at 9:00pmat echo
5、xuegod1701 /root/xuegod1701/a.txtat job 3 at Mon Feb 27 21:00:00 2017rootpanda # atq3Mon Feb 27 21:00:00 2017 a rootrootpanda # at -l3Mon Feb 27 21:00:00 2017 a root任务的格式: 任务编号执行的时间队列执行者3Fri Oct 28 20:55:00 2016aroot2.3 at计划任务的特殊写法root xuegod72 # at 20:00 2016-10-1 在某天 root xuegod72 # at now +10min
6、在 10分钟后执行root xuegod72 # at 17:00 tomorrow 明天下午5点执行rootxuegod72 # at 6:00 pm +3 days 在3天以后的下午6点执行对于系统来说 :计划任务就是在某个特定的时刻,执行一个脚本文件2.4 任务的存放位置创建成功的at计划任务会在/var/spool/at/目录下成生一个可执行的脚本文件/var/spool/at/*rootpanda # cd /var/spool/rootpanda spool# lsabrt anacron cron lpd plymouth rhsmabrt-upload at cups mail
7、 postfix up2daterootpanda spool# cd atrootpanda at# lsa00005017a7848 spoolrootpanda at# at 21:20at touch /root/xuegod1701/b.txtat job 6 at Mon Feb 27 21:20:00 2017rootpanda at# rootpanda at# atq5Mon Feb 27 22:00:00 2017 a root6Mon Feb 27 21:20:00 2017 a rootrootpanda at# lsa00005017a7848 a00006017a7
8、820 spoolrootpanda at# ll总用量 8-rwx-. 1 root root 3053 Feb 27 21:00 a00005017a7848-rwx-. 1 root root 3059 Feb 27 21:01 a00006017a7820drwx-. 2 daemon daemon 6 Feb 27 21:00 spoolrootpanda at# tail -5 a00005017a7848 -查看定时任务内容$SHELL:-/bin/sh /root/xuegod1701/a.txtmarcinDELIMITER551c03darootpanda at# tail
9、 -5 a00006017a7820 $SHELL:-/bin/sh marcinDELIMITER0f1e62datouch /root/xuegod1701/b.txtmarcinDELIMITER0f1e62da2.5 删除at计划任务atrm命令atrm + 计划任务的编号总结:at计划任务执行一次,下次就不能再次执行;第3章 crontab定时任务的使用3.1 介绍crond命令定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业。linux任务调度的工作主要分为以下两类:l 系统执行的工作:系统
10、周期性所要执行的工作,如更新whatis数据库 updatedb数据库,日志定期切割,收集系统状态信息,/tmp定期清理l 个人执行的工作:某个用户定期要做的工作,由每个用户自行设置3.2 启动服务rootpanda at# systemctl restart crond -重启服务rootpanda at# systemctl enable crond -设为开机启动3.3 cron命令参数介绍:crontab的参数:n crontab -u #指定某个用户的cron服务n crontab -l #列出cron服务的详细内容n crontab -r #删除cron服务n crontab -e
11、 #编辑cron服务例如:n crontab -u root -l # root查看自己的cron计划任务n crontab -u san -r # root想删除san的cron计划任务3.4 cron文件语法分小时日月星期命令0-590-231-311-120-6command 一行对应一个任务特殊符号的含义: *代表取值范围内的数字(任意)/代表每 */10-代表从某个数字到某个数字8-17,分开几个离散的数字6,10-13,203.5 创建计划任务我们可用crontab -e命令来编辑计划任务编辑的是/var/spool/cron下对应用户的cron文件crontab的计划任务内容保存
12、在目录/var/spool/cron下面也可以直接在/etc/crontab中添加计划任务cron服务每分钟不仅要读一次/var/spool/cron内的所有文件,还需要读一次/etc/crontab因此我们配置这个文件也能运用cron服务做一些事情。用crontab配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务编辑/etc/crontab 配置文件 (说明)q SHELL=/bin/bash #变量的值指定shell 环境(此处默认为 bash shell);q PATH=/sbin:/bin:/usr/sbin:/usr/bin # PATH 变量定义用来执行命令的程
13、序路径;q MAILTO=root /如果出现错误,或者有数据输出,数据作为邮件发给这个帐号3.6 系统级别的计划任务对于系统级别的计划任务,需要执行的命令和脚本都放在这里:/etc/cron.* 按两次tabrootxuegod72# ls /etc/croncron.d/ cron.deny cron.monthly/ cron.weekly/ cron.daily/ cron.hourly/ crontab 目录作用解释:q cron.d/ #是系统自动定期需要做的任务,但是又不是按小时,按天,按星期,按月来执行的,那么就放在这个目录下面。q cron.deny #控制用户是否能做计划任
14、务的文件;q cron.monthly/ #每月执行的脚本;q cron.weekly/ #每周执行的脚本;q cron.daily/ #每天执行的脚本;q cron.hourly/ #每小时执行的脚本;q crontab #主配置文件 也可添加任务;3.7.1计划任务案例1) 每天晚上21:00 重启apache0 21 * * * /etc/init.d/httpd restart2) 每月1、10、22日的4 : 45重启apache。45 4 1,10,22 * * /etc/init.d/httpd restart3) 每月1到10日的4 : 45重启apache。45 4 1-10
15、 * * /etc/init.d/httpd restart4) 每隔两天的上午8点到11点的第3和第15分钟执行apach3,158-11*/2*etc/init.d/httpd restart5) 晚上11点到早上7点之间,每隔一小时重启apach*23-7/1*/etc/init.d/apachrestart6) 周一到周五每天晚上 21:15 寄一封信给 rootxuegod72:15 21 * * 1-5 mail -s hi rootxuegod72 /root/a.txt0 2 * * * /root/backup.sh & /dev/nullrootpanda # cat ba
16、ckup.sh #!/bin/bashtar zcf /tmp/backup/date +%F_etc.tar.gz /etcfind /tmp/backup -name *.tar.gz -mtime +3 -exec rm -f ;#find /tmp/backup -name *.tar.gz -mtime +3 -delete#find /tmp/backup -name *.tar.gz -mtime +3 | xargs rm rf第4章 Linux系统中的日志管理在RHEL7中,系统日志消息由两个服务负责处理:systemd-journald和rsyslog系统日志文件概述:/v
17、ar/log目录保管由rsyslog维护的,里面存放的一些特定于系统和服务的日志文件日志文件用途/var/log/message大多数系统日志消息记录在此处。有也例外的:如与身份验证,电子邮件处理相关的定期作业任务等/var/log/secure安全和身份验证相关的消息和错误的日志文件/var/log/maillog与邮件服务器相关的消息日志文件/var/log/cron与定期执行任务相关的日志文件/var/log/boot.log与系统启动相关的消息记录/var/log/dmesg与系统启动相关的消息记录last/var/log/httpd/access.log例子:查找登录失败的机器并且统
18、计登录失败的次数rootpanda log# grep -i Fail /var/log/secure |awk print $11|uniq -c|sort -k1 n4.1 日志的管理日志对于安全来说,非常重要,他记录了系统每天发生的各种各样的事情,你可以通过他来检查错误发生的原因,或者受到攻击时攻击者留下的痕迹。日志主要的功能有:审计和监测。他还可以实时的监测系统状态,监测和追踪侵入者等等那么日志存放的位置在哪里呢?我们的 /var/log 是存放日志的位置常用的日志文件如下:q btmp 记录登录失败的信息q lastlog记录最近几次成功登录的事件和最后一次不成功的登录q messa
19、ges从syslog中记录信息(有的链接到syslog文件) q utmp记录当前登录的每个用户q wtmp 系统登录的情况:登入登出4.2 登录信息的查看我们也可以通过last 命令查看登录日志内容 哪个用户在哪个时间通过哪种方式登录系统的情况清空日志文件2、/var/log/lastlog 最后登录信息lastlog 记录所有的用户什么时候登录过系统lastlog 和 last的区别:last 查看IPlastlog 查看后门的账号3、/var/log/btmp 用户登录系统的错误信息lastb 查看如果说你发现你的btmp文件变得很大,说明有很大的可能是有人在暴力破解你的主机可使用 ll
20、 -h 查看文件的大小4.3 日志的记录方式分类 级别日志的种类:daemon 后台进程相关 kern 内核产生的信息lpr 打印系统产生的authpriv 安全认证cron 定时相关mail 邮件相关syslog 日志服务本身的news 新闻系统local07 自定义的日志设备local 0local 7 8个系统保留的类, 供其它的程序使用 /或者是用户自定义日志的级别: 轻重编码优先级严重性7debug信息对开发人员调试应用程序有用,在操作过程中无用6info正常的操作信息,可以收集报告,测量吞吐量等5notice注意,正常但重要的事件,4warning警告,提示如果不采取行动。将会发生
21、错误。比如文件系统使用90%3err错误,阻止某个模块或程序的功能不能正常使用2crit关键的错误,已经影响了整个系统或软件不能正常工作的信息1alert警报,需要立刻修改的信息0emerg紧急,内核崩溃等严重信息4.4 日志服务 旧版本 rhel5 服务名称 syslog 配置文件 /etc/syslog.confrhel6-7服务名称 rsyslog配置文件 /etc/rsyslog.conf我们来查看一下日志的配置文件信息:编辑配置文件 vim /etc/rsyslog.confrootpanda log# cat /etc/rsyslog.conf |grep -v #|grep -v
22、 $ModLoad imuxsock # provides support for local system logging (e.g. via logger command)$ModLoad imjournal # provides access to the systemd journal$WorkDirectory /var/lib/rsyslog$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat$IncludeConfig /etc/rsyslog.d/*.conf$OmitLocalLogging on$IMJournal
23、StateFile imjournal.state*.info;mail.none;authpriv.none;cron.none /var/log/messagesauthpriv.* /var/log/securemail.* -/var/log/maillogcron.* /var/log/cron*.emerg :omusrmsg:*uucp,news.crit /var/log/spoolerlocal7.* /var/log/boot.log# MODULES 日志的模块#$ModLoad imuxsock #imuxsock是模块名,支持本地系统日志的模块$ModLoad imk
24、log #imklog是模块名, 支持内核日志的模块#$ModLoad immark #immark是模块名,支持日志标记#$ModLoad imudp #imupd是模块名,支持udp协议#$UDPServerRun 514 #允许514端口接收使用UDP和TCP协议转发过来的日志#$ModLoad imtcp #imtcp是模块名,支持tcp协议#$InputTCPServerRun 514#kern.* 内核类型的所有级别日志 存放到 /dev/console*.info;mail.none;authpriv.none;cron.none /var/log/messages所有的类别级别
25、是info以上 除了mail,authpriv,cron (产生的日志太多,不易于查看) 类别.级别 authpriv.* 认证的信息存放 /var/log/securemail.* 邮件相关的信息 存放 -/var/log/maillogcron.* 计划任务相关的信息 存放 /var/log/cronlocal7.* 开机时显示的信息存放- /var/log/boot.log注:“- ”号: 邮件的信息比较多,现将数据存储到内存,达到一定大小,全部写到硬盘.有利于减少I/O进程的开销数据存储在内存,如果关机不当数据消失4.5 日志输入的规则 . info 高于info级别的信息全部记录到某
26、个文件 .=级别 仅记录等于某个级别的日志例:.=info 只记录info级别的日志 .! 级别 除了某个级别意外,记录所有的级别信息例.!err 除了err外记录所有 .none 指的是排除某个类别4.6 实战-自定义ssh服务的日志编辑rsyslog配置文件输入 local 0 .* /var/log/sshd.log #日志的保存路径定义ssh服务的日志级别编辑sshd服务的主配置文件rootxuegod72 log# vim /etc/ssh/sshd_config生效配置文件先重启rsyslog服务(生效配置)rootxuegod72 log# systemctl restart r
27、syslog再重启sshd服务.生成日志rootxuegod72 log# systemctl restart sshd查看一下有没有对应的日志产生验证是否生成日志并查看其中的内容查看/var/log 出现 sshd.log上面对就的信息:时间 主机 服务 进程ID 相关的信息如何防止日志删除4.7 日志的切割(轮转)在linux下的日志会定期进行滚动增加,我们可以在线对正在进行回滚的日志进行指定大小的切割(动态),如果这个日志是静态的。比如没有应用向里面写内容。那么我们也可以用split工具进行切割;其中Logrotate支持按时间和大小来自动切分,以防止日志内容将包含/var/log的文件
28、系统填满。logrotate配置文件主要有:/etc/logrotate.conf 以及 /etc/logrotate.d/ 这个子目录下的明细配置文件。logrotate的执行由crond服务实现。在/etc/cron.daily目录中,有个文logrotate,它实际上是个shell script,用来启动logrotatelogrotate程序每天由cron在指定的时间(/etc/crontab)启动日志是很大的,如果让日志无限制的记录下去 是一件很可怕的事情,日积月累就有几百兆占用磁盘的空间,如果你要找出某一条可用信息海底捞针日志切割:当日志达到某个特定的大小,我们将日志分类,之前的日
29、志保留一个备份,再产生的日志创建一个同名的文件保存新的日志.4.7.1 实战演示编辑配置文件rootxuegod72 log# vim /etc/logrotate.conf说明:(全局参数) weekly :每周执行回滚,或者说每周执行一次日志回滚 rotate: 表示日志切分后历史文件最多保存离现在最近的多少份 create : 指定新创建的文件的权限与所属主与群组 dateext : 使用日期为后缀的回滚文件 #可以去/var/log目录下看看单独配置信息/var/log/btmp 指定的日志文件 missingok如果文件丢失不报错monthly 每月轮换一次 create 0664
30、root utmp 设置btmp这个日志文件的权限,属主,属组 minsize 1M 文件超过1M进行回滚,所以大家要知道它不一定第月都会进行分割,要看这个文件大小来定rotate 1 日志进行分割后,只保留一份历史数据如btmp-20160101其它参数说明:monthly: 日志文件将按月轮循。其它可用值为daily,weekly或者yearly。rotate 5: 一次将存储5个归档日志。对于第六个归档,时间最久的归档将被删除。compress: 在轮循任务完成后,已轮循的归档将使用gzip进行压缩。delaycompress: 总是与compress选项一起用,delaycompres
31、s选项指示logrotate不要将最近的归档压缩,压缩将在下一次轮循周期进行。这在你或任何软件仍然需要读取最新归档时很有用。 missingok: 在日志轮循期间,任何错误将被忽略,例如“文件无法找到”之类的错误。 notifempty: 如果日志文件为空,轮循不会进行。 create 644 root root: 以指定的权限创建全新的日志文件,同时logrotate也会重命名原始日志文件。 postrotate/endscript: 在所有其它指令完成后,postrotate和endscript里面指定的命令将被执行。在这种情况下,rsyslogd 进程将立即再次读取其配置并继续运行。4.
32、7.2 实战配置-日志回滚 在ssh日志的基础上编辑配置文件 rootxuegod72 # vim /etc/logrotate.d/sshd/var/log/sshd.log missingok weekly create 0600 root root minsize 1M rotate 3rootxuegod72 #systemctl restart rsyslogrootxuegod72 #logrotade d /etc/logrotate.d/sshd -预演,不实际轮循rootpanda # logrotate -vf /etc/logrotate.d/sshd -强制轮循,也就是
33、说即使轮循条件没有满足,也可以通过加-f强制让logrotate轮循日志文件rootpanda # logrotate -vf /etc/logrotate.d/sshd reading config file /etc/logrotate.d/sshdHandling 1 logsrotating pattern: /var/log/sshd.log forced from command line (2 rotations)empty log files are rotated, old logs are removedconsidering log /var/log/sshd.log l
34、og needs rotatingrotating log /var/log/sshd.log, log-rotateCount is 2dateext suffix -20170405glob pattern -0-90-90-90-90-90-90-90-9renaming /var/log/sshd.log.2 to /var/log/sshd.log.3 (rotatecount 2, logstart 1, i 2), old log /var/log/sshd.log.2 does not existrenaming /var/log/sshd.log.1 to /var/log/
35、sshd.log.2 (rotatecount 2, logstart 1, i 1), old log /var/log/sshd.log.1 does not existrenaming /var/log/sshd.log.0 to /var/log/sshd.log.1 (rotatecount 2, logstart 1, i 0), old log /var/log/sshd.log.0 does not existlog /var/log/sshd.log.3 doesnt exist - wont try to dispose of itfscreate context set
36、to system_u:object_r:var_log_t:s0renaming /var/log/sshd.log to /var/log/sshd.log.1creating new /var/log/sshd.log mode = 0664 uid = 0 gid = 0set default create context再次查看日志文件大小,已经为0logrotate日志查看rootpanda lib# vim logrotate.status rootpanda lib# tail -10 logrotate.status /var/log/libvirt/libvirtd.log
37、 2016-7-27-23:0:0/var/log/libvirt/qemu/*.log 2016-7-27-23:0:0/var/log/wpa_supplicant.log 2017-2-27-22:28:7/var/log/secure 2017-4-5-0:0:15/var/log/numad.log 2016-7-27-23:0:0/var/log/ppp/connect-errors 2016-7-27-23:0:0/var/log/rhsm/rhsm.log 2017-4-5-0:0:15/var/log/messages 2017-4-5-0:0:15/var/account/
38、pacct 2016-7-27-23:0:0/var/log/cron 2017-4-5-0:0:15rootpanda lib# pwd/var/lib4.8 配置远程日志服务器-实现日志集中的管理server xuegod72client xuegod634.8.1 server端配置编辑 /etc/rsyslog.confUDP速度快不保证数据的完整TCP可靠.完整使用TCP的方式,去除#号注释重新启动 rsyslogsystemctl restart rsyslog 查看服务监听的状态netstat -anlpt| grep 5144.8.2 client端配置:rootxuegod6
39、3 # rootxuegod63 # vim /etc/rsyslog.conf*.* 所有类别和级别的日志192.168.1.63:514 服务端的IP:端口重启rsyslog 服务重启服务4.8.3 服务端验证:在服务端关闭防火墙rootserver # getenforce Enforcingrootserver # setenforce 0rootserver # getenforce Permissiverootxuegod72 # getenforce Permissiverootxuegod72 # systemctl stop firewalldrootxuegod72 # s
40、ystemctl status firewalld firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) Active: inactive (dead) since Wed 2016-12-21 19:52:04 CST; 3s ago Process: 742 ExecStart=/usr/sbin/firewalld -nofork -nopid $F
41、IREWALLD_ARGS (code=exited, status=0/SUCCESS) Main PID: 742 (code=exited, status=0/SUCCESS)Dec 20 03:47:51 xuegod72 systemd1: Starting firewalld - dynamic firewall daemon.Dec 19 18:47:53 xuegod72 systemd1: Started firewalld - dynamic firewall daemon.Dec 21 19:52:02 xuegod72 systemd1: Stopping firewalld - dyna