zoukankan      html  css  js  c++  java
  • linux常用的命令和工具

     screen     管理会话工具

    与之相似的工具还有tmux

    # screen     // 进入一个回话 。还可以给会话取名  screen -S modify_screen   
    #vim screen.txt 
    hello world
     // 编辑一半ctrl+a+d 在后台运行不会中断。暂时退出 
     [detached from 28063.pts-0.tencent]
    # screen -ls      //查看screen
    There is a screen on:
        26046.pts-0.tencent    (Detached)
    1 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 0 -n -vvv tcp and host www.baidu.com -c 100 -w baidu.cap  #抓包
    然后发送一个curl请求测试
    # tcpdump -r test.cap   #读取
    reading from file test.cap, link-type LINUX_SLL (Linux cooked)
    19:02:21.002689 IP abao.40194 > 14.215.177.39.http: Flags [S], seq 1091719838, win 29200, options [mss 1460,nop,nop,TS val 2274559162 ecr 0,nop,wscale 7], length 0
    19:02:21.042510 IP 14.215.177.39.http > abao.40194: Flags [S.], seq 1769338520, ack 1091719839, win 8192, options [mss 1424,nop,nop,nop,nop,nop,nop,nop,nop,nop,nop,nop,nop,nop,wscale 5], length 0
    19:02:21.042566 IP abao.40194 > 14.215.177.39.http: Flags [.], ack 1, win 229, length 0
    19:02:21.042723 IP abao.40194 > 14.215.177.39.http: Flags [P.], seq 1:78, ack 1, win 229, length 77: HTTP: GET / HTTP/1.1
    19:02:21.082772 IP 14.215.177.39.http > abao.40194: Flags [.], ack 78, win 776, length 0
    19:02:21.084201 IP 14.215.177.39.http > abao.40194: Flags [P.], seq 1:1449, ack 78, win 776, length 1448: HTTP: HTTP/1.1 200 OK
    19:02:21.084225 IP abao.40194 > 14.215.177.39.http: Flags [.], ack 1449, win 251, length 0
    19:02:21.084204 IP 14.215.177.39.http > abao.40194: Flags [P.], seq 1449:2782, ack 78, win 776, length 1333: HTTP
    19:02:21.084240 IP abao.40194 > 14.215.177.39.http: Flags [.], ack 2782, win 273, length 0
    19:02:21.084414 IP abao.40194 > 14.215.177.39.http: Flags [F.], seq 78, ack 2782, win 273, length 0
    19:02:21.124333 IP 14.215.177.39.http > abao.40194: Flags [.], ack 79, win 776, length 0
    19:02:21.124408 IP 14.215.177.39.http > abao.40194: Flags [F.], seq 2782, ack 79, win 776, length 0
    19:02:21.124449 IP abao.40194 > 14.215.177.39.http: Flags [.], ack 2783, win 273, length 0

    Tcpdump + Wireshark组合实现:在Linux 里用tcpdump抓包,然后用wireshake分析包。

    防火墙规则端口转发

    我从外部8888端口访问nginx的80端口:  
    # iptables -t nat -A PREROUTING -p tcp --dport 8888 -j REDIRECT --to-port 80


    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 返回结果带颜色

  • 相关阅读:
    一款基于jQuery制作的焦点图片局部场景图片切换的特效
    一款基于jQuery打造的滤镜百叶窗幻灯片特效
    css3实现多种颜色的底部阴影按钮特效
    一款简单的css3打造的一面五星红旗特效
    一款jQuery打造的具有多功能切换的幻灯片特效
    一款jquery打造的特炫酷的全屏上下滚动的jquery焦点图特效
    一款基于jquery打造的全屏切换的焦点图切换特效
    一款运用纯CSS编写的android图标
    datagrid删除确认对话框
    好站好文滙集
  • 原文地址:https://www.cnblogs.com/xiaobaozi-95/p/10437265.html
Copyright © 2011-2022 走看看