linux ps -ef ss,pstree和ss命令详解

pstree查看进程树

将所有进程以树状形式显示,表示进程间的关系

以init进程(PID为1)为根或者指定PID的进程为根

init进程,它是内核启动的第一个用户级进程

pstree -V查看版本,这里介绍22.15

root@ubuntusvn:~# pstree -V

pstree (PSmisc) 22.15

版权所有 (C) 1993-2009 Werner Almesberger 和 Craig Small

PSmisc 无任何保证。

该程序为自由软件,欢迎你在 GNU 通用公共许可证(GPL) 下重新发布。

详情可参阅 COPYING 文件。

相同进程或线程合并显示,进程名前有相同进程的数量,只显示进程名,进程的子线程用大括号{}表示

root@ubuntusvn:~# pstree

init─┬─acpid

├─atd

├─cron

├─dbus-daemon

├─6*[getty]

├─httpd───10*[httpd]

├─irqbalance

├─mysqld───149*[{mysqld}]

├─nginx───6*[nginx]

├─php5-fpm───5*[php5-fpm]

├─rsyslogd───3*[{rsyslogd}]

├─snmpd

├─sshd───sshd───bash───pstree

├─su───java───66*[{java}]

├─udevd───2*[udevd]

├─upstart-socket-

├─upstart-udev-br

├─vim

├─vsftpd

├─whoopsie───{whoopsie}

└─wrapper-linux-x─┬─java───56*[{java}]

└─{wrapper-linux-x}

pstree -n 按进程号排序

root@ubuntusvn:~# pstree -n

init─┬─upstart-udev-br

├─udevd───2*[udevd]

├─vsftpd

├─upstart-socket-

├─sshd───sshd─┬─bash

│ └─bash───pstree

├─rsyslogd───3*[{rsyslogd}]

├─dbus-daemon

├─6*[getty]

├─cron

├─atd

├─acpid

├─irqbalance

├─whoopsie───{whoopsie}

├─wrapper-linux-x─┬─{wrapper-linux-x}

│ └─java───56*[{java}]

├─httpd───10*[httpd]

├─mysqld───76*[{mysqld}]

├─su───java───66*[{java}]

├─php5-fpm───5*[php5-fpm]

├─snmpd

├─vim

└─nginx───6*[nginx]

pstree -p显示进程及其子线程,并且显示PID

pstree -c显示进程及其子线程,与pstree -p相同,只是不显示PID

root@ubuntusvn:~# pstree -p

init(1)─┬─acpid(1040)

├─atd(1039)

├─cron(1038)

├─dbus-daemon(968)

├─getty(1021)

├─getty(1027)

├─getty(1031)

├─getty(1032)

├─getty(1035)

├─getty(2519)

├─httpd(1635)─┬─httpd(980)

│ ├─httpd(2443)

│ ├─httpd(2736)

│ ├─httpd(3571)

│ ├─httpd(3804)

│ ├─httpd(5208)

│ ├─httpd(5223)

│ ├─httpd(5334)

│ ├─httpd(30936)

│ └─httpd(31365)

├─irqbalance(1140)

├─mysqld(2229)─┬─{mysqld}(2241)

│ ├─{mysqld}(2242)

│ ├─{mysqld}(2243)

│ ├─{mysqld}(2244)

│ ├─{mysqld}(2245)

│ ├─{mysqld}(2246)

│ ├─{mysqld}(2247)

│ ├─{mysqld}(2248)

│ ├─{mysqld}(2249)

│ ├─{mysqld}(2250)

│ ├─{mysqld}(2252)

│ ├─{mysqld}(2253)

│ ├─{mysqld}(2254)

│ ├─{mysqld}(2255)

│ ├─{mysqld}(2264)

│ ├─{mysqld}(9669)

│ ├─{mysqld}(11878)

│ ├─{mysqld}(11881)

│ ├─{mysqld}(11905)

│ ├─{mysqld}(11907)

