美文网首页
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