2018-10-19 16:41:32 SongSir001 阅读数 1036
  • 玩转Linux:常用命令实例指南

    本课程以简洁易懂的语言手把手教你系统掌握日常所需的Linux知识,每个知识点都会配合案例实战让你融汇贯通 。课程通俗易懂,简洁流畅,适合0基础以及对Linux掌握不熟练的人学习; 注意: 1、本课程原价99元,现在仅需29元!购课就送5门价值300元的编程课! 2、购课后登陆csdn学院官网,在课程目录页面即可下载课件。 学完即可轻松应对工作中 85% 以上的 Linux 使用场景 【限时福利】 1)购课后按提示添加小助手,进答疑群,还可获得价值300元的编程大礼包! 2)本课程【现在享受秒杀价39元】 3)本月购买此套餐加入老师答疑交流群,可参加老师的免费分享活动,学习最新技术项目经验。 注意: 1)现在购买至少享受60元优惠; 2)购课后添加微信eduxy-1,发送订单截图领取300元编程礼包。 --------------------------------------------------------------- 这门课程,绝对不会让你觉得亏! 29元=掌握Linux必修知识+社群答疑+讲师社群分享会+300元编程礼包。   人工智能、物联网、大数据时代,Linux正有着一统天下的趋势,几乎每个程序员岗位,都要求掌握Linux。本课程零基础也能轻松入门。   在这门课中,我们保证你能收获到这些 1)快速掌握 Linux 常用命令及配置 2)Linux核心知识点 3) 文件、进程、磁盘、用户管理,以及网络工具命令、文件传输等 4)Vi/Vim编辑器用法  

    7161 人正在学习 去看看 良许

一、场景

1、环境

CentOS 7.0,Tomcat 8.0.33 ,(jdk-1.8.0_171)

2、目的

随着时间推移,tomcat下的日志文件catalina.out越来越大,当查看日志时效率低下。所以,为了方便日志的查阅,将catalina.out文件按天定时分割打成tar包。也方便了以后按时间清理不必要的日志文件。

二、Linux相关配置

1、相关环境配置

首先,在CentOS 7.0上配置好JDK环境,安装好Tomcat。Linux下JDK配置具体可参考:Linux下的JDK配置

我的Tomcat如下:两个Tomcat分别为apache-tomcat-8.0.33-25081-25080-25082和apache-tomcat-8.0.33-26081-26080-26082

[root@songsir02 songsir]# ll
total 233140
drwxr-xr-x.  9 root    root          160 Oct 19 03:29 apache-tomcat-8.0.33-25081-25080-25082
drwxr-xr-x.  9 root    root          160 Oct 19 00:09 apache-tomcat-8.0.33-26081-26080-26082
-rw-r--r--.  1 root    root      9252868 Aug 28 03:34 apache-tomcat-8.0.33.updated.tar.gz
drwxr-xr-x.  8    1002    1002       255 Mar 28  2018 jdk1.8.0_171
-rw-r--r--.  1 root    root    194421880 Aug 28 03:33 jdk-1.8.0_171-shopin.tar.gz
drwxr-xr-x.  2 root    root            6 Oct 18 23:21 rabbitmq
-rw-rw-r--.  1 songsir songsir       662 Oct 19 00:28 tomcatLog.sh
drwxr-xr-x. 11    1001    1001      4096 Aug 28 04:21 zookeeper-3.4.10
-rw-r--r--.  1 root    root     35042811 Aug 28 04:08 zookeeper-3.4.10.tar.gz

2、创建打包脚本

新建tomcatLog.sh文件,在里面添加命令如下:

dir=/home/songsir/
log=/logs/
date=$(date +%F-%H)
for i in  apache-tomcat-8.0.33-25081-25080-25082 apache-tomcat-8.0.33-26081-26080-26082
do
        cd $dir
        if [ -d $i ]
        then
                cd /tmp
                cd $dir$i$log && cp -fr catalina.out catalina.out.$date.bak&& tar -czf catalina.out.$date.tar.gz catalina.out.$date.bak\
                && cat catalina.out > catalina_old.out \
                && rm -fr catalina.out.$date.bak \
                &&cat /dev/null > catalina.out
                #echo $i $dir$i$log"catalina.out"
        else
                echo "directory is not "
        fi
done

上面命令只需要dir改成自己的Tomcat所在目录,然后把Tomcat名称改成自己的Tomcat名称即可。

3、创建定时任务命令

[root@songsir02 songsir]# crontab -e

添上命令保存即可

# 分  时  日  月  周  命令   */2表示每两天
# 每两天的一点执行一次
1 1 */2 * * /bin/sh /home/songsir/tomcatLog.sh

三、执行效果

[root@songsir02 songsir]# cd apache-tomcat-8.0.33-25081-25080-25082/logs
[root@songsir02 logs]# ll
total 48
-rw-r--r--. 1 root root     0 Oct 19 03:48 catalina_old.out
-rw-rw-rw-. 1 root root     0 Oct 19 03:48 catalina.out
-rw-r--r--. 1 root root   128 Oct 19 03:48 catalina.out.2018-10-19-03.tar.gz

打包好的日志文件如上:catalina.out.2018-10-19-03.tar.gz

2018-08-23 23:43:42 qushaming 阅读数 3807
  • 玩转Linux:常用命令实例指南

    本课程以简洁易懂的语言手把手教你系统掌握日常所需的Linux知识,每个知识点都会配合案例实战让你融汇贯通 。课程通俗易懂,简洁流畅,适合0基础以及对Linux掌握不熟练的人学习; 注意: 1、本课程原价99元,现在仅需29元!购课就送5门价值300元的编程课! 2、购课后登陆csdn学院官网,在课程目录页面即可下载课件。 学完即可轻松应对工作中 85% 以上的 Linux 使用场景 【限时福利】 1)购课后按提示添加小助手,进答疑群,还可获得价值300元的编程大礼包! 2)本课程【现在享受秒杀价39元】 3)本月购买此套餐加入老师答疑交流群,可参加老师的免费分享活动,学习最新技术项目经验。 注意: 1)现在购买至少享受60元优惠; 2)购课后添加微信eduxy-1,发送订单截图领取300元编程礼包。 --------------------------------------------------------------- 这门课程,绝对不会让你觉得亏! 29元=掌握Linux必修知识+社群答疑+讲师社群分享会+300元编程礼包。   人工智能、物联网、大数据时代,Linux正有着一统天下的趋势,几乎每个程序员岗位,都要求掌握Linux。本课程零基础也能轻松入门。   在这门课中,我们保证你能收获到这些 1)快速掌握 Linux 常用命令及配置 2)Linux核心知识点 3) 文件、进程、磁盘、用户管理,以及网络工具命令、文件传输等 4)Vi/Vim编辑器用法  

    7161 人正在学习 去看看 良许

一、需求背景

     因此次项目的生产环境中部署了多套系统,每天会产生大量的日志(数百GB的量),侵占了服务器宝贵的存储资源空间。为了有效缓解服务器存储压力,考虑通过Linux的Shell脚本结合crontab定时每周一对上周7天的日志打包压缩,并删除原被打包的日志文件,以腾出更多可利用的存储资源空间。

        对于初次接触Shell脚本的同学,建议先花几个小时时间学习一下Shell。附Shell教程链接如下:   

        http://www.runoob.com/linux/linux-shell-process-control.html

二、Shell脚本

进入Linux终端,键入vim timePackLogs.sh(脚本名称)创建脚本并编辑如下脚本代码: 

#!/bin/bash

#author:wangzx

#date:20180821

#department:xxxx

#email:xxxx@xxxx.com

#if you have any questions, please contact the email!

echo `date '+%Y-%m-%d %H:%M:%S'`" 打包程序执行开始!";

echo "开始打包从7天前截止昨天的日志(如本周日打包上周日到上周六的日志)!";

#筛选打包日志文件的起始日期

sevenDaysAgoDate=`date -d "7 days ago" +%Y-%m-%d`

#筛选打包日志文件的截止日期(此处为获取当前日期)

currentDate=`date +%Y-%m-%d`

#起始日期时间戳(作为日期范围对比使用)

sevenTimeStamp=`date -d "$sevenDaysAgoDate" +%s`

#截至日期时间戳

currentTimeStamp=`date -d "$currentDate" +%s`

index=0

#日志读取路径

filePath="/home/weblogic/logs1"

#获取该路径下所有日志文件

fileList=`ls $filePath -1 -c`

#遍历所有日志文件

for fileName in $fileList

do

    #将日志文件名及后缀与正则表达式做对比返回yyyy-mm-dd格式的日期值(如2018-09-10)

    fileDate=$( expr "$fileName" : '.*\([0-9]\{4\}\-[0-9]\{2\}\-[0-9]\{2\}\).*.*' )    

    #将日期转换为时间戳

    fileDateTimeStamp=`date -d "$fileDate" +%s`

    #当时间戳值不为空且大于等于起始日期小于当前日期,那么获取该日志文件

    if [ "$fileDateTimeStamp" != "" ] && [ $fileDateTimeStamp -ge $sevenTimeStamp ] && [ $fileDateTimeStamp -lt $currentTimeStamp ]

    then

        fileList[$index]="$filePath/$fileName"

    else

        fileList[$index]=""

    fi

    (( index ++ ))

done

#获取所有在日期范围内的日志文件, @代表所有

meetConFiles=${fileList[@]}

#符合条件的日志文件数大于0就打包压缩