│ ├─{mysqld}(11909)

│ ├─{mysqld}(11910)

........

pstree -p [PID] 以指定PID的进程为根,显示进程名和进程号

root@ubuntusvn:~# pstree -p 30395

nginx(30395)─┬─nginx(30396)

├─nginx(30397)

├─nginx(30398)

├─nginx(30399)

├─nginx(30400)

└─nginx(30401)

pstree -u显示进程所属用户名

root@ubuntusvn:~# pstree -u

init─┬─acpid

├─atd(daemon)

├─cron

├─dbus-daemon(messagebus)

├─6*[getty]

├─httpd(svnuser)───10*[httpd]

├─irqbalance

├─mysqld(mysql)───71*[{mysqld}]

├─nginx───6*[nginx(nginx)]

├─php5-fpm───5*[php5-fpm(www-data)]

├─rsyslogd(syslog)───3*[{rsyslogd}]

├─snmpd(snmp)

├─sshd───sshd───bash───pstree

├─su(artifactory)───java───66*[{java}]

├─udevd───2*[udevd]

├─upstart-socket-

├─upstart-udev-br

├─vim

├─vsftpd

├─whoopsie(whoopsie)───{whoopsie}

└─wrapper-linux-x(svnuser)─┬─java───56*[{java}]

└─{wrapper-linux-x}

pstree -a 显示每个程序的完整指令,包含路径,可能显示不全,配合-l才完整显示

root@ubuntusvn:~# pstree -a

init

├─acpid -c /etc/acpi/events -s /var/run/acpid.socket

├─atd

├─cron

├─dbus-daemon --system --fork --activation=upstart

├─getty -8 38400 tty4

├─getty -8 38400 tty5

├─getty -8 38400 tty2

├─getty -8 38400 tty3

├─getty -8 38400 tty6

├─getty -8 38400 tty1

├─httpd -f /opt/csvn/data/conf/httpd.conf -k graceful

│ ├─httpd -f /opt/csvn/data/conf/httpd.conf -k graceful

│ ├─httpd -f /opt/csvn/data/conf/httpd.conf -k graceful

│ ├─httpd -f /opt/csvn/data/conf/httpd.conf -k graceful

│ ├─httpd -f /opt/csvn/data/conf/httpd.conf -k graceful

│ ├─httpd -f /opt/csvn/data/conf/httpd.conf -k graceful

│ ├─httpd -f /opt/csvn/data/conf/httpd.conf -k graceful

│ ├─httpd -f /opt/csvn/data/conf/httpd.conf -k graceful

│ ├─httpd -f /opt/csvn/data/conf/httpd.conf -k graceful

│ ├─httpd -f /opt/csvn/data/conf/httpd.conf -k graceful

│ └─httpd -f /opt/csvn/data/conf/httpd.conf -k graceful

├─irqbalance

├─mysqld

│ └─96*[{mysqld}]

├─nginx

│ ├─nginx

│ ├─nginx

│ ├─nginx

│ ├─nginx

│ ├─nginx

│ └─nginx

├─php5-fpm

│ ├─php5-fpm

│ ├─php5-fpm

│ ├─php5-fpm

│ ├─php5-fpm

│ └─php5-fpm

├─rsyslogd -c5

│ └─3*[{rsyslogd}]

├─snmpd -Lsd -Lf /dev/null -u snmp -g snmp -I -smux -p /var/run/snmpd.pid

├─sshd -D

│ └─sshd

│ └─bash

│ └─pstree -a

├─su - artifactory --shell=/bin/sh -c exec /tar/artifactory-2.5.1.1/bin/artifactory.init /tar/artifactory-2.5.1.1/etc/jetty.xml >>/tar/artifactory-2.5.1.1/logs/consoleout.log 2>&1

│ └─java -server -Xms1g -Xmx1g -Xss512k -XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:PermSize=64M -XX:MaxPermSize=128M -XX:+DisableExplicitGC -XX:MaxTenuringThreshold=31-XX:+Use

│ └─66*[{java}]

├─udevd --daemon

│ ├─udevd --daemon

│ └─udevd --daemon

├─upstart-socket- --daemon

├─upstart-udev-br --daemon

├─vim erp.conf.sav

├─vsftpd

├─whoopsie

│ └─{whoopsie}

└─wrapper-linux-x /opt/csvn/bin/../data/conf/csvn-wrapper.conf wrapper.syslog.ident=csvn wrapper.pidfile=/opt/csvn/bin/../data/run/csvn.pid wrapper.name=csvnwrapper.displayname

├─java -XX:MaxPermSize=128m -Djetty.home=../appserver -Djetty.port=3343 -Djetty.ssl.port=4434 -Xms64m -Xmx512m -Djava.library.path=../lib -classpath ../lib/wrapper.jar-Dwrapper

│ └─56*[{java}]

└─{wrapper-linux-x}

pstree -l 不截断长行,一般与-a连用,显示完整的命令路径

root@ubuntusvn:~# pstree -al

init

├─acpid -c /etc/acpi/events -s /var/run/acpid.socket

├─atd

├─cron

├─dbus-daemon --system --fork --activation=upstart

├─getty -8 38400 tty4

├─getty -8 38400 tty5

├─getty -8 38400 tty2

├─getty -8 38400 tty3

├─getty -8 38400 tty6

├─getty -8 38400 tty1

├─httpd -f /opt/csvn/data/conf/httpd.conf -k graceful

│ ├─httpd -f /opt/csvn/data/conf/httpd.conf -k graceful

│ ├─httpd -f /opt/csvn/data/conf/httpd.conf -k graceful

│ ├─httpd -f /opt/csvn/data/conf/httpd.conf -k graceful

│ ├─httpd -f /opt/csvn/data/conf/httpd.conf -k graceful

│ ├─httpd -f /opt/csvn/data/conf/httpd.conf -k graceful

│ ├─httpd -f /opt/csvn/data/conf/httpd.conf -k graceful

│ ├─httpd -f /opt/csvn/data/conf/httpd.conf -k graceful

│ ├─httpd -f /opt/csvn/data/conf/httpd.conf -k graceful

│ ├─httpd -f /opt/csvn/data/conf/httpd.conf -k graceful

│ └─httpd -f /opt/csvn/data/conf/httpd.conf -k graceful

├─irqbalance

├─mysqld

│ └─76*[{mysqld}]

├─nginx

│ ├─nginx

│ ├─nginx

│ ├─nginx

│ ├─nginx

│ ├─nginx

│ └─nginx

├─php5-fpm

│ ├─php5-fpm

│ ├─php5-fpm

│ ├─php5-fpm

│ ├─php5-fpm

│ └─php5-fpm

├─rsyslogd -c5

│ └─3*[{rsyslogd}]

├─snmpd -Lsd -Lf /dev/null -u snmp -g snmp -I -smux -p /var/run/snmpd.pid

├─sshd -D

│ └─sshd

│ ├─bash

│ └─bash

│ └─pstree -al

├─su - artifactory --shell=/bin/sh -c exec /tar/artifactory-2.5.1.1/bin/artifactory.init /tar/artifactory-2.5.1.1/etc/jetty.xml >>/tar/artifactory-2.5.1.1/logs/consoleout.log 2>&1

