linux常用的命令和工具
screen 管理会话工具
与之相似的工具还有tmux
# screen // 进入一个回话 。还可以给会话取名 screen -S modify_screen
#vim screen.txt
hello world
// 编辑一半ctrl+a+d 在后台运行不会中断。暂时退出
[detached from .pts-.tencent]
# screen -ls //查看screen
There is a screen on:
.pts-.tencent (Detached)
Socket in /var/run/screen/S-root. # screen -r 26046 //重新连接会话
hello world
# exit //结束会话 如果由于某种原因其中一个会话死掉了,这时screen -ls会显示该会话为dead状态。
# screen -wipe //清除该会话
screen让进程后台运行的正常状态应该为(Detached)。
screen -ls,如果状态为Attached,此时用screen -r <session-id>也登不上
解决方法:screen -D -r <session-id> //先踢掉前一用户,再登陆。
screen直接把命令放入后台执行
screen -dmS 'jenkins' java -jar /usr/lib/jenkins/jenkins.war
# screen -ls 查看
There is a screen on:
12220.jenkins (Detached)
1 Socket in /var/run/screen/S-root.
supervisord 进程守护工具
supervisord将配置进程作为自己的子进程启动。并且可以配置为当进程意外停止或者服务器重启后,启动进程。
安装
# pip install supervisor
生成配置文件
# echo_supervisord_conf>/etc/supervisord.conf
修改配置文件
# vim /etc/supervisord.conf
[include]
files = /etc/supervisord.d/*.conf # vim /etc/supervisord.d/logstash.conf
[program:logstash]
command=/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/nginx.conf
autostart=true ;是否随supervisord启动
autorestart=true ;是否在服务挂了之后重启
startretries=3 ;启动尝试次数
stderr_logfile=/tmp/supervisord.err.log ;标准输出的位置
stdout_logfile=/tmp/supervisord.out.log ;标准错误输出的位置
loglevel=info ;日志的级别
查看所有子进程状态:
# supervisorctl status
打开|关闭子进程:
# supervisorctl start|stop logstash
打开|关闭所有进程:
# supervisorctl start|stop all
tcpdump 抓包工具
tcpdump 可以将网络中传送的数据包完全截获下来提供分析。
-vv 输出详细的报文信息。
-n 不把网络地址转换成名字
-nn 不进行端口名称的转换
-i 指定监听的网络接口
-c 指定抓多少个包 (有时候流量大的时候,如若不指定,靠人工CTRL+C还是抓的太多,影响服务器)
-w 将分析写入文件,而不是直接打印
-r 从文件中读取包(-w产生的文件)
-s 0 抓取完整的数据包,而不是默认的68个字节。
默认启动
tcpdump -vv # 直接启动tcpdump将监视第一个网络接口上所有流过的数据包
过滤主机
tcpdump -i eth1 host 192.186.1.1 #所有经过eth1 目标或源地址是192这个ip的网络数据包
tcpdump -i eth1 src host 192.168.1.1 #指定源地址
tcpdump -i eth1 dst host 192.168.1.1 #指定目标地址
过滤端口
tcpdump -i eth0 port 80 #抓取所有经过eth0,目标或者源端口是80的
tcpdump -i eth0 src/dst port 80 #指定目标/源地址
网络过滤
tcpdump -i eth0 [src/dst] net 192.168.1.0/24
协议过滤
tcpdump -i eth0 tcp/udp/icmp/arp/ip
常用表达式
非 : ! not
与 : && and
或 : || or
例子:
抓取所有经过eth1,目的地址是192.168.1.254或192.168.1.200端口是80的TCP数据包
# tcpdump -i eth1 '((tcp) and (port 80) and ((dst host 192.168.1.254) or (dst host 192.168.1.200)))'
# tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port 8080 and src net 192.168.1.0/24 -w target.cap
tcp: ip/icmp/tcp/udp/icmp这些协议等都要放到第一个参数的位置,用来过滤数据报的类型
-i eth1 : 只抓经过接口eth1的包
-t : 不显示时间戳
-s 0 : 抓取数据包时默认抓取长度为68字节。加上-s 0 后可以抓到完整的数据包
-c 100 : 只抓取100个数据包
dst port 8080 : 抓取目标端口是8080的数据包
src net 192.168.1.0/24 : 数据包的源网络地址为192.168.1.0/24
-w target.cap : 保存成cap文件,方便用wireshark分析
常用方式:
查看数据内容,建议用tcpdump -s 0 -w filename把数据包都保存下来,然后用wireshark的Follow TCP Stream/Follow UDP Stream来查看整个会话的内容。-s 0是抓取完整数据包,否则默认只抓68字节。
抓取到的包可以通过-r来读取
# tcpdump -i any -s -n -vvv tcp and host www.baidu.com -c -w baidu.cap #抓包
然后发送一个curl请求测试
# tcpdump -r test.cap #读取
reading from file test.cap, link-type LINUX_SLL (Linux cooked)
::21.002689 IP abao. > 14.215.177.39.http: Flags [S], seq , win , options [mss ,nop,nop,TS val ecr ,nop,wscale ], length
::21.042510 IP 14.215.177.39.http > abao.: Flags [S.], seq , ack , win , options [mss ,nop,nop,nop,nop,nop,nop,nop,nop,nop,nop,nop,nop,nop,wscale ], length
::21.042566 IP abao. > 14.215.177.39.http: Flags [.], ack , win , length
::21.042723 IP abao. > 14.215.177.39.http: Flags [P.], seq :, ack , win , length : HTTP: GET / HTTP/1.1
::21.082772 IP 14.215.177.39.http > abao.: Flags [.], ack , win , length
::21.084201 IP 14.215.177.39.http > abao.: Flags [P.], seq :, ack , win , length : HTTP: HTTP/1.1 OK
::21.084225 IP abao. > 14.215.177.39.http: Flags [.], ack , win , length
::21.084204 IP 14.215.177.39.http > abao.: Flags [P.], seq :, ack , win , length : HTTP
::21.084240 IP abao. > 14.215.177.39.http: Flags [.], ack , win , length
::21.084414 IP abao. > 14.215.177.39.http: Flags [F.], seq , ack , win , length
::21.124333 IP 14.215.177.39.http > abao.: Flags [.], ack , win , length
::21.124408 IP 14.215.177.39.http > abao.: Flags [F.], seq , ack , win , length
::21.124449 IP abao. > 14.215.177.39.http: Flags [.], ack , win , length
Tcpdump + Wireshark组合实现:在Linux 里用tcpdump抓包,然后用wireshake分析包。
防火墙规则端口转发
我从外部8888端口访问nginx的80端口:
# iptables -t nat -A PREROUTING -p tcp --dport -j REDIRECT --to-port
tcp连接状态 netstat ss
# netstat -n |awk '/^tcp/{++state[$NF]} END{for(key in state) print key,state[key]}'
# ss -ant |awk 'NR>1{++s[$1]} END {for(k in s) print k,s[k]}'
SYN-RECV 1
LISTEN 11
ESTAB 3
CLOSE-WAIT 128
FIN-WAIT-1 1
TIME-WAIT 29
# curl myip.ipip.net 查看出口ip
性能测试工具 nmon nmon有个分析工具
网络分析工具 ping nslookup traceroute mtr
网络流量 nethogs nload iftop
磁盘io iotop iostat dstat
vmstat 可以用来监控CUP、虚拟内存、IO等多个服务器指标。
cup密集型服务器vmstat
的us
输出通常是一个很高的值,即cup花费在非内核代码上的cup时间占比应该很高。
IO密集型服务器cup会花费大量时间等待IO请求完成,则意味着很多任务处于非中断休眠状态(b
列),并且wa
数字也很高(等待IO时间)。
traceroute
tracert [-d] [-h maximum_hops] [-j computer-list] [-w timeout] target_name
iftop 查看网络流量
-B 以bytes为单位显示流量(默认是bits), # iftop -B
-n使host信息默认直接都显示IP, # iftop -n
按n 显示本机ip
按p 显示两端的端口信息
按T 显示每个连接的总流量
TX:发送流量 cum: 运行iftop到目前时间的总流量 peak: 流量峰值 rates:分别表示过去 2s 10s 40s 的平均流量
RX:接收流量
TOTAL:总流量
ioftop 查看磁盘io
r:改变排序顺序。
o:只显示有IO输出的进程。
p:进程/线程的显示方式的切换。
a:显示累积使用量。
q:退出。
mtr 网络诊断工具
使用Internet控制消息协议(ICMP)数据包来测试Internet上两点之间的连接和传输。
-r --report以报告的方式显示,不动态显示
-c 发送ping数据包的个数,默认10个,等同ping -c
-n --no-dns不对IP地址做域名解析
# mtr -r www.elastic.co -n -c 20
Start: Sun Sep 29 18:29:03 2019
HOST: test Loss% Snt Last Avg Best Wrst StDev
1.|-- 100.99.93.130 0.0% 20 4.2 9.8 1.4 20.6 5.4
2.|-- 100.99.119.234 0.0% 20 0.8 0.9 0.8 1.7 0.0
3.|-- 10.200.159.205 20.0% 20 1.0 0.8 0.6 1.4 0.0
4.|-- 10.196.0.34 0.0% 20 2.7 4.0 2.4 30.2 6.1
5.|-- 10.196.0.78 0.0% 20 2.1 2.1 2.0 2.5 0.0
6.|-- 118.112.16.109 55.0% 20 4.2 9.7 3.9 52.5 16.0
7.|-- 182.140.229.205 90.0% 20 3.3 3.3 3.3 3.3 0.0
8.|-- 182.140.220.9 0.0% 20 10.1 6.4 2.7 10.1 2.3
9.|-- 202.97.65.197 0.0% 20 29.8 28.8 27.1 30.4 0.9
10.|-- 202.97.94.126 75.0% 20 28.6 28.6 28.5 28.7 0.0
11.|-- 202.97.12.33 25.0% 20 38.7 41.7 38.7 45.0 2.0
12.|-- 202.97.60.214 5.0% 20 153.5 151.8 140.3 164.7 7.0
13.|-- 129.250.2.155 30.0% 20 154.2 161.3 154.2 172.4 4.4
14.|-- 129.250.6.133 30.0% 20 163.6 163.5 162.9 163.7 0.0
15.|-- 117.103.177.78 0.0% 20 101.5 102.7 97.2 105.6 2.7
16.|-- 151.101.110.217 30.0% 20 159.6 163.4 159.6 168.3 1.7
结果说明:
Loss% 表示每跳的丢包百分比
Snt 表示发送10个数据包
Last 最后发送的数据包的延迟,单位ms
Avg 所有数据包的平均延时
Best 最短的延时
Wrst 最长的延时
StDev 延迟标准偏差。如果很高,说明测量值不一致,就要查看最佳和最差延迟测量,以确保平均值是实际延迟的表示,而不是太大的波动
在大多数情况下,根据配置,前2或3跳通常代表源主机的ISP,而最后2或3跳代表目标主机的ISP。中间的跳数是数据包遍历到达目的地的路由器。
mtr报告分析: https://cloud.tencent.com/developer/article/1332118
httping 测量网站延迟
HTTP请求的连接、发送请求、等待回应的时间。类似于ping这个网络工具,不过ping是发送icmp请求,httping是发送http请求。
常用参数:
-c ping几次
-l --use-ssl发送https请求
-Y 返回结果带颜色
linux常用的命令和工具的更多相关文章
- Linux常用脚本命令总结
基本操作 通用操作 1. export 显示所有的环境变量,也可以获取到某个变量的详细信息: export # 显示所有 echo $SHELL # 只显示SHELL 2. whereis 使用系统自 ...
- Linux常用基础命令整理:关机命令、查看目录下文件命令等
Linux常用基础命令整理:关机命令.查看目录下文件命令等 整理了一些Linux常用基础命令,欢迎指正. 首先记住四个热键,学会这四个键,收益一辈子. Tab按键---命令补齐功能Ctrl+c按键-- ...
- Linux 常用系统性能命令总结
Linux 常用系统性能命令 查看系统负载top,free **w/uptime ** 最后面三个数字表示1分钟,5分钟,15分钟平均有多少个进程占用CPU占用CPU的进程可以是Running,也可 ...
- linux常用网络命令ping和arping
linux常用网络命令ping和arping ping 向目标主机发送icmp请求包 常用来测试当前主机与目标主机网络连接状况 常见选项 -c 设置发包的个数 -s ...
- Linux常用基础命令(二)
Linux常用基础命令 一.-ls--列表显示目录内容 二.-alias--设置别名 三.-du--统计目录及文件空间占用情况 四.-mkdir--创建新目录 五.-touch--创建空文件 六.-l ...
- linux 常用查看命令
linux 常用查看命令 目录 linux 常用查看命令 linux 查看内存/进程-ps/top linux 查看磁盘存储-df linux 查看io读写-iotop linux 查看端口占用-ne ...
- Linux 常用脚本命令
Linux 常用(脚本)命令 1. 统计目录下文件个数 ll |grep "^-"|wc -1 解释 grep "^-"表示抓取以-开头的行(其他忽略)
- linux常用的命令
Linux简介及Ubuntu安装 Linux,免费开源,多用户多任务系统.基于Linux有多个版本的衍生.RedHat.Ubuntu.Debian 安装VMware或VirtualBox虚拟机.具体安 ...
- linux 常用awk命令
linux awk命令详解awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每 ...
随机推荐
- flask+uwsgi+supervisor部署流程
背景: 小鱼最近搞了个工程,python用的2.7(用3也可以),后端使用的是flask,服务器用的linux,使用 flask+uwsgi+supervisor部署 ,查阅相关博客.调试.实操,已经 ...
- 【Java】《Java程序设计基础教程》第一章学习
一.Java概述 1.介绍了Java语言的由来 2.Java语言的特点:简单.面向对象.分布式.高效解释执行.健壮.安全.结构中立.可移植.高效率.多线程.动态 3.Java语言的实现机制,引入虚拟机 ...
- ASP.NET MVC 入门7、Hellper与数据的提交与绑定
View视图 我们可以手写HTML代码, 也可以采用基类提供的Helper类完成HTM代码. 示例: <%=Html.ActionLink("首页","index& ...
- html学习 菜鸟
1HTML 不是一种编程语言,而是一种标记语言 2只有 <body>区域才会在浏览器中显示. 3<!DOCTYPE>声明有助于浏览器中正确显示网页.doctype 声明是不区分 ...
- vue-cli 创建项目不成功 原因为项目文件夹无node_modules文件 进行npm install不成功解决办法
不知道有没有童鞋出现过全局安装vue-cli是成功的,但是创建项目时命令行报了很多错误,如下 本来是需要按照提示依次切换到项目文件夹,再npm run dev 即可完成项目创建并启动的,但是又报了如下 ...
- Educational Codeforces Round 75 (Rated for Div. 2) B. Binary Palindromes
链接: https://codeforces.com/contest/1251/problem/B 题意: A palindrome is a string t which reads the sam ...
- Maximum Average Subarray II
Description Given an array with positive and negative numbers, find the maximum average subarray whi ...
- Java图形界面
图形界面 JFrame在swingbao JFrame jframe = new JFrame(); iframe.setVisible(true); //设置窗口显示 jframe.setLocat ...
- mount/umount
mount 挂载文件系统 6的 查看当前挂载情况 7的 将文件系统挂载到目录下,这个目录中的文件随着文件系统走,文件系统挂到那,里面的文件就在哪 挂载到其他地方 指定卷标的 指定文件UUID 指定ac ...
- 2017.11.7 Noip2017 考前模拟赛
----------------------------------T1---------------------------------- ——>数学老师的报复 题目描述 11 班数学大佬 Y ...