zoukankan      html  css  js  c++  java
  • Linux环境下Netstat与PS的使用

    Linux下用netstat查看网络状态、端口状态

    在linux一般使用netstat 来查看系统端口使用情况步。

          netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的
          netstat命令的功能是显示网络连接、路由表和网络接口信息,可以让用户得知目前都有哪些网络连接正在运作。

          该命令的一般格式为:
          netstat [选项]
          命令中各选项的含义如下:
          -a 显示所有socket,包括正在监听的。
          -c 每隔1秒就重新显示一遍,直到用户中断它。
          -i 显示所有网络接口的信息,格式同“ifconfig -e”。
          -n 以网络IP地址代替名称,显示出网络连接情形。
          -r 显示核心路由表,格式同“route -e”。
          -t 显示TCP协议的连接情况。
          -u 显示UDP协议的连接情况。
          -v 显示正在进行的工作。

    1. netstat -an | grep LISTEN
          0.0.0.0的就是每个IP都有的服务,写明哪个IP的就是绑定那个IP的服务。

    2. netstat -tln
          用来查看linux的端口使用情况

    3. /etc/init.d/vsftp start
          是用来启动ftp端口~!


    4. netstat
          查看已经连接的服务端口(ESTABLISHED)

    5. netstat -a
          查看所有的服务端口(LISTEN,ESTABLISHED)

    6. sudo netstat -ap
          查看所有的服务端口并显示对应的服务程序名

    7. nmap <扫描类型><扫描参数>
    例如:
           nmap localhost
    nmap -p 1024-65535 localhost
    nmap -PT 192.168.1.127-245
    当我们使用 netstat -apn 查看网络连接的时候,会发现很多类似下面的内容:
    Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
    tcp 0 52 218.104.81.152:7710 211.100.39.250:29488 ESTABLISHED 6111/1
    显示这台服务器开放了7710端口,那么这个端口属于哪个程序呢?我们可以使用 lsof -i :7710 命令来查询:
    COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
    sshd 1990 root 3u IPv4 4836 TCP *:7710 (LISTEN) 54com.cn

    这样,我们就知道了7710端口是属于sshd程序的。

    Linux下用内建的PS工具查看当前进程

     查看它的man手册可以看到,ps命令能够给出当前系统中进程的快照。它能捕获系统在某一事件的进程状态。如果你想不断更新查看的这个状态,可以使用top命令。

     ps命令支持三种使用的语法格式

           1.UNIX 风格,选项可以组合在一起,并且选项前必须有“-”连字符

           2.BSD 风格,选项可以组合在一起,但是选项前不能有“-”连字符

           3.GNU 风格的长选项,选项前有两个“-”连字符 

    我们能够混用这几种风格,但是可能会发生冲突。本文使用 UNIX 风格的ps命令。这里有在日常生活中使用较多的ps命令的例子。 

    ps工具标识进程的5种状态码: 

    1. D 不可中断 uninterruptible sleep (usually IO)   
    2. R 运行 runnable (on run queue)   
    3. S 中断 sleeping   
    4. T 停止 traced or stopped   
    5. Z 僵死 a defunct (”zombie”) process 
    1)ps a 显示现行终端机下的所有程序,包括其他用户的程序。   
    2)ps -A 显示所有程序。   
    3)ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。   
    4)ps -e 此参数的效果和指定"A"参数相同。  例如:  ps -e|grep sshd  
    5)ps e 列出程序时,显示每个程序所使用的环境变量。   
    6)ps f 用ASCII字符显示树状结构,表达程序间的相互关系。   
    7)ps -H 显示树状结构,表示程序间的相互关系。   
    8)ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。   
    9)ps s 采用程序信号的格式显示程序状况。   
    10)ps S 列出程序时,包括已中断的子程序资料。   
    11)ps -t<终端机编号>   
    指定终端机编号,并列出属于该终端机的程序的状况。   
    12)ps u   
    以用户为主的格式来显示程序状况。   
    13)ps x   
    显示所有程序,不以终端机来区分。   
    最常用的方法是ps -aux,然后再利用一个管道符号导向到grep去查找特定的进程,然后再对特定的进程进行操作。 
    

    10个重要的ps命令实战

    1. 不加参数执行ps命令 

    这是一个基本的 ps 使用。在控制台中执行这个命令并查看结果。 

    不加选项执行ps命令

     不加选项执行ps命令 

    结果默认会显示4列信息。 

    • PID: 运行着的命令(CMD)的进程编号
    • TTY: 命令所运行的位置(终端)
    • TIME: 运行着的该命令所占用的CPU处理时间
    • CMD: 该进程所运行的命令 

    这些信息在显示时未排序。 

    2. 显示所有当前进程 

    使用 -a 参数。-a 代表 all。同时加上x参数会显示没有控制终端的进程。 

    1. $ ps -ax 

    这个命令的结果或许会很长。为了便于查看,可以结合less命令和管道来使用。 

    1. $ ps -ax | less 

    ps all 信息

    ps all 信息 

    3. 根据用户过滤进程 

    在需要查看特定用户进程的情况下,我们可以使用 -u 参数。比如我们要查看用户'pungki'的进程,可以通过下面的命令: 

    1. $ ps -u pungki

    通过用户过滤

    通过用户过滤 

    4. 通过cpu和内存使用来过滤进程 

    也许你希望把结果按照 CPU 或者内存用量来筛选,这样你就找到哪个进程占用了你的资源。要做到这一点,我们可以使用 aux 参数,来显示全面的信息: 

    1. $ ps -aux | less

    显示全面信息

    显示全面信息 

    当结果很长时,我们可以使用管道和less命令来筛选。 

    默认的结果集是未排好序的。可以通过 --sort命令来排序。 

    根据 CPU 使用来升序排序 

    1. $ ps -aux --sort -pcpu | less 

    根据cpu使用排序

     根据cpu使用排序

     根据 内存使用 来升序排序 

    1. $ ps -aux --sort -pmem | less 

    根据内存使用来排序

     根据内存使用来排序 

    我们也可以将它们合并到一个命令,并通过管道显示前10个结果: 

    1. $ ps -aux --sort -pcpu,+pmem | head -n 10 

    5. 通过进程名和PID过滤 

    使用 -C 参数,后面跟你要找的进程的名字。比如想显示一个名为getty的进程的信息,就可以使用下面的命令: 

    1. $ ps -C getty 

    通过进程名和PID过滤

    通过进程名和PID过滤 

    如果想要看到更多的细节,我们可以使用-f参数来查看格式化的信息列表: 

    1. $ ps -f -C getty 

    通过进程名和PID过滤

    通过进程名和PID过滤 

    6. 根据线程来过滤进程 

    如果我们想知道特定进程的线程,可以使用-L 参数,后面加上特定的PID。 

    1. $ ps -L 1213 

    根据线程来过滤进程

    根据线程来过滤进程 

    7. 树形显示进程 

    有时候我们希望以树形结构显示进程,可以使用 -axjf 参数。 

    1. $ps -axjf 

    树形显示进程

    树形显示进程 

    或者可以使用另一个命令。 

    1. $ pstree

    树形显示进程

     树形显示进程

     8. 显示安全信息

     如果想要查看现在有谁登入了你的服务器。可以使用ps命令加上相关参数: 

    1. $ ps -eo pid,user,args 

    参数 -e 显示所有进程信息,-o 参数控制输出。Pid,User 和 Args参数显示PID,运行应用的用户和该应用。 

    显示安全信息

    显示安全信息 

    能够与-e 参数 一起使用的关键字是args, cmd, comm, command, fname, ucmd, ucomm, lstart, bsdstart 和 start。 

    9. 格式化输出root用户(真实的或有效的UID)创建的进程 

    系统管理员想要查看由root用户运行的进程和这个进程的其他相关信息时,可以通过下面的命令: 

    1. $ ps -U root -u root u 

    -U 参数按真实用户ID(RUID)筛选进程,它会从用户列表中选择真实用户名或 ID。真实用户即实际创建该进程的用户。 

    -u 参数用来筛选有效用户ID(EUID)。 

    最后的u参数用来决定以针对用户的格式输出,由User, PID, %CPU, %MEM, VSZ, RSS, TTY, STAT, START, TIME 和 COMMAND这几列组成。 

    这里有上面的命令的输出结果: 

    show real and effective User ID

    show real and effective User ID 

    10. 使用PS实时监控进程状态 

    ps 命令会显示你系统当前的进程状态,但是这个结果是静态的。 

    当有一种情况,我们需要像上面第四点中提到的通过CPU和内存的使用率来筛选进程,并且我们希望结果能够每秒刷新一次。为此,我们可以将ps命令和watch命令结合起来。 

    1. $ watch -n 1 ps -aux --sort -pmem, -pcpu’  

    组合 ps 和 watch

     组合 ps 和 watch 

    如果输出太长,我们也可以限制它,比如前20条,我们可以使用head命令来做到。 

    1. $ watch -n 1 ps -aux --sort -pmem, -pcpu | head 20’ 

    组合 ps 和 watch

     组合 ps 和 watch 

    这里的动态查看并不像top或者htop命令一样。但是使用ps的好处是你能够定义显示的字段,你能够选择你想查看的字段。 

    举个例子,如果你只需要看名为'pungki'用户的信息,你可以使用下面的命令: 

    1. $ watch -n 1 ps -aux -U pungki u --sort -pmem, -pcpu | head 20’  

    组合 ps 和 watch

     组合 ps 和 watch 

    结论 

    你也许每天都会使用ps命令来监控你的Linux系统。但是事实上,你可以通过ps命令的参数来生成各种你需要的报表。 

    ps命令的另一个优势是ps是各种 Linux系统都默认安装的,因此你只要用就行了。 

    不要忘了通过 man ps来查看更多的参数。(LCTT 译注:由于 ps 命令古老而重要,所以它在不同的 UNIX、BSD、Linux 等系统中的参数不尽相同,因此如果你用的不是 Linux 系统,请查阅你的文档了解具体可用的参数。)

  • 相关阅读:
    Linux 下的类似Windows下Everything的搜索工具
    windows和linux环境下制作U盘启动盘
    程序调试手段之gdb, vxworks shell
    LeetCode 1021. Remove Outermost Parentheses (删除最外层的括号)
    LeetCode 1047. Remove All Adjacent Duplicates In String (删除字符串中的所有相邻重复项)
    LeetCode 844. Backspace String Compare (比较含退格的字符串)
    LeetCode 860. Lemonade Change (柠檬水找零)
    LeetCode 1221. Split a String in Balanced Strings (分割平衡字符串)
    LeetCode 1046. Last Stone Weight (最后一块石头的重量 )
    LeetCode 746. Min Cost Climbing Stairs (使用最小花费爬楼梯)
  • 原文地址:https://www.cnblogs.com/peteremperor/p/8666934.html
Copyright © 2011-2022 走看看