│ └─java -server -Xms1g -Xmx1g -Xss512k -XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:PermSize=64M -XX:MaxPermSize=128M -XX:+DisableExplicitGC -XX:MaxTenuringThreshold=31 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -Djava.awt.headless=true -Djava.awt.headless=true -XX:NewSize=512m -XX:MaxNewSize=512m -XX:-UseConcMarkSweepGC -XX:+UseParNewGC -server -Djetty.home=/tar/artifactory-2.5.1.1 -Dartifactory.home=/tar/artifactory-2.5.1.1 -Dfile.encoding=UTF8 -cp /tar/artifactory-2.5.1.1/artifactory.jar:/tar/artifactory-2.5.1.1/lib/jetty-ajp-7.0.2.v20100331.jar:/tar/artifactory-2.5.1.1/lib/jetty-continuation-7.0.2.v20100331.jar:/tar/artifactory-2.5.1.1/lib/jetty-http-7.0.2.v20100331.jar:/tar/artifactory-2.5.1.1/lib/jetty-io-7.0.2.v20100331.jar:/tar/artifactory-2.5.1.1/lib/jetty-security-7.0.2.v20100331.jar:/tar/artifactory-2.5.1.1/lib/jetty-server-7.0.2.v20100331.jar:/tar/artifactory-2.5.1.1/lib/jetty-servlet-7.0.2.v20100331.jar:/tar/artifactory-2.5.1.1/lib/jetty-util-7.0.2.v20100331.jar:/tar/artifactory-2.5.1.1/lib/jetty-webapp-7.0.2.v20100331.jar:/tar/artifactory-2.5.1.1/lib/jetty-xml-7.0.2.v20100331.jar:/tar/artifactory-2.5.1.1/lib/servlet-api-2.5.jar:/tar/artifactory-2.5.1.1/lib/wrapper.jar org.artifactory.standalone.main.Main /tar/artifactory-2.5.1.1/etc/jetty.xml

│ └─66*[{java}]

├─udevd --daemon

│ ├─udevd --daemon

│ └─udevd --daemon

├─upstart-socket- --daemon

├─upstart-udev-br --daemon

├─vim erp.conf.sav

├─vsftpd

├─whoopsie

│ └─{whoopsie}

└─wrapper-linux-x /opt/csvn/bin/../data/conf/csvn-wrapper.conf wrapper.syslog.ident=csvn wrapper.pidfile=/opt/csvn/bin/../data/run/csvn.pid wrapper.name=csvn wrapper.displayname=CSVN Console wrapper.daemonize=TRUE wrapper.statusfile=/opt/csvn/bin/../data/run/csvn.status wrapper.java.statusfile=/opt/csvn/bin/../data/run/csvn.java.status

├─java -XX:MaxPermSize=128m -Djetty.home=../appserver -Djetty.port=3343 -Djetty.ssl.port=4434 -Xms64m -Xmx512m -Djava.library.path=../lib -classpath ../lib/wrapper.jar -Dwrapper.key=fbjCafq7XJRD2XTW -Dwrapper.port=32000 -Dwrapper.jvm.port.min=31000 -Dwrapper.jvm.port.max=31999 -Dwrapper.disable_console_input=TRUE -Dwrapper.pid=1295 -Dwrapper.version=3.4.1 -Dwrapper.native_library=wrapper -Dwrapper.service=TRUE -Dwrapper.cpu.timeout=10 -Dwrapper.jvmid=1 org.tanukisoftware.wrapper.WrapperJarApp ../appserver/start.jar

│ └─56*[{java}]

└─{wrapper-linux-x}

pstree -A 用 ASCII 画线符

root@ubuntusvn:~# pstree -A

init-+-acpid

|-atd

|-cron

|-dbus-daemon

|-6*[getty]

|-httpd---10*[httpd]

|-irqbalance

|-mysqld---86*[{mysqld}]

|-nginx---6*[nginx]

|-php5-fpm---5*[php5-fpm]

|-rsyslogd---3*[{rsyslogd}]

|-snmpd

|-sshd---sshd---bash---pstree

|-su---java---66*[{java}]

|-udevd---2*[udevd]

|-upstart-socket-

|-upstart-udev-br

|-vim

|-vsftpd

|-whoopsie---{whoopsie}

`-wrapper-linux-x-+-java---56*[{java}]

`-{wrapper-linux-x}

pstree -h 高亮显示当前正在使用的进程

