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密集型服务器vmstatus输出通常是一个很高的值,即cup花费在非内核代码上的cup时间占比应该很高。

IO密集型服务器cup会花费大量时间等待IO请求完成,则意味着很多任务处于非中断休眠状态(b列),并且wa数字也很高(等待IO时间)。

traceroute

tracert [-d] [-h maximum_hops] [-j computer-list] [-w timeout] target_name

-d    指定不对计算机名解析地址。
-h maximum_hops    指定查找目标的跳转的最大数目。
-j computer-list    指定在 computer-list 中松散源路由。
-w timeout       等待由 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常用的命令和工具的更多相关文章

  1. Linux常用脚本命令总结

    基本操作 通用操作 1. export 显示所有的环境变量,也可以获取到某个变量的详细信息: export # 显示所有 echo $SHELL # 只显示SHELL 2. whereis 使用系统自 ...

  2. Linux常用基础命令整理:关机命令、查看目录下文件命令等

    Linux常用基础命令整理:关机命令.查看目录下文件命令等 整理了一些Linux常用基础命令,欢迎指正. 首先记住四个热键,学会这四个键,收益一辈子. Tab按键---命令补齐功能Ctrl+c按键-- ...

  3. Linux 常用系统性能命令总结

    Linux 常用系统性能命令 查看系统负载top,free **w/uptime  ** 最后面三个数字表示1分钟,5分钟,15分钟平均有多少个进程占用CPU占用CPU的进程可以是Running,也可 ...

  4. linux常用网络命令ping和arping

    linux常用网络命令ping和arping ping 向目标主机发送icmp请求包 常用来测试当前主机与目标主机网络连接状况 常见选项 -c              设置发包的个数 -s      ...

  5. Linux常用基础命令(二)

    Linux常用基础命令 一.-ls--列表显示目录内容 二.-alias--设置别名 三.-du--统计目录及文件空间占用情况 四.-mkdir--创建新目录 五.-touch--创建空文件 六.-l ...

  6. linux 常用查看命令

    linux 常用查看命令 目录 linux 常用查看命令 linux 查看内存/进程-ps/top linux 查看磁盘存储-df linux 查看io读写-iotop linux 查看端口占用-ne ...

  7. Linux 常用脚本命令

    Linux 常用(脚本)命令 1. 统计目录下文件个数 ll |grep "^-"|wc -1 解释 grep "^-"表示抓取以-开头的行(其他忽略)

  8. linux常用的命令

    Linux简介及Ubuntu安装 Linux,免费开源,多用户多任务系统.基于Linux有多个版本的衍生.RedHat.Ubuntu.Debian 安装VMware或VirtualBox虚拟机.具体安 ...

  9. linux 常用awk命令

    linux awk命令详解awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每 ...

随机推荐

  1. 优化你的HTTPS(上),你需要这么做

    HTTP/2 HTTP 2.0即超文本传输协议 2.0,是下一代HTTP协议.是由互联网工程任务组(IETF)的Hypertext Transfer Protocol Bis (httpbis)工作小 ...

  2. virtual box启动error

      启动 VirtualBox 的时候提示 “获取 VirtualBox COM 对象失败” 错误详情 “获取 VirtualBox COM 对象失败” 的错误详情: 获取 VirtualBox CO ...

  3. 清除MSSQL历史记录

    declare @dt datetime select @dt = cast(N'2019-05-21T14:13:45' as datetime) exec msdb.dbo.sp_delete_b ...

  4. TDOA 之 基站接收数据

    基站主要 接收同步节点发来的同步信号,代码里定义为S信息. 以及标签节点发来的定位信号,代码中定义为T信号. 代码中使用中断以及帧过滤功能,对模块只接收自己关心设定好的信息,通过中断告知上层,而不是长 ...

  5. [GraphQL] Reuse GraphQL Selection Sets with Fragments

    Fragments are selection sets that can be used across multiple queries. They allow you to refactor re ...

  6. element ui table的所有属性

    1. table 的props: data: { type: Array, default: function() { return []; } }, size: String, width: [St ...

  7. PHP爬虫之queryList

    根据queryList 自己花了一个下午的时间写了一个爬星座数据的类,完全手写.附上代码 <?php require '../vendor/autoload.php'; use QL\Query ...

  8. *51nod 1815

    从若干个数中选出最大的任意两数取模之后的结果 严格次大值 对于此题 首先缩点 然后拓扑排序 维护到达每个点的最大值与严格次大值 感觉思路与代码都OK啊 then.... #include <io ...

  9. [转]C++重载()(强制类型转换运算符)

    在 C++ 中,类型的名字(包括类的名字)本身也是一种运算符,即类型强制转换运算符. 类型强制转换运算符是单目运算符,也可以被重载,但只能重载为成员函数,不能重载为全局函数.经过适当重载后,(类型名) ...

  10. codeforces193B

    CF193B Xor sol:发现好像非常不可做的样子,发现n,u都很小,大胆dfs,因为异或偶数次毫无卵用,只要判每次是否做2操作就是了,复杂度O(可过) #include <bits/std ...