Linux高级命令
0.查找进程
ps -ef | grep java 查找java 进程
ps -ef | grep mysql 查找mysql进程
ps -ef | grep ${goal} 查找和${goal}相关的进程
1. curl Http命令
-H 添加header信息,如:curl -k -H "Content-md5: JKrtcl22ds24H298xcTY==" --url http://127.0.0.1:8001/apis/
-G/ --get 用GET方式请求
-d/ --data 追加参数,GET和POST方式都适合。
--data-urlencode 参数带特殊字符,需要进行 url encode编码。
2. 文件查找命令
find . |grep -e "\.java$" | wc -l 当前以及子目录下一共有多少个java类
find . |grep -e "\.vm$" | wc -l 当前以及子目录下一共有多少个vm模板
find . |grep -e "\.java$" | xargs grep "LogFactory.getLog" 当前以及子目录下所有包含LogFactory.getLog的Java类
find . |grep -e "\.java$" |xargs grep "LogFactory.getLog" |grep -v static 当前以及子目录下所有包含LogFactory.getLog的Java类,但过滤掉包含static的文件
find: 查找文件的命令 http://baike.baidu.com/view/801452.htm#1
grep: 文本搜索工具 http://baike.baidu.com/view/1057278.htm#sub1057278
xargs: 构造参数列表并运行命令 http://baike.baidu.com/view/2285387.htm#sub2285387
3. 进程命令
netstat -anp | grep 9100 得到占用9100端口的进程ID
ps -ef | grep 30529 查看进程的详细信息
netstat 监控TCP/IP网络的非常有用的工具 http://baike.baidu.com/view/28008.htm#sub28008
ps 进程查看命令 http://enterparse.blog.163.com/blog/static/11713797420096921232931/
4. 查看ip地址
ifconfig 或者 /sbin/ifconfig 查看本机ip地址
curl http://www.ip138.com/ip2city.asp 或者 浏览器下访问http://www.ip138.com/ 显示出口IP地址
ifconfig 显示网络设备的命令 http://baike.baidu.com/view/1001503.htm#sub1001503
curl 利用URL语法在命令行方式下工作的文件传输工具 http://baike.baidu.com/view/1326315.htm#sub1326315
5. 文件传输
scp /usr/local/tmp/test.txt root@120.11.22.33:/home/tmp/test 将本机/usr/local/tmp目录下的test.txt文件上传到远程主机的/home/tmp/test 目录下。
scp root@120.11.22.33:/home/tmp/goal.txt /usr/local/tmp 将远程主机/home/tmp目录下的goal.txt 文件下载到本机 /usr/local/tmp 目录下。
scp developer@10.110.2.7:/opt/data/logs/test_logs/20170711/LOCAL-TEST-APP-2-64/web-middle.stdout.log /usr/local/tmp
6. 文本分析命令
cmd/gm.sh "grep USER_QUERY output/logs/usr/alipay/alipay_message.log.2010-11-08" | grep OUTPUT | awk -F'userId' '{print $2}' | sort | uniq -c | wc -l
cmd/gm.sh 预发布机上的命令,一次轮询每台服务器执行命令
awk 文本处理工具 http://baike.baidu.com/view/209681.htm#sub209681
sort 对文本进行排序 http://baike.baidu.com/view/1374853.htm#sub1374853
uniq -c 去重,并显示相同行出现的次数 http://baike.baidu.com/view/1374849.htm#sub1374849
wc -l 统计行数 http://baike.baidu.com/view/24408.htm#sub24408
wc -l output/logs/cookie_logs/2/cookie_log 统计生产环境一台web服务器一天的cookie_log的行数
wc -l 统计文本的行数
cat cookie_log | awk '{print $8}' | awk -F"?" '{print $1}' | sort | uniq -c | sort -nr | head -10 调用次数Top 10 URL
uniq -c 去重,并显示相同行出现的次数
srot -nr 排序,按照数字排序,倒叙显示
head -10 显示前面10条记录
grep 'alipay_info.jsx' cookie_log|awk '{sum+=$12} END {print "Average = ", sum/NR}' 统计响应时间
7. 抓包工具
tcpdump -i lo -n 监听所有本地网络端口(localhost)的收到和发出的所有数据包
tcpdump -i lo -n 'port 9200' 监听本地网络端口(localhost)的收到和发出的所有数据包(端口号为9100)
tcpdump -A -n -s0 -i eth0 'host www.alipay.net and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)' 监听访问支付宝的数据包内容
-A 显示抓取的包的内容
-n 不要作DNS反向解析。否则的话,软件会试图去查询这个IP的域名(或者主机名)。通常,关闭这一项可以提高速度。(插一句,反查在 我看来相当可恶,没必 要又拖累速度。但几乎所有GNU的那些东西,如ping, traceroute,默认都会打开,真不了解那些开发是怎么想的。)
-i 后面必须指出发生接口调用通信的接口设备名称,使用ifconfig可以看到本机所有的网络设备名称
-s 这里配置0,表示不作 truncate,显示所有的数据
host: 指出APPSERV2的地址,也可以是域名
-X, 可以列出十六进制 (hex) 以及 ASCII 的数据包内容,对于监听数据包内容很有用。
tcp port: 指出接口服务监听的端口,一般都配在antx.properties中
(((ip[2:2] - ((ip0&0xf)<<2)) - ((tcp12&0xf0)>>2)) != 0):这个不用细究了,说的简单点,就是告诉tcpdump忽略掉tcp包中的SYN和FIN,只留下携带数据,对我们有意义的ACK包。
8. JVM监控工具:http://dolphin-ygj.iteye.com/blog/366216
9. linux命令行下格式化xml:xmllint --format test.xml
10. 从正式服务器中获取日志文件到预发布机器,例如获取gateway.log
./cmd/gm.sh 'cat output/logs/usr/gateway/gateway.log' > gateway.log
11. 匹配某个关键字,并对下一行进行合并,例如过滤出payCallService异常(合并下一行主要是为了获取异常码)
sed '/payCallService.pay is error/{N;s/\n/,/}' gateway.log > gateway_tmp.log
12. 过滤某个关键字,并akw输入某个关键域,并利用uniq进行去重
cat gateway_tmp.log | grep CREATE_TRADE_ERROR | awk -F, '{print $2}' | awk -F= '{print $2}' | uniq -c