`

linux 运维

 
阅读更多
定期修改密码
cd /etc
lsattr passwd shadow
如果这2文件有带i属性, 则表示无法修改, 用下面命令去掉
chattr -i passwd shadow

然后是修改密码命令
passwd
输入新密码: ******
再次输入: ******
修改成功, 把2个文件加上i属性防止被窜改
chattr +i passwd shadow



定期清理磁盘空间
通用方法, 删除指定目录7天前的文件
find /appLog -type f -mtime +7 -exec rm {} \;

也或以针对nginx, tomcat处理
其中大都是由于nginx, tomcat的日志积压

1. 定期检查目录里的文件夹大小
进入目标目录
cd /slc/web-file/lizhiwei/APP

查看各目录磁盘空间占用, 把所有目录(包括子目录)都显示出来
du -h

子目录太多看着烦, 只显示1级目录就行了
du -h --max-depth=1

然后挑大的进去删除日志

2. 切割日志
1.tomcat采用 cronolog 从程序上把日志按天分切割
2.nginx采用crontab执行自己写的sh, 定时每天23:59分定时执行

三. 历史日志
tomcat 可以采用logback, 直接在配置上设置历史日志压缩及最近7天
<!-- 日志文件每天生成,保留30天的日志文件,防止日志打爆磁盘 -->
                <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                        <fileNamePattern>${log.base}.%d{yyyy-MM-dd}.log.gz</fileNamePattern>
                        <maxHistory>30</maxHistory>
                        <!--日志文件最大占用空间,防止日志打爆磁盘 -->
                        <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                                <maxFileSize>100MB</maxFileSize>
                        </timeBasedFileNamingAndTriggeringPolicy>
                </rollingPolicy>


方法一:tomcat使用shell切割日志

cd /yf-weloop-rawdata/apache-tomcat-7.0.73/bin
d=`date --date='0 days ago' +%Y-%m-%d`  
d7=`date -d'7 day ago' +%Y-%m-%d`

echo '-----' 
echo 'tomcat catalina.out log backup start' 
echo 'system time: '`date` 
echo 'current date: '${d} 
echo 'next 7 days: '${d7} 

cd  ../logs/

echo 'copy catalina.out to catalina.out.'${d} 
cp catalina.out catalina.out.${d}
echo 'clear catalina.out' 
#这样直接把文件 ""> 的方法, 仅在redcap有效, 在centos使用, 后面的内容不会追加
echo "" > catalina.out 
echo "rm catalina.out -7d before: catalina.out.${d7}"
if [ -a "catalina.out.${d7}" ]; then
	rm -rf catalina.out.${d7}
	echo 'rm catalina.out.'${d7}' success' 
else
	echo 'rm catalina.out.'${d7}' failure, it''s not existx' 
fi

echo 'tomcat catalina.out log backup end' 
echo '-----' 



方法二:tomcat自身catalina.out的切割
step 1:
touch "$CATALINA_OUT"

#touch "$CATALINA_OUT"

step 2:
org.apache.catalina.startup.Bootstrap "$@" start \
      >> "$CATALINA_OUT" 2>&1 "&"

org.apache.catalina.startup.Bootstrap "$@" start 2>1 \
      | cronolog "$CATALINA_OUT.%Y%m%d" >> /dev/null &

step 3:
在else下面的语句同step 2

效果



nginx 则需要自己写sh, 删除指定30天前的日志
#nx 日志文件所在的目录
LOGS_PATH=/usr/local/nginx/logs
## 获取昨天的 yyyy-MM-dd
YESTERDAY=$(date -d "yesterday" +%Y%m%d)
## 移动文件
mv ${LOGS_PATH}/access.log ${LOGS_PATH}/access_${YESTERDAY}.log
mv ${LOGS_PATH}/error.log ${LOGS_PATH}/error_${YESTERDAY}.log
echo $(date +%Y-%m-%d" "%H:%M:%S)  保存昨天的日志文件 >> ${LOGS_PATH}/cut-log.log
## 向 Nginx 主进程发送 USR1 信号。USR1 信号是重新打开日志文件
kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)
echo $(date +%Y-%m-%d" "%H:%M:%S)  通知nginx重写日志 >> ${LOGS_PATH}/cut-log.log
## 删除15天前的日志
rm -f ${LOGS_PATH}/access_$(date -d "10 day ago" +%Y%m%d).log
rm -f ${LOGS_PATH}/error_$(date -d "10 day ago" +%Y%m%d).log
echo $(date +%Y-%m-%d" "%H:%M:%S)  删除15天前的日志:access_$(date -d "10 day ago" +%Y%m%d).log >> ${LOGS_PATH}/cut-log.log
echo $(date +%Y-%m-%d" "%H:%M:%S)  删除15天前的日志:error_$(date -d "10 day ago" +%Y%m%d).log >> ${LOGS_PATH}/cut-log.log



查看并发,连接数, 通过端口号
一般tomcat是8080
netstat -na | grep ESTAB | grep 8080 | wc -l

一般nginx是80
netstat -na | grep ESTAB | grep 80 | wc -l


文件排序, 日志数据处理分析
cat lizw.10.log |awk -F, '{print $(NF)}' > lizw.10-1.log
把日志里每行的最后一列打印到新的文件

-F, 以","作为分隔符
$(NF), 倒数第1列, 如果是$(NF-1), 则是倒数第2列

sort -u lizw.10.log > lizw.10.u.log
文件去重, 相同的行只留唯一

sort -nk 2 -t: lizw.10.u.log > lizw.10.sun.log
-nk 2 按数值排序, 以第2列为准
-t: 以":"作为列的分隔符


10进制<->16进制

10->16
printf "%x\n" 2579728
输出:275d10

16->10
printf "%d\n" 0x275d10
输出:2579728



筛选文件里匹配关键字的行
cat access.log.20170713|grep "deviceId"

筛选文件里匹配关键字的行里的内部 (-o)

cat access.log.20170713|grep -o "deviceId\":\w\{1,10\}"
或 标准正则表达式写法 (-P)
cat access.log.20170713|grep -oP "deviceId\":\d{1,10}"
  • 大小: 179 KB
分享到:
评论

相关推荐

    Linux运维自动化运维脚本.zip

    Linux运维自动化运维脚本.zip,自动化运维脚本 介绍 Linux系统运维中各种一键脚本 使用教程 openssh一键升级脚本,支持centos6、centos7、centos8。 Linux运维自动化运维脚本.zip,自动化运维脚本 介绍 Linux系统...

    LINUX运维案例.docx

    LINUX运维案例 Linux 运维是一个非常广泛的领域,涉及到操作系统的安装、配置、管理、优化和故障排除等多方面的内容。本文档对 Linux 运维进行了系统性的介绍,涵盖了 Linux 的发展介绍、常用命令、各种服务搭建、...

    Linux运维工程师简历项目经验【最新版】.docx

    Linux运维工程师是互联网行业中至关重要的角色,他们负责保障服务系统的稳定性和高可用性。随着互联网规模的扩大和技术的快速发展,运维工程师的角色也在不断演变,从基础的系统维护扩展到复杂的技术管理和产品设计...

    Linux 运维趋势(0-13期)

    Linux运维趋势_第0期_运维自动化 Linux运维趋势_第1期_监控与报警 Linux运维趋势_第2期_可用性 Linux运维趋势_第3期_运维与开发 Linux运维趋势_第4期_性能瓶颈 Linux运维趋势_第5期_内网开发环境 Linux运维趋势_第6...

    Linux运维故障锦集.pdf

    Linux运维故障锦集

    linux 运维之道

    linux 运维之道PDF,有需要的同学可以下载来看看。

    Linux运维就业班+Linux架构班 Linux零基础到运维架构大神

    根据提供的文件信息,我们可以推断出这是一门关于Linux运维与架构的学习课程,旨在帮助学员从零基础开始学习,最终成长为一名具备高级技能的Linux运维架构师。下面将基于这个理解,详细介绍该课程可能涉及的一些核心...

    Linux运维之道 第2版

    Linux运维之道 第2版 ,高清完整版带书签。个人收集电子书,仅用学习使用,不可用于商业用途,如有版权问题,请联系删除!

    Linux运维实战:CentOS76操作系统从入门到精通.docx

    Linux 运维实战:CentOS76 操作系统从入门到精通 本资源是关于 Linux 运维实战的全面指南,涵盖了 CentOS76 操作系统从入门到精通的所有方面。通过本资源,您将了解 Linux 系统的概述、CentOS76 的安装和基础配置、...

    linux运维常见的22个故障排查和解决方法

    ### Linux运维中的常见故障排查与解决方法 #### 一、Shell脚本不执行 **问题描述**:在实际工作中,可能会遇到这样的情况:一个看似正常的Shell脚本在Linux环境下无法执行,报出“:bad interpreter: No such file ...

    Linux运维之道

    《Linux运维之道》将围绕 Linux操作系统这样一个基础平台,讲解如何使用操作系统实现各种开源产品的应用案例。全书主要从运维工作中的应用服务入手,全面讲解基本 Linux操作系统以及各种软件服务的运维工作。

    linux运维资料包.rar

    【Linux运维】 在IT行业中,Linux运维是关键的一环,负责系统稳定运行、性能优化、安全维护等工作。本资料包包含多个与Linux运维相关的学习资源,帮助你深入理解和掌握这个领域。 1. **TCP/UDP SOCKET调试** TCP...

    51cto 发布的Linux运维趋势

    Linux运维趋势是一个不断演变的领域,它涉及到操作系统、网络管理、安全管理、自动化工具以及数据分析等多个方面。随着云计算、大数据和物联网等技术的发展,Linux运维的角色也在发生着深刻的变化。以下是对这一主题...

    linux运维经典命令

    Linux 运维经典命令汇总 Linux 作为一个广泛使用的操作系统,了解经典的 Linux 运维命令是非常重要的。本文总结了 18 条经典的 Linux 运维命令,涵盖了系统时间、内核、CPU、内存、硬盘、IO 使用、目录大小、系统...

    Linux运维入门到高级全套系列.pdf

    Linux运维入门到高级全套系列.pdf

    Linux运维趋势0-18期合集

    Linux运维趋势0-18期合集是一份包含18个不同主题的资源包,旨在深入探讨Linux操作系统在运维领域的最新动态、最佳实践和技术趋势。这份合集对于那些希望提升Linux运维技能或关注Linux运维行业发展的专业人士来说是极...

Global site tag (gtag.js) - Google Analytics