if [ "${#meetConFiles}" -gt 0 ]

then

tar -zcvf $currentDate.tar.gz $meetConFiles

else

echo "Not found the meet condition's files!"

exit 0

fi

echo "$currentDate.tar.gz create completion, Now begin to delete old files."

#删除已被打包压缩的日志文件

rm -fr $meetConFiles

echo "done."

exit 0
 

 源码图

三、配置Crontab文件

 

 

注意:

1. CentOS 7的定时任务写在该文件中会报错。需通过crontab -e来设定定时任务

2.上图中为定期每周五执行脚本任务,可根据自身需求进行设置,其中选中行中的weblogic为执行脚本的用户,如果脚本是在root用户下,应输入root,本人的sh脚本是在自身创建的weblogic用户下。

3. MAILTO:接收定时任务邮件的用户名,对于定位定时任务脚本执行产生异常很有帮助。本人的用户名我为weblogic

四、常见问题(执行脚本)

1、permission denied(文件权限不允许)

     为了获得执行权限,切换到sh脚本所在目录,借助chmod指令修改文件权限即可。

     chmod 777 timePackLogs.sh(自身创建的脚本、)

2、本人初次接触Shell脚本开发该功能时,主要在正则表达式方面花了较多时间,建议同学多花些时间学习了解下Shell的正则表      达式。

3、查看crontab的日志记录定位定时任务问题

     当定时执行脚本发生异常时,可通过定时任务的日志来定位问题

     Linux

            a.查阅文件 /var/log/cron,可以用tail -f /var/log/cron观察(普通用户无法查看,需root超管用户)

          b.在 /var/spool/mail/root 文件中,有crontab执行日志的记录,用tail -f /var/spool/mail/root 即可查看最近的crontab执行情况。(root为用户名,本人定时任务脚本生成的日志在weblogic下,所以为/var/spool/mail/weblogic中)

            

 

2017-07-21 23:45:02 Lockey23 阅读数 3599
  • 玩转Linux:常用命令实例指南

    本课程以简洁易懂的语言手把手教你系统掌握日常所需的Linux知识,每个知识点都会配合案例实战让你融汇贯通 。课程通俗易懂,简洁流畅,适合0基础以及对Linux掌握不熟练的人学习; 注意: 1、本课程原价99元,现在仅需29元!购课就送5门价值300元的编程课! 2、购课后登陆csdn学院官网,在课程目录页面即可下载课件。 学完即可轻松应对工作中 85% 以上的 Linux 使用场景 【限时福利】 1)购课后按提示添加小助手,进答疑群,还可获得价值300元的编程大礼包! 2)本课程【现在享受秒杀价39元】 3)本月购买此套餐加入老师答疑交流群,可参加老师的免费分享活动,学习最新技术项目经验。 注意: 1)现在购买至少享受60元优惠; 2)购课后添加微信eduxy-1,发送订单截图领取300元编程礼包。 --------------------------------------------------------------- 这门课程,绝对不会让你觉得亏! 29元=掌握Linux必修知识+社群答疑+讲师社群分享会+300元编程礼包。   人工智能、物联网、大数据时代,Linux正有着一统天下的趋势,几乎每个程序员岗位,都要求掌握Linux。本课程零基础也能轻松入门。   在这门课中,我们保证你能收获到这些 1)快速掌握 Linux 常用命令及配置 2)Linux核心知识点 3) 文件、进程、磁盘、用户管理,以及网络工具命令、文件传输等 4)Vi/Vim编辑器用法  

    7161 人正在学习 去看看 良许

1.系统日志默认分类

日志监控可以使用命令
tail -f /var/log/logname

/var/log/messages   ##系统服务及日志,包括服务的信息,报错等等
/var/log/secure     ##系统认证信息日志
/var/log/maillog    ##系统邮件服务信息
/var/log/cron       ##系统定时任务信息
/var/log/boot.log   ##系统启动信息

2.日志管理服务rsyslog

rsyslog服务负责采集日志和分类存放日志(不产生日志,只做日志的采集分类工)

rsyslog日志分类配置

vim /etc/rsyslog.conf   ##主配置文件
#服务.日志级别        /存放文件
*.*         /var/log/halo
#表示将所有服务的所有级别日志保存到/var/log/halo

这里写图片描述

注意:修改服务配置后要重新加载配置或者重启

systemctl restart rsyslog

3.格式

日志设备(类型).(连接符号)日志级别   日志处理方式(action)

####日志设备(可以理解为日志类型):####
auth                ##pam产生的日志
authpriv            ##ssh,ftp等登录信息的验证信息
cron                ##时间任务相关
kern                ##内核
lpr                 ##打印
mail                ##邮件
mark(syslog)–rsyslog    ##服务内部的信息,时间标识
news                ##新闻组
user                ##用户程序产生的相关信息
uucp                ##unix to unix copy, unix主机之间相关的通讯
local 1~7          ##自定义的日志设备

