Linux运维 第二阶段 (十三)计划任务及日志管理

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

 

一、任务计划(at,batch,cron)

在未来的某个时间点执行一次某任务(at,batch

周期性地执行某个任务(cron

1#at  TIME(指定时间,注意是时间是未来的,命令的执行结果以邮件形式发送给安排任务的用户)

at>COMMAND

at>ctrl+d

 

TIME

HH:MM(绝对时间,时:分)

MM/DD/YYDD.MM.YY(月//年,日..年)

now+NUMBERminutes(相对时间,minutes,hours,days,weeks

noon,midnight,teatime(模糊时间)

 

#batch(同at,不指定时间,仅在系统空闲时间自动执行)

 

例:#at  now+3minutes

at>ls /var

at>cat /etc/fstab

at>ctrl+d

#at -l(显示作业,相当于命令atq

#at -d  AT_JOB_ID(删除作业,相当于命令atrm

 

2cron自身是一个不间断运行的服务,服务名crond

anacroncron的补充,能够实现因cron由于某种原因在过去的时间该执行而未执行的任务再恢复正常执行一次,服务名anacron

/etc/crontab(系统cron任务,格式: * * ** * [USERNAME] COMMAND

/var/spool/cron/USERNAME(用户cron任务,格式: * * * * *COMMAND);

注意:cron有自己的环境变量PATHPATH=/sbin:/bin:/usr/sbin:/usr/bin),每次执行命令都在自己的PATH下去找,写命令时最好写绝对路径,若执行的是脚本也可在脚本中定义(export  PATH=)否则脚本不能正常执行,若执行的是系统cron任务,可编辑文件定义PATH/etc/crontab);

 

格式:

* * * * *分别表示,分    

分(0-59

时(0-23

日(1-31

月(1-12

周(0-707均表示周日)

注意:月和周不要同时使用

时间通配表示:

*(对应的所有有效取值)

,(离散时间点取值)

-(连续时间)

/(对应取值范围每多久一次)

举例:

3 * * * * (每小时的第3分钟)

*/3 * * * * (每3分钟)

3 * * * 7 (每周日且每小时的第3分钟)

13 12 * * * (每天的12:13

13 12 * * 5 (每周512:13

13 12 6 * * (每月6号的12:13

10,40 * * * * (每小时的第10分钟和第40分钟)

10,40 02 * * 2,5 (每周25且凌晨02:10,02,40

10 02 * * 1-5 (周一至周五的02:10

01 */2 * * * (每两小时执行,注意一定要指定具体时间,否则每秒都会执行)

10 04 */2 * * (每2天执行一次,注意一定要指定具体时间,否则每秒都会执行)

 

系统cron任务:

/etc/cron.{hourly,daily,weekly,monthly}/SCRIPT#run-parts依次运行目录下的每个任务,要想靠前运行,脚本名前加0

 

用户cron任务:

/var/spool/cron/USERNAME

$crontab -l|-e|-r-l列出当前用户的所有cron任务,-e编辑任务(完成后可自动检查其语法),-r移除所有任务(若删除某条任务,进入编辑,删除某行即可))

#crontab -u  USERNAME(管理其它用户的cron任务)

 

anacron任务:/etc/anacrontab有四段

1  65  cron.daily      run-parts /etc/cron.daily

7  70  cron.weekly     run-parts /etc/cron.weekly

30 75  cron.monthly        run-parts /etc/cron.monthly

其中第1段表示过去有多少天的任务未执行;第2段表示开机后的多少分钟执行;注意最小操作单位是天,并且确保系统中crondanacron服务正常运行。

 

二、日志管理:

syslogredhat5

syslog-ngnext generation,redhat6

#service syslog  {start|stop|status|restart|condrestart}

 

syslog服务包括:

syslogd,非内核产生的日志信息,如/var/log/messages有系统标准错误日志信息、非内核产生的引导信息、各子系统产生的信息,/var/log/maillog邮件系统产生的日志、/var/log/secure有谁尝试登录过此主机相关日志;

klogd,内核产生的日志信息,如/var/log/dmesg,此信息可用命令#dmesg显示;

 

日志切割:

命令:#logrotate

日志需要滚动,如messages  messages.1  messages.2

/etc/logrotate.conf

/etc/logrotate.d/*

/etc/cron.daily/logrotate

#chkconfig --list  syslog

 

定义格式:

/etc/syslog.conf

facility.priority  actionfacility表示各子系统;priority表示日志级别loglevelaction表示日志记录位置)

 

facility有:

auth(认证相关)

authpriv(权限、授权相关)

cron(任务计划相关)

daemon(守护进程相关)

kern(内核相关)

lpr(打印相关)

mail(邮件相关)

mark(标记相关)

news(新闻相关)

security(安全相关,与authpriv类似)

syslogsyslog自己的)

user(用户相关)

uucpunix to unix cp相关)

local10-local17(用户自定义使用)

*(所有facility

 

prioritylog level)有:

debug

info

notice

warning/warn

error/err

crit

alert

emerg/panic

*

none

 

action有:

系统上的绝对路径,如/var/log/xxx

管道|,交至其它命令处理

终端,如/dev/console

@HOST@10.0.0.1(定义在远程主机上,要事先修改文件/etc/sysconfig/syslog,SYSLOGD_OPTIONS="-r -m 0"

用户,如root

*,登录到系统上的所有用户,一般这样定义emerg级别的日志

 

定义格式举例:

mail.info /var/log/mail.log

auth.=info @10.0.0.1

user.!=error  不包括error级别

user.!error user.error相反

*.info 所有日志信息的info级别

mail.* mail相关的所有级别信息

*.* 

cron.info;mail.info  多个类别别用分号隔开

cron,mail.info  多个类别的另一写法,同上例

mail.*;mail.!=info  mail相关的所有级别但不包括info级别

 

 

 

以上是学习《马哥网络视频》做的笔记。



一、1、在centos6.x中日志服务由rsyslogd取代了syslogd,新特点:基于TCP传输日志信息;更安全的网络传输方式;有日志消息的及时分析框架;后台数据库;配置文件中可写简单的逻辑判断;兼容syslogd

   2、系统中常见的日志文件:/var/log/cron/var/log/btmp等。

二、日志服务:

    1、格式:事件产生的时间 发生事件的服务器 产生事件的服务器名或程序名 事件的具体信息

    2、/etc/rsyslog.conf配置文件格式:服务名称[连接符号]日志等级 日志记录位置

         连接符号:.   只要比后面等级高的(包含该等级)的日志都记录下来,例:cron.info

         .=      代表只记录所需等级的日志,其它等级的都不记录,例:*.=emerg

         .!      代表不等于,除了该等级的日志外,其它等级的日志都记录

         日志等级:debug info notice warning err crit alert emerg 依次按等级由低到高

         日志记录位置:(当前日志输出到哪个日志文件中保存)

         》日志文件的绝对路径,最常见的保存方法,例:/var/log/secure

         》系统设备文件,/dev/lp0代表第一台打印机。

         》转发给远程主机:@192.168.0.210:514(UDP协议发送至514端口,514是日志服务的默认端口);@@192.168.0.210:514(TCP协议发送)

         》用户名,如rootroot要在线才会把日志发送出去;"mail.*  *"会把mail服务产生的所有级别的日志发送给所有在线用户,若发送给多个在线用户,用户名之间用分号隔开;“local3.*   ~”若接受日志的对象是~,代表这个日志不会记录直接丢弃。

         例:定义自己日志

         #vi  /etc/rsyslog.conf

         写入 *.crit             /var/log/alert.log

         #service  rsyslog restart

         #ll  /var/log/alert.log

         日志服务器的设备

         #vi  /etc/rsysylog.conf            (服务端设置

         $Modload  imtcp

         $InputTcpserver Run 514        (取消这两行注释

         #servicersyslog  restart

         #netstat  -tuln | grep 514

         #vi  /etc/rsyslog.conf              (客户端设置

         *.*             @@192.168.210:514

         查看日志服务器是否设置好:

         #useradd  aa         (在客户端)

         #passwd  aa

         #vi  /var/log/secure       (查看发生事件的主机名

三、日志轮替:把旧的日志文件移动并改名,同时建立新的空白日志文件,当旧日志文件超出保存的范围之后,就会进行删除,改名依靠/etc/logrotate.confdateext参数。

         把自己的日志加入日志轮替:

         方一:直接在/etc/logrotate.conf文件中写入轮替策略;

         方二:在/etc/logrotate.d/目录中建立轮替文件。

         例:按方二:#chattr  +a /var/log/alert.log

         #vi  /var/log/alert.log

         /var/log/alert.log{

         weekly

         rotate6

         sharedscripts

         prerotate

                   /usr/bin/chattr  -a /var/log/alert.log

         endscript

         sharescripts

         postrotate

                   /usr/bin/chattr  +a /var/log/alert.log

         endscript

         }

        

         #vi  /etc/cron.daily/logrotate

         /usr/sbin/logrotate  /etc/logrotate.conf  >/dev/null 2>&1         logrotate命令会依据配置文件判断是否已符合日志轮替的条件,日志轮替由cron发起

         #logrotate  选项  配置文件名

         -v      verbose显示过程

         -f       force强制

四、日志分析工具:logwatch

         #cp  /usr/share/logwatch/default.conf/logwatch.conf  /etc/logwatch/conf/logwatch.conf     (注:默认配置/etc/logwatch/conf/logwatch.conf是空的,要手工生成)

         #logwatch

         #mail




本文转自 chaijowin 51CTO博客,原文链接:http://blog.51cto.com/jowin/1651995,如需转载请自行联系原作者

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
21天前
|
运维 监控 网络协议
|
7天前
|
监控 Linux 开发者
如何在 Linux 中优雅的使用 head 命令,用来看日志简直溜的不行
`head` 命令是 Linux 系统中一个非常实用的工具,用于快速查看文件的开头部分内容。本文介绍了 `head` 命令的基本用法、高级用法、实际应用案例及注意事项,帮助用户高效处理文件和日志,提升工作效率。
21 7
|
7天前
|
缓存 运维 监控
【运维必备知识】Linux系统平均负载与top、uptime命令详解
系统平均负载是衡量Linux服务器性能的关键指标之一。通过使用 `top`和 `uptime`命令,可以实时监控系统的负载情况,帮助运维人员及时发现并解决潜在问题。理解这些工具的输出和意义是确保系统稳定运行的基础。希望本文对Linux系统平均负载及相关命令的详细解析能帮助您更好地进行系统运维和性能优化。
24 3
|
1月前
|
存储 运维 搜索推荐
|
30天前
|
监控 网络协议 安全
Linux系统日志管理
Linux系统日志管理
42 3
|
1月前
|
运维 Java Linux
【运维基础知识】Linux服务器下手写启停Java程序脚本start.sh stop.sh及详细说明
### 启动Java程序脚本 `start.sh` 此脚本用于启动一个Java程序,设置JVM字符集为GBK,最大堆内存为3000M,并将程序的日志输出到`output.log`文件中,同时在后台运行。 ### 停止Java程序脚本 `stop.sh` 此脚本用于停止指定名称的服务(如`QuoteServer`),通过查找并终止该服务的Java进程,输出操作结果以确认是否成功。
35 1
|
1月前
|
运维 网络协议 安全
Linux安全运维--一篇文章全部搞懂iptables
Linux安全运维--一篇文章全部搞懂iptables
41 1
|
1月前
|
Web App开发 运维 安全
1Panel:一个现代化、开源的 Linux 服务器运维管理面板
1Panel:一个现代化、开源的 Linux 服务器运维管理面板
|
1月前
|
监控 Linux 测试技术
Linux系统命令与网络,磁盘和日志监控总结
Linux系统命令与网络,磁盘和日志监控总结
55 0
|
1月前
|
监控 Linux 测试技术
Linux系统命令与网络,磁盘和日志监控三
Linux系统命令与网络,磁盘和日志监控三
38 0