日志处理--高效Linux命令整理
序
在学习使用python处理日志开始阶段,对我阻力最大的莫过于对linux的不熟悉了,有种寸步难行的感觉。
在之后乱学一通之后,发现有点对我颇有益处:
- 学《鸟哥linux私房菜基础学习篇》,内容不多,但是对linux文件系统和基本组成有个基本的认识很有必要;
- 熟悉使用vim。开始的时候每次都下载到windowns再编辑实在太傻 了~;
- 使用ls -l + 通配符查找文件,复杂的查找使用find;
- 按自己需要学习linux文本领域的三大利器:grep(查找)、sed(编辑)、awk(分析)
大概整理下之前常用的命令:
一、find命令
1、查找当前目录下非空且满足命名要求的文件
find ./ ! -empty -name "*20160228*"
(注意空格)
2、在一堆文件中查询关键字所在的行
find ./-name "*20160228*" | xargs cat | grep ""
也可以直接使用
cat "*20160228*" | grep ""
cat一堆文件首先会把一堆文件合并为一个大文件。
3、查找并复制
find ./ -name "*201504101446*" | xargs -i cp {} ./yourDir
4、查找并删除
$find ./ -name "*201502*.log" -exec rm {} \;
【注】exec与xargs差异
find . -type f | xargs wc -l
仅获取当个文件行数
cat tcpSocketSer.py | wc -l
仅获取所有文件的总行数
find . -type f -exec wc -l {} \; | awk '{sum+=$1}END{print sum}'
二、awk命令
6、将某一列的值累加
cat flowgw_billing.log. | awk '{sum +=$5} END {print sum}'
7、更改文件列顺序
cat daily_partner_bill.log. | awk '{print $4"\t"$1"\t"$2"\t"$3}' > test2;mv test2 daily_partner_bill.log.
比较笨拙的做法,暂时想不到其他的了。
8、指定列条件并累加
cat .log | awk '$2=="hengDa" {sum +=$4} END {print sum}'
指定条件分开累计
cat .log | awk '$3=="selectName" {a[$2]+=$5;} END {for(i in a) print i,a[i]}'
9、分运营商初步统计
cat ??.log | \
awk '$3=="selectName" {a[$2]+=$5;} END {for(i in a) print i,a[i]}' | \
awk --re-interval '{if($1 ~/(133|153|180|181|189|177)[0-9]{8}/) print "CTCC",$1,$2;\
else if($ ~/(||||||||||||||||||)[-]{}/) print "CMCC",$,$;\
else if($ ~/(|||||||||)[-]{}/) print "CUCC",$,$;\
else print "None",$,$}END{}'
三、压缩文件
10、不解压查询压缩文件列表
gzip -dc fff.tar.gz | tar tvf -
如果压缩文件内带有文件夹则不行
11、不解压查看文件内容
zcat fff.tar.gz | cut -f -
输入内容会附带文件属性信息,可以用cut -f 按字段截取部分想要的
12、查询已打包文件内容
zcat *201504_30*.log | grep --binary-files=text | cut -f -
若需要匹配文件复杂,可以使用find命令衔接
find . -type f -name "201504_30" | xargs zcat {} \; | grep --binary-files=text ""
13、将当前文件夹所有压缩文件解压,并删除原文件
for tar in *.tar.gz; do tar xvf $tar; done
find ./ -name "*.gz" | xargs rm -rf
四、排序去重
由于uniq只是针对相邻行去重,所以通常和sort配合使用。
sort参数简要说明
-n 按数值
-k 按第二列
-r 反序
-t: 以冒号分隔
uniq参数简要说明
-i 忽略大小写字符的不同
-c 进行计数
-u 只显示唯一的行
-d 仅显示存在重复的行
14、查询累计用户数(每条记录包含一个电话号码)
cat ?????.log | cut -f | sort | uniq | wc -l
15、查询非电信累计用户数(添加正则匹配条件)
cat ?????.log | cut -f | sort | uniq | egrep -v '^1(33|53|77|8[019]|700).{7,8}$' | wc -l
五、文件合并
- 行合并
cat file1 file2
- 列合并
paste file1 file2
- 取文件交集
cat file1 file2 | sort | uniq -d
- 取文件并集
cat file1 file2 | sort | uniq
六、其他
16、查询进程是否存在
ps -ef | grep test.py | grep -v grep
grep本身存在一进程,容易误导
查询并杀死进程
ps -ef | grep test.py| grep -v grep | awk '{print $2}' | xargs kill -
17、查询端口占用情况
lsof -i:
18、查找文件并打包,以当前时间命名
find ./ -name "*log"| xargs tar -zvcf logs.`date +%Y-%m-%d`
其中,`date +%Y-%m-%d-%H%M%S`为可嵌入命令时间格式
19、在后台运行程序
nohup python test.py &
这种方式运行不稳定,可以使用Linux下的脚本管理工具supervior来统一管理。
20、标准输出和标准错误输出
find ./ -name *.log >& all_result
21、启动简易http服务器,实现简单的文件访问
$ python -m SimpleHTTPServer
在你想要启用访问的目录下执行
22、格式化json
我们经常需要用curl访问一个已存在的接口,但是返回结果不易查看,可以简单格式化
cat jsonString | python -mjson.tool
LINUX学习参考:
http://linuxtools-rst.readthedocs.org/zh_CN/latest/base/index.html
日志处理--高效Linux命令整理的更多相关文章
- carson常用linux命令整理
注:通过日常所用到的一些命令进行整理添加!! 完整的命令可参考:Linux命令大全 1.cp命令 cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录. 2.mount(挂载)命令 在li ...
- Linux 命令整理-tailf
1.tailf 跟踪日志文件 常用参数格式: tailf -n logfile 动态跟踪日志文件logfile,最初的时候打印文件的最后10行内容. 实例 查看从倒数多少行的日志信息 2.tail 跟 ...
- day02.2-常用Linux命令整理
Linux命令语法格式: 命令 [选项] [参数] 1). 命令:告诉Linux操作系统执行什么: 2). 选项:说明命令的运行方式.选项部分是以字符‘-’开始的: 3). 参数:说明 ...
- 常用快捷键以及linux命令整理
关于快捷键的使用,网上有很多.自己在使用过程中不断整理用到的知识点.一个项目完成了就把涉及用到的快捷键和命令介绍给大家,都是一些比较基础的,常用的命令.希望大家有好的知识点,命令可以及时交流整理. 一 ...
- 操作系统 - Linux命令整理 - Ubuntu
镜像 http://mirrors.163.com/ubuntu-releases/ 系统相关 Ubuntu14.04相关 安装 - VMware Install Ubuntu Continue In ...
- 50条LINUX命令整理
1. find 基本语法参数如下: find [PATH] [option] [action] # 与时间有关的参数: -mtime n : n为数字,意思为在n天之前的“一天内”被更改过的文件: - ...
- Linux命令整理(2018/9/9-2018/9/15)
根据本周的Linux学习进度,整理了部分Linux知识及常用命令,待完善…… 1.显示默认启动方式(默认启动目标): systemctl get-default 2.设置默认启动方式(默认启动目标): ...
- linux命令整理版(拷贝)
一.文件和目录操作命令 1.pwd 显示当前所在位置 -L 显示逻辑路径,忽略软链接文件 -P 显示物理路径时如果当前目录路径时软链接文件,则会显示软链接对应的源文件 2.cd 切换目录 cd - 回 ...
- Linux命令整理,用户管理,用户组管理,系统管理,目录管理常用命令
知识点梳理 Linux课堂笔记 学习目标 能够知道什么是Linux系统以及它的应用场景 能够独立完成安装VMware虚拟机和网络配置 能够独立完成安装CentOS以及远程终端SecureCRT 能够熟 ...
随机推荐
- Collector 源码分析
Collectors Collectors 配合 stream 可以实现 MapReduce 操作,也可以单独完成流中元素的收集. 收集器接口和实现 /** * 收集器接口 */ public int ...
- iOS 命令行打包--xcworkspace
参考: 打包的具体操作步骤: https://www.jianshu.com/p/6a0aa8cd2e97 打包时使用到的参数详解,参考这篇: https://debugtalk.com/post/i ...
- 多线程实现socket编程
服务端: server.py import threading import socket server=socket.socket() ip_port=("127.0.0.1", ...
- 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_09 序列化流_6_练习_序列化集合
- unittest自动化测试举例:自动读取ymal用例&调用接口并生成报告
用unittest框架写的接口自动化实现过程: 1.编写ymal格式用例: 2.导入ddt模块,该模块的主要功能是帮你读取ymal用例文件,自动获取内容并循环调用函数,具体见代码. 3.导入Beaut ...
- set()运算
1 计算两个list的关系时,可转化为set进行运算. 参考:https://www.runoob.com/python3/python3-set.html a =[1,4,3,5,6,6,7,7,7 ...
- sudo: pip:找不到命令
https://blog.csdn.net/fcku_88/article/details/84191288
- assert 与if
strlen的实现用不用加断言(assert)? http://en.cppreference.com/w/cpp/error/assert 自己写strlen实现会加assert判断空指针,Debu ...
- 时间同步,使用oracle自带的ctss
crsctl check ctss --observer mode cluvfy comp clocksync -检查crss为啥没启用 根据不同版本删除ntp的配置和服务 AIX: stops ...
- 内网渗透 - 提权 - Windows
MS提权 MS16- MS16- 提权框架 Sherlock 信息收集 ifconfig -a cat /etc/hosts arp -a route -n cat /proc/net/* ping扫 ...