####日志级别####
———————————————————————-
debug               ##有调式信息的,日志信息最多
info                ##般信息的日志,最常用
notice              ##最具有重要性的普通条件的信息
warning             ##警告级别
err                 ##错误级别,阻止某个功能或者模块不能正常工作的信息
crit                ##严重级别,阻止整个系统或者整个软件不能正常工作的信息
alert               ##需要立刻修改的信息
emerg               ##内核崩溃等严重信息
none                ##什么都不记录

##注意:从上到下,级别从低到高,记录的信息越来越少
##详细的可以查看手册: man 3 syslog

####连接符号####
———————————————————————-
.xxx: 表示大于等于xxx级别的信息
.=xxx:表示等于xxx级别的信息
.!xxx:表示在xxx之外的等级的信息

4.日志同步

各工作机日志同步到日志服务器的设置

1.配置发送方的日志服务
vim /etc/rsyslog.conf
#添加以下内容
*.* @10.1.1.216
#表示将所有类型的日志信息通过UDP协议发给ip位10.1.1.216的主机

2.配置接受方的日志服务

首先设置接受方式以及端口,去掉下面两行的注释

这里写图片描述

然后关闭接受方的防火墙或者让此服务通过防火墙的过滤
systemctl stop firewalld

#查看日志服务器接受端口是否开启
netstat -anulpe | grep rsyslog
udp        0      0 0.0.0.0:514             0.0.0.0:*                           0          122073     32654/rsyslogd      
udp6       0      0 :::514     

最后重启rsyslog
systemctl restart rsyslog

客户机重启sshd服务产生日志,日志服务器接受同步日志,标白部分为从客户机同步过来的日志记录

这里写图片描述

2016-03-16 15:26:11 keda8997110 阅读数 360
  • 玩转Linux:常用命令实例指南

    本课程以简洁易懂的语言手把手教你系统掌握日常所需的Linux知识,每个知识点都会配合案例实战让你融汇贯通 。课程通俗易懂,简洁流畅,适合0基础以及对Linux掌握不熟练的人学习; 注意: 1、本课程原价99元,现在仅需29元!购课就送5门价值300元的编程课! 2、购课后登陆csdn学院官网,在课程目录页面即可下载课件。 学完即可轻松应对工作中 85% 以上的 Linux 使用场景 【限时福利】 1)购课后按提示添加小助手,进答疑群,还可获得价值300元的编程大礼包! 2)本课程【现在享受秒杀价39元】 3)本月购买此套餐加入老师答疑交流群,可参加老师的免费分享活动,学习最新技术项目经验。 注意: 1)现在购买至少享受60元优惠; 2)购课后添加微信eduxy-1,发送订单截图领取300元编程礼包。 --------------------------------------------------------------- 这门课程,绝对不会让你觉得亏! 29元=掌握Linux必修知识+社群答疑+讲师社群分享会+300元编程礼包。   人工智能、物联网、大数据时代,Linux正有着一统天下的趋势,几乎每个程序员岗位,都要求掌握Linux。本课程零基础也能轻松入门。   在这门课中,我们保证你能收获到这些 1)快速掌握 Linux 常用命令及配置 2)Linux核心知识点 3) 文件、进程、磁盘、用户管理,以及网络工具命令、文件传输等 4)Vi/Vim编辑器用法  

    7161 人正在学习 去看看 良许

zgrep "run time:" qcredit.2016-03-14.log.gz

|awk '{print $(NF-3),$(NF-1)}'

|sed 's/QT-[0-9]\{10,20\}//'

|sed 's/pool-[0-9]\{1,3\}-thread-[0-9]\{1,3\}//'

|sort

|uniq -c

|sed 's/time://'

|sort -      k 3n

|sed 's/:method://'

|awk 

'{{if($NF<=5) {a[$2" 5"] += $1;} else if($NF<=10) {a[$2 " 10"] += $1;} else if($NF<=20) {a[$2" 20"] += $1;} else if($NF<=30) {a[$2" 30"] += $1;} else if($NF<=40) {a[$2" 40"] += $1;} else if($NF<=50) {a[$2" 50"] += $1;}else if($NF<=60) {a[$2" 60"] += $1;} else {a[$2" 61+"] += $1}} cs[$2] += $1;}

 END{ for( i in a) {print i, a[i],a[i]/cs[substr(i,0,index(i," ")-1)] }}'

|sort -k 1,1r -n -k 2

|awk '{print $1"\t"$2"\t"$3"\t"$4}' >~/all-htime2.txt


                                

linux日志分析

阅读数 237

[LINUX]linux系统日志

阅读数 4118

Linux查看日志命令

阅读数 379

没有更多推荐了,返回首页