`

linux 常用命令

 
阅读更多
查看内存
--------------------
top -c

查看进程
--------------------
-i 忽略大小写
ps -ef|grep -i tomcat


查看文件, 目录
--------------------
ls, ll

翻屏
ll|more
ll|less

size按k,m, g单位显示, 即给人看的
ll -h

按时间排序降(从最近到最远, 2016-2000)
ll -t
按时间排序升(从最远到最近, 2000-2016)
ll -rt

ll -t|tac

查看所有带空格的文件, 空格与通匹符并存(如: 'weloop neo_v3.08_ios.bin'), 空格用\转义
ll wloop\ neo*


移动文件, 包括重命名
--------------------
mv src dist


删除文件
--------------------
-f 强制, 不问
rm -f abc.log

-r 整个目录
rm -r /ys


查找文件内容
--------------------
grep -i tomcAt tomcat-users.xml


-o 只打印匹配的内容
-P 正则表达式
grep -oP "\"deviceId\":\d{1,}" $1 |sort -u -nk 2 -t: > $2
打印日志里所有的, "deviceId":1235234
去重并排序

awk, $5, 20:58:01, 统计每秒的tps
awk '{print $5}' access.log.20170714 |uniq -c| sort -rn > tps.0714

vim里面
--------------------
/\v\d{5}$
(使用了\v, 就不用\d\{5\}了)


文件复制(linux之间)
--------------------
从远程复制到本地
scp -r root@xxx.xxx.xxx.xxx:/data/dubbo/statistics/dao /data/dubbo/StatisticsDAO
-r为文件夹复制

从本地复制到远程
scp -r /data/dubbo/StatisticsDAO root@xxx.xxx.xxx.xxx:/data/dubbo/statistics/dao


查看进程启动时间
--------------------
ps -p 9965 -o lstart


查看并发,连接数, 通过端口号
--------------------
一般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: 以":"作为列的分隔符


查询文件|显示文件属性
--------------------
find . -name '*.xml' |xargs ls -l
*.xml 要用单引号包起来


查询文件|批量查找文件里的内容
--------------------
find . -name '*.xml' |xargs grep -i "xadatasource"
*.xml 要用单引号包起来


查询文件|批量替换文件里的内容
--------------------
find . -name dubbomonitor.properties -exec sed -i "s/localhost/10.30.181.22/" {} \;
要有-i才会执行替换, 否则只是模块替换结果并输出到screen



不同主机间复制文件
--------------------
scp -r root@139.129.202.174:/abc/abc .
这是基本用于, 从 174 复制abc(文件或文件夹)到当前目录

scp -r root@139.129.202.174:"/a\bc/a\ bc" .

scp -r root@139.129.202.174:'/a\bc/a\ bc' .
这是处理空格的办法, 用单引号或双引号都行, 空格前面要加转义符\



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}"

awk
--------------------
awk -F' ' '{print $1 " " $(NF-1)}' localhost_access_log.txt > abc.log
-F' '
使用空格当分隔符
'{print $1 " " $(NF-1)}'
打印第1行, 倒数第1行, 这2行之间间隔一个空格

使用多个分隔符, 如空格和逗号
-F'[ ,]'
使用多个分隔符, 正则表达式
-F'one|two'
-F'[ :]+'





#统计deviceId数量(去重)
--------------------
#使用方法:
#sh xxx src dst
#xxx 本脚本名称
#src netty的accesslog, 如access.log.20170714
#dst 统计后deviceId输出文件, 如result.20170714
#示例: sh abc.sh access.log.21070714 result.20170714
grep -oP "\"deviceId\":\d{1,}" $1 |sort -u -nk 2 -t: > $2

或者直接在控制台打印数量
grep -oP "\"deviceId\":\d{1,}" access.log.20170717 |sort -u -nk 2 -t: |wc -l


#统计tps
$5 为 "2017-07-18 23:59:59" 或 "23:59:59"
--------------------
awk '{print $5}' access.log.20170714 |uniq -c| sort -rn > tps.0714


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics