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. flask+uwsgi+supervisor部署流程

    背景: 小鱼最近搞了个工程,python用的2.7(用3也可以),后端使用的是flask,服务器用的linux,使用 flask+uwsgi+supervisor部署 ,查阅相关博客.调试.实操,已经 ...

  2. 【Java】《Java程序设计基础教程》第一章学习

    一.Java概述 1.介绍了Java语言的由来 2.Java语言的特点:简单.面向对象.分布式.高效解释执行.健壮.安全.结构中立.可移植.高效率.多线程.动态 3.Java语言的实现机制,引入虚拟机 ...

  3. ASP.NET MVC 入门7、Hellper与数据的提交与绑定

    View视图 我们可以手写HTML代码, 也可以采用基类提供的Helper类完成HTM代码. 示例: <%=Html.ActionLink("首页","index& ...

  4. html学习 菜鸟

    1HTML 不是一种编程语言,而是一种标记语言 2只有 <body>区域才会在浏览器中显示. 3<!DOCTYPE>声明有助于浏览器中正确显示网页.doctype 声明是不区分 ...

  5. vue-cli 创建项目不成功 原因为项目文件夹无node_modules文件 进行npm install不成功解决办法

    不知道有没有童鞋出现过全局安装vue-cli是成功的,但是创建项目时命令行报了很多错误,如下 本来是需要按照提示依次切换到项目文件夹,再npm run dev 即可完成项目创建并启动的,但是又报了如下 ...

  6. 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 ...

  7. Maximum Average Subarray II

    Description Given an array with positive and negative numbers, find the maximum average subarray whi ...

  8. Java图形界面

    图形界面 JFrame在swingbao JFrame jframe = new JFrame(); iframe.setVisible(true); //设置窗口显示 jframe.setLocat ...

  9. mount/umount

    mount 挂载文件系统 6的 查看当前挂载情况 7的 将文件系统挂载到目录下,这个目录中的文件随着文件系统走,文件系统挂到那,里面的文件就在哪 挂载到其他地方 指定卷标的 指定文件UUID 指定ac ...

  10. 2017.11.7 Noip2017 考前模拟赛

    ----------------------------------T1---------------------------------- ——>数学老师的报复 题目描述 11 班数学大佬 Y ...