美文网首页
Linux 常用命令二

Linux 常用命令二

作者: wayyyy | 来源:发表于2020-04-09 21:35 被阅读0次

    通过进程号获取进程启动路径

    通过进程号获取进程启动路径
    • 获取进程PID,然后进入/proc/进程PID
    • ls -l


      通过进程号获取进程启动命令.png
    或者使用pwdx命令
    pwdx [pid]
    

    ping

    确定网络主机的连通状态

    • 发指定个数ping包
      • linux
        ping -c 4 www.baidu.com 
        
      • windows
    • 指定ping报文数据包大小
      ping -s 512 www.baidu.com
      

    telnet

    用于确定目标主机端口是否打开

    telnet www.baicu.com 80
    

    nc

    • 规则
    • 连接服务器某端口
      可用来测试对方端口是否打开
      nc -v 127.0.0.1 12345
      
    • 在某个端口开启监听
      nc -v -l 12345
      
    • 用nc来发送接收文件
      • 接收端
        nc -l ip地址 端口号 > 接收的文件名
        
      • 发送端
        nc ip地址 端口号 < 发送的文件名
        

    lsof(list opened fd)

    lsof(list open files)是一个列出当前系统打开文件的工具:

    • 可用来查看当前进程加载的动态库。


      lsof.png
      • COMMAND
        进程的名称
      • PID
        进程标识符
      • USER
        进程所有者
      • FD
        文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等 TYPE:文件类型,如DIR、REG等
      • TYPE
        文件和目录分别称为 REG 和 DIR。而CHR 和 BLK,分别表示字符和块设备;或者 UNIX、FIFO 和 IPv4,分别表示 UNIX 域套接字、先进先出 (FIFO) 队列和网际协议 (IP) 套接字。
      • DEVICE
        指定磁盘的名称
      • SIZE
        文件的大小
      • NODE
        索引节点(文件在磁盘上的标识)
      • NAME
        打开文件的确切名称
    • 查看谁在使用某个文件
      lsof abc.txt
      
    • 查看指定进程打开的文件句柄
      lsof -c mysql
      lsof -p 222  
      
    • 列出TCP连接网络连接信息
      lsof -i tcp -Pn 
      
    • 列出UDP连接网络连接信息
      lsof -i udp
      
    • 查找谁在使用某个端口
      lsof -i tcp:80
      

    netstat

    netstat -[atunlp]
    
    -a:列出目前系统上所有的连接,监听,socket
    -t:列出tcp网络数据包数据
    -u:列出udp网络数据包数据
    -n:不列出进程的服务名称,以端口号来显示
    -l:列出目前正在监听的网络
    -p:列出网络服务的PID
    
    查看某个端口是否被占用
    netstat -anp | grep 80
    
    统计TCP套接字各状态信息
    netstat -ant | awk '/^tcp/ {++S[$NF]} END {for(a in S) print (a,S[a])}'
    
    netstat 中Recv-Q 和 Send-Q的意义
    • 当套接字处于连接状态时

      • Recv-Q 表示套接字缓冲还没有被应用程序取走的字节数(即接收队列长度)
      • Send-Q 表示还没有被远端主机确认的字节数(即发送队列长度)
    • 当套接字处于监听状态时

      • Recv-Q 表示全连接队列的长度。
      • Send-Q 表示全连接队列的最大长度。

      全连接,是指服务器收到了客户端的 ACK,完成了 TCP 三次握手,然后就会把这个连接挪到全连接队列中。这些全连接中的套接字,还需要被 accept() 系统调用取走


    pstack

    pstack 可用来跟踪进程栈,这个命令在排查进程假死的问题时非常有用。可以在一段时间内,多次执行pastck查看堆栈,若发现代码总是停留在同一个位置,那么很可能就是出问题的地方。

    pstack pid > log
    

    tcpdump

    tcpdump手册

    规则

    第一种是关于类型的关键字,主要包括:hostnetport
    第二种是确定传输方向的关键字,主要包括srcdstdst or srcdst and src
    第三种是协议的关键字,主要包括iparprarptcpudp
    除了这三种类型的关键字外,还有其他的如:
    broadcastgatewaylessgreater 三种逻辑运算,
    取非运算是: not 或 !,与运算是and 或 &&,或运算 是or 或 ||

    用例
    • 抓取所有网卡
      tcpdump -i any
      
    • 获取指定网络接口的数据包
      tcpdump -i eth0   
      
    • 查看通过tcp端口80的报文
      tcpdump tcp port 80
      
    • 截获所有 210.27.48.1 的主机收到的和发出的所有的数据包
      tcpdump host 192.168.17.245
      
    • 截获主机 210.27.48.1 和 主机 210.27.48.2 或 210.27.48.3 的通信
      tcpdump host 210.27.48.1 and / (210.27.48.2 or 210.27.48.3 /)
      
    • 打印十六进制的网络数据包
      tcpdump -X dst port 25002
      
    • 抓取多播数据
      tcpdump - v multicast and not broadcast
      
    • 保存为cap文件
      tcpdump host 192.168.17.245 -w 11.cap
      

    参考资料

    1. linux lsof命令详解

    相关文章

      网友评论

          本文标题:Linux 常用命令二

          本文链接:https://www.haomeiwen.com/subject/mzrhyhtx.html