0ec5f27633ce53e5faf48e317a2b0bc3.png

pstree -H [PID] 高亮显示 "进程号" 指定的进程及其父进程

018ec736b428dba4d0fed14462a1369a.png

pstree -s [PID] 显示所选进程的父级进程

root@ubuntusvn:~# pstree -s 5707

init───su───java───{java}

pstree -G 使用 VT100 划线符

pstree -U 使用 UTF-8 (Unicode) 划线符

ss获取socket统计信息

它可以显示和netstat类似的内容。能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。

当服务器的socket连接数量变得非常大时,无论是使用netstat命令还是直接cat /proc/net/tcp,执行速度都会很慢。

ss快的秘诀在于,它利用到了TCP协议栈中tcp_diag。tcp_diag是一个用于分析统计的模块,可以获得Linux 内核中第一手的信息,这就确保了ss的快捷高效。

ss -h ss的使用帮助

root@ubuntusvn:~# ss -h

Usage: ss [ OPTIONS ]

ss [ OPTIONS ] [ FILTER ]

-h, --help this message

-V, --version output version information

-n, --numeric don't resolve service names

-r, --resolve resolve host names

-a, --all display all sockets

-l, --listening display listening sockets

-o, --options show timer information

-e, --extended show detailed socket information

-m, --memory show socket memory usage

-p, --processes show process using socket

-i, --info show internal TCP information

-s, --summary show socket usage summary

-4, --ipv4 display only IP version 4 sockets

-6, --ipv6 display only IP version 6 sockets

-0, --packet display PACKET sockets

-t, --tcp display only TCP sockets

-u, --udp display only UDP sockets

-d, --dccp display only DCCP sockets

-w, --raw display only RAW sockets

-x, --unix display only Unix domain sockets

-f, --family=FAMILY display sockets of type FAMILY

-A, --query=QUERY, --socket=QUERY

QUERY := {all|inet|tcp|udp|raw|unix|packet|netlink}[,QUERY]

-D, --diag=FILE Dump raw information about TCP sockets to FILE

-F, --filter=FILE read filter information from FILE

FILTER := [ state TCP-STATE ] [ EXPRESSION ]

ss -V ss版本

root@ubuntusvn:~# ss -V

ss utility, iproute2-ss111117

ss -n 不解析服务名称,显示服务对应的端口号,比如mysql:3306;https:443;ssh:22。Ss命令直接显示服务名称

[root@localhost ~]# ss

状态 接收队列 发送队列 本地地址:端口号 对等地址:端口号

State Recv-Q Send-Q Local Address:Port Peer Address:Port

ESTAB 0 0 192.168.1.191:https 192.168.5.89:58426

......

[root@localhost ~]# ss -n

State Recv-Q Send-Q Local Address:Port Peer Address:Port

ESTAB 0 0 192.168.1.191:443 192.168.5.89:58426

......

ss -r 解析主机名

root@ubuntusvn:~# ss -r

State Recv-Q Send-Q Local Address:Port Peer Address:Port

ESTAB 0 0 ubuntusvn:https 192.168.5.89:58426

......

ss -l 统计处于监听状态的socket,默认情况下它们是被忽略的

root@ubuntusvn:~# ss -l

State Recv-Q Send-Q Local Address:Port Peer Address:Port

LISTEN 0 50 *:3306 *:*

LISTEN 0 50 :::3343 :::*

LISTEN 0 511 *:http *:*

LISTEN 0 100 :::4434 :::*

LISTEN 0 511 *:9876 *:*

LISTEN 0 32 *:ftp *:*

LISTEN 0 128 :::ssh :::*

LISTEN 0 128 *:ssh *:*

LISTEN 0 511 *:https *:*

LISTEN 0 511 *:4444 *:*

LISTEN 0 1 127.0.0.1:32000 *:*

LISTEN 0 50 *:8001 *:*

LISTEN 0 511 *:9990 *:*

LISTEN 0 128 127.0.0.1:9000 *:*

LISTEN 0 511 *:8008 *:*

ss -a 显示所有状态的socket(ESTAB、CLOSE-WAIT、TIME-WAIT、LISTEN等)

ss -o 显示计时器信息,keepalive默认为120min,可以设置;on是重发时间

[root@localhost ~]# ss -o

State Recv-Q Send-Q Local Address:Port Peer Address:Port

ESTAB 0 0 192.168.1.191:mysql 192.168.5.17:64906 timer:(keepalive,17min,0)

ESTAB 0 52 192.168.1.191:ssh 192.168.5.2:57611 timer:(on,448ms,0)

......

ss -e 显示详细的socket信息

[root@localhost ~]# ss -e

State Recv-Q Send-Q Local Address:Port Peer Address:Port

ESTAB 0 0 192.168.1.191:3306 192.168.5.82:63573 timer:(keepalive,7min43sec,0) uid:107 ino:13561506 sk:ffff8801135f57c0

ESTAB 0 0 192.168.1.191:3306 192.168.1.203:54196 timer:(keepalive,12min,0) uid:107 ino:13569965 sk:ffff8801b4f16540

ESTAB 0 52 192.168.1.191:ssh 192.168.5.2:57611 timer:(on,440ms,0) ino:12131853 sk:ffff88006b9586c0.

.....

ss -m 显示socket内存使用情况

[root@localhost ~]# ss -m

State Recv-Q Send-Q Local Address:Port Peer Address:Port

ESTAB 0 0 192.168.1.191:https 192.168.5.240:58565 mem:(r0,w0,f0,t0)

......

ss -p 显示使用socket的进程

[root@localhost ~]# ss -p | grep mysql

State Recv-Q Send-Q Local Address:Port Peer Address:Port

ESTAB 0 0 192.168.1.122:mysql 192.168.1.121:53969 users:(("mysqld",24205,110))

ESTAB 0 0 192.168.1.122:mysql 192.168.1.121:54783 users:(("mysqld",24205,45))

ESTAB 0 0 192.168.1.122:mysql 192.168.5.204:49995 users:(("mysqld",24205,106))

......

ss -i显示 tcp 内部信息

root@ubuntusvn:~# ss -i

State Recv-Q Send-Q Local Address:Port Peer Address:Port

ESTAB 0 0 192.168.1.122:mysql 192.168.1.121:54678 cubic wscale:7,7 rto:207 rtt:7.75/12 ato:40 cwnd:10 send 14.9Mbps rcv_rtt:1 rcv_space:14480

......

ss -s 显示socket使用概况

[root@localhost ~]# ss -s

Total: 509 (kernel 589)

TCP: 368 (estab 249, closed 9, orphaned 0, synrecv 0, timewait 1/0), ports 201

Transport Total IP IPv6

* 589 - -

RAW 0 0 0

UDP 0 0 0

TCP 359 79 280

INET 359 79 280

FRAG 0 0 0

ss -4 仅显示 IPv4

ss -6 仅显示 IPv6

root@ubuntusvn:~# ss -6

State Recv-Q Send-Q Local Address:Port Peer Address:Port

ESTAB 0 0 ::ffff:127.0.0.1:31000 ::ffff:127.0.0.1:32000

ESTAB 0 0 ::ffff:192.168.1.191:2100 ::ffff:208.75.196.43:http

ss -t 仅显示 TCP 套接字

ss -u仅显示  UDP套接字

ss -d 仅显示 DCCP 套接字

ss -w 仅显示  RAW 套接字

ss -x 仅显示 Unix 套接字

比较netstat和ss的效率,ss比netstat快很多

root@ubuntusvn:~# time  netstat  -at

real 0m2.667s

user 0m0.000s

sys 0m0.020s

root@ubuntusvn:~# time  ss

real 0m0.013s

user 0m0.000s

sys 0m0.008s

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值