2017-02-23 11:21:44 swartz_lubel 阅读数 397

相关的常用命令其实就下面的这几个:

通过命令名字查找进程pid: ps -ef | grep xxx

查找进程的启动时间和出席时间: ps -eo pid,lstart,etime,args|grep java

查看当前运行程序的环境变量(可以查看程序的动态链接): ps e -p pid

查看进程有多少个线程:pstree -p pid (pstree -p pid |wc -l 可以查看线程总数)

查看进程的堆栈信息:pstack pid



2016-10-31 11:51:42 yangshangwei 阅读数 6380

概述

pstree命令以树状图的方式展现进程之间的派生关系,显示效果比较直观。

pstree命令以树状图显示进程间的关系(display a tree of processes)。
ps命令可以显示当前正在运行的那些进程的信息,但是对于它们之间的关系却显示得不够清晰。

在Linux系统中,系统调用fork可以创建子进程,通过子shell也可以创建子进程,Linux系统中进程之间的关系天生就是一棵树,树的根就是进程PID为1的init进程。


语法

pstree  (选项)

选项

-a:显示每个程序的完整指令,包含路径,参数或是常驻服务的标示;
-c:不使用精简标示法;
-G:使用VT100终端机的列绘图字符;
-h:列出树状图时,特别标明现在执行的程序;
-H<程序识别码pid>:此参数的效果和指定”-h”参数类似,但特别标明指定的程序;
-l:采用长列格式显示树状图;
-n:用程序识别码排序。预设是以程序名称来排序;
-p:显示程序识别码pid;
-u:显示用户名称;
-U:使用UTF-8列绘图字符;
-V:显示版本信息。

这里写图片描述

栗子

显示当前所有进程的进程号和进程id

pstree -p 

显示所有进程的所有详细信息,遇到相同的进程名可以压缩显示

pstree -a
2017-08-26 23:27:48 qingsong3333 阅读数 11948
linux:使用pstree和tree查看进程树和目录树

pstree工具可以查看进程的树型结构,tree工具可以查看目录的树形结构


1. pstree

1.1 pstree查看进程树:

qingsong@db2a:/tmp$ pstree
init-+-atd
     |-cron
     |-db2fmcd
     |-db2syscr-+-db2fmp---4*[{db2fmp}]
     |          |-db2fmp---3*[{db2fmp}]
     |          |-db2sysc---13*[{db2sysc}]
     |          |-3*[db2syscr]
     |          |-db2vend
     |          `-{db2syscr}
     |-dbus-daemon
     |-dhclient
     |-dockerd-+-docker-containe---7*[{docker-containe}]
     |         `-9*[{dockerd}]
     |-5*[getty]
     |-login---bash
     |-master-+-pickup
     |        `-qmgr
     |-mdadm
     |-rpc.idmapd
     |-rpc.mountd
     |-rpc.statd
     |-rpcbind
     |-rsyslogd---3*[{rsyslogd}]
     |-sshd-+-sshd---sshd---bash-+-bash---command-not-fou
     |      |                    |-pstree
     |      |                    `-sudo
     |      `-sshd---sshd---bash
     |-sudo---su---bash---mysqld---27*[{mysqld}]
     |-systemd-logind
     |-systemd-udevd
     |-upstart-file-br
     |-upstart-socket-
     |-upstart-udev-br
     |-vmtoolsd---{vmtoolsd}
     `-vmware-vmblock----4*[{vmware-vmblock-}]

1.2 pstree -p查看进程树,并打印每个进程的PID

root@db2a:~# pstree -p
init(1)-+-atd(33478)
        |-cron(1126)
        |-db2fmcd(1385)
        |-db2syscr(26240)-+-db2fmp(26788)-+-{db2fmp}(26789)
        |                 |               |-{db2fmp}(26790)
        |                 |               |-{db2fmp}(26791)
        |                 |               `-{db2fmp}(5376)
        |                 |-db2fmp(26256)-+-{db2fmp}(26257)
        |                 |               |-{db2fmp}(26258)
        |                 |               `-{db2fmp}(26259)
        |                 |-db2sysc(26242)-+-{db2sysc}(26243)
        |                 |                |-{db2sysc}(26244)
        |                 |                |-{db2sysc}(26245)
        |                 |                |-{db2sysc}(26246)
        |                 |                |-{db2sysc}(26247)
        |                 |                |-{db2sysc}(26251)
        |                 |                |-{db2sysc}(26253)
        |                 |                |-{db2sysc}(26254)
        |                 |                |-{db2sysc}(26770)
        |                 |                |-{db2sysc}(5377)
        |                 |                |-{db2sysc}(32555)
        |                 |                |-{db2sysc}(32558)
        |                 |                `-{db2sysc}(35950)
        |                 |-db2syscr(26248)
        |                 |-db2syscr(26249)
        |                 |-db2syscr(26250)
        |                 |-db2vend(26252)
        |                 `-{db2syscr}(26241)
        |-dbus-daemon(674)
        |-dhclient(893)
        |-dockerd(976)-+-docker-containe(1534)-+-{docker-containe}(1535)
        |              |                       |-{docker-containe}(1536)
        |              |                       |-{docker-containe}(1537)
        |              |                       |-{docker-containe}(1538)
        |              |                       |-{docker-containe}(1539)
        |              |                       |-{docker-containe}(1540)
        |              |                       `-{docker-containe}(28885)
        |              |-{dockerd}(1427)
        |              |-{dockerd}(1428)
        |              |-{dockerd}(1429)
        |              |-{dockerd}(1526)
        |              |-{dockerd}(1527)
        |              |-{dockerd}(1546)
        |              |-{dockerd}(1547)
        |              |-{dockerd}(1548)
        |              `-{dockerd}(1656)
        |-getty(1076)
        |-getty(1079)
        |-getty(1082)
        |-getty(1083)
        |-getty(1085)
        |-login(1387)---bash(3712)
        |-master(30557)-+-pickup(60705)
        |               `-qmgr(2244)
        |-mdadm(30240)
        |-rpc.idmapd(739)
        |-rpc.mountd(1218)
        |-rpc.statd(863)
        |-rpcbind(857)
        |-rsyslogd(790)-+-{rsyslogd}(821)
        |               |-{rsyslogd}(822)
        |               `-{rsyslogd}(823)
        |-sshd(1109)-+-sshd(657)---sshd(678)---bash(679)-+-bash(746)---command-not-fou(747)
        |            |                                   |-sudo(745)
        |            |                                   `-sudo(3005)---su(3006)---bash(3007)---pstree(3863)
        |            `-sshd(24325)---sshd(24345)---bash(24346)
        |-sudo(7070)---su(7071)---bash(7072)---mysqld(8845)-+-{mysqld}(8846)
        |                                                   |-{mysqld}(8847)
        |                                                   |-{mysqld}(8848)
        |                                                   |-{mysqld}(8849)
        |                                                   |-{mysqld}(8850)
        |                                                   |-{mysqld}(8851)
        |                                                   |-{mysqld}(8852)
        |                                                   |-{mysqld}(8853)
        |                                                   |-{mysqld}(8854)
        |                                                   |-{mysqld}(8855)
        |                                                   |-{mysqld}(8856)
        |                                                   |-{mysqld}(8857)
        |                                                   |-{mysqld}(8859)
        |                                                   |-{mysqld}(8860)
        |                                                   |-{mysqld}(8861)
        |                                                   |-{mysqld}(8862)
        |                                                   |-{mysqld}(8863)
        |                                                   |-{mysqld}(8864)
        |                                                   |-{mysqld}(8865)
        |                                                   |-{mysqld}(8866)
        |                                                   |-{mysqld}(8867)
        |                                                   |-{mysqld}(8868)
        |                                                   |-{mysqld}(8869)
        |                                                   |-{mysqld}(8870)
        |                                                   |-{mysqld}(8871)
        |                                                   |-{mysqld}(8872)
        |                                                   `-{mysqld}(9058)
        |-systemd-logind(788)
        |-systemd-udevd(497)
        |-upstart-file-br(852)
        |-upstart-socket-(855)
        |-upstart-udev-br(491)
        |-vmtoolsd(1443)---{vmtoolsd}(3339)
        `-vmware-vmblock-(1401)-+-{vmware-vmblock-}(1404)
                                |-{vmware-vmblock-}(1405)
                                |-{vmware-vmblock-}(40323)
                                `-{vmware-vmblock-}(41493)

1.3 pstree -p <pid> 查看某个进程树型结构 

root@db2a:~#  pstree -p 26240
db2syscr(26240)-+-db2fmp(26788)-+-{db2fmp}(26789)
                |               |-{db2fmp}(26790)
                |               |-{db2fmp}(26791)
                |               `-{db2fmp}(5376)
                |-db2fmp(26256)-+-{db2fmp}(26257)
                |               |-{db2fmp}(26258)
                |               `-{db2fmp}(26259)
                |-db2sysc(26242)-+-{db2sysc}(26243)
                |                |-{db2sysc}(26244)
                |                |-{db2sysc}(26245)
                |                |-{db2sysc}(26246)
                |                |-{db2sysc}(26247)
                |                |-{db2sysc}(26251)
                |                |-{db2sysc}(26253)
                |                |-{db2sysc}(26254)
                |                |-{db2sysc}(26770)
                |                |-{db2sysc}(5377)
                |                |-{db2sysc}(32555)
                |                |-{db2sysc}(32558)
                |                `-{db2sysc}(35950)
                |-db2syscr(26248)
                |-db2syscr(26249)
                |-db2syscr(26250)
                |-db2vend(26252)
                `-{db2syscr}(26241)

2. tree

2.1 查看某个目录的目录树

root@db2a:~# tree /tmp
/tmp
|-- 1
|-- 1.out
|-- EXAMPLE.txt
|-- Important\ image.jpg
|-- MongoDBIntro.pdf
|-- New
|-- db2cktsa.log
|-- dir2
|   |-- MongoDBIntro.pdf
|   |-- latch.out
|   |-- latch.sh
|   `-- mongodb.rpm
|-- file6
|-- fun.sh
|-- image\ \ 01.jpg
|-- image\ \ 02.jpg
|-- log2.bak -> log2
|-- lv1
|   |-- dir1
|   |   `-- file3
|   |-- file1
|   |-- file2
|   `-- lost+found
|-- lv2
|   |-- dir1
|   |   `-- file3
|   |-- file1
|   |-- file2
|   `-- lost+found
|-- mongo.tar
|-- mongo.taraa
|-- test
|   |-- dir2.tar.gz
|   |-- im\ age-1.jpg
|   |-- mongodb.rpm
|   `-- price.sh
|-- test2
|   |-- dir2.tar.gz
|   `-- price.sh
|-- text.pdf
|-- time_take.sh
|-- timing.log
|-- tmp.9Hs6fScHlN
|-- tmp.LY3ZvKPd6e
|-- txt
|   |-- c
|   |   |-- count.c
|   |   `-- sample.c
|   |-- ed\ -n\ 2,5!p\ test.txt
|   |-- err.txt
|   |-- fileL.txt
|   `-- text.txt
|-- uniqfiles
|-- user.sh
|-- variables.sh
|-- vmware-root
|   |-- vmware-apploader-1349.log
|   |-- vmware-apploader-1414.log
|   `-- vmware-apploader-1443.log
`-- z

15 directories, 45 files

2.2 查看目录树,同时打印出文件大小

root@db2a:~# tree -h /tmp/txt
/tmp/txt
|-- [4.0K]  c
|   |-- [   0]  count.c
|   `-- [   0]  sample.c
|-- [ 12K]  ed\ -n\ 2,5!p\ test.txt
|-- [  27]  err.txt
|-- [  64]  fileL.txt
|-- [  64]  fileU.txt
|-- [  20]  input.txt
|-- [  12]  log.txt
|-- [  30]  output.txt
|-- [  21]  test.txt
`-- [   6]  text.txt

1 directory, 11 files	

另外, tree还可以生成html格式的目录树

2019-01-09 11:23:17 u011217662 阅读数 47

进程的查看
一个程序运行最少一个进程 ls运行就产生一个进程
进程管理

  1. 判断服务器健康状态
  2. 查看系统中所有进程 ps
  3. 杀死进程
    a前台进程 u显示进程由哪个用户产生的 x后台进程
    ps
    ps
    pid=1系统启动的第一个进程 最多255终端
    ps
    ps

查看系统健康状态
cpu占用越高排的越高 最主要的是前5行
top
top
load average根cpu核数相关2个 就要超过2
top
僵尸进程表示进程正在终止 但是还没有终止 如果存在 则再次查看是否要手工终止
top
top
top
top
top
top
pstree -p 查看进程树 p更详细
pstree
终止进程
kill命令
kill
kill
1重启 9强制终止 15正常终止 默认
kill
信号和前面一样
killall

工作管理
把进程放入后台
&放入后台继续运行
Ctrl+z 放入后台停止运行除非恢复到前台
tar
查看后台的工作
jobs
ps 也可以查看
jobs
将后台暂停的工作恢复到前台执行
fg
fg
把后台暂停的工作恢复到后台执行
在这里插入图片描述
top放入后台运行没有意义

系统资源查看
free命令查看内存使用状态
free
297并不是完全被系统占用 有一部分做了 buf 和cached 297并没有实际被占用有一部分做了buf cached 297-49 -115之外才是系统占用的 只能被Linux内核使用
free
buf

2019-09-14 09:48:20 weixin_41105515 阅读数 38

ps命令

Linux中的ps命令是Process Status的缩写。ps命令用来列出系统中当前运行的那些进程。ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令。
语法

ps [参数]

参数

-a  显示所有终端机下执行的进程,除了阶段作业领导者之外。
a   显示现行终端机下的所有进程,包括其他用户的进程。
-A  显示所有进程。
-c  显示CLS和PRI栏位。
c   列出进程时,显示每个进程真正的指令名称,而不包含路径,参数或常驻服务的标示。
-C<指令名称>    指定执行指令的名称,并列出该指令的进程的状况。
-d  显示所有进程,但不包括阶段作业领导者的进程。
-e  此参数的效果和指定"A"参数相同。
e   列出进程时,显示每个进程所使用的环境变量。
-f  显示UID,PPIP,C与STIME栏位。
f   用ASCII字符显示树状结构,表达进程间的相互关系。
-g<群组名称>    此参数的效果和指定"-G"参数相同,当亦能使用阶段作业领导者的名称来指定。
g   显示现行终端机下的所有进程,包括群组领导者的进程。
-G<群组识别码>  列出属于该群组的进程的状况,也可使用群组名称来指定。
h   不显示标题列。
-H  显示树状结构,表示进程间的相互关系。
-j或j   采用工作控制的格式显示进程状况。
-l或l   采用详细的格式来显示进程状况。
L   列出栏位的相关信息。
-m或m   显示所有的执行绪。
n   以数字来表示USER和WCHAN栏位。
-N  显示所有的进程,除了执行ps指令终端机下的进程之外。
-p<进程识别码>  指定进程识别码,并列出该进程的状况。
p<进程识别码>   此参数的效果和指定"-p"参数相同,只在列表格式方面稍有差异。
r   只列出现行终端机正在执行中的进程。
-s<阶段作业>    指定阶段作业的进程识别码,并列出隶属该阶段作业的进程的状况。
s   采用进程信号的格式显示进程状况。
S   列出进程时,包括已中断的子进程资料。
-t<终端机编号>  指定终端机编号,并列出属于该终端机的进程的状况。
t<终端机编号>   此参数的效果和指定"-t"参数相同,只在列表格式方面稍有差异。
-T  显示现行终端机下的所有进程。
-u<用户识别码>  此参数的效果和指定"-U"参数相同。
u   以用户为主的格式来显示进程状况。
-U<用户识别码>  列出属于该用户的进程的状况,也可使用用户名称来指定。
U<用户名称> 列出属于该用户的进程的状况。
v   采用虚拟内存的格式显示进程状况。
-V或V   显示版本信息。
-w或w   采用宽阔的格式来显示进程状况。 
x   显示所有进程,不以终端机来区分。
X   采用旧式的Linux i386登陆格式显示进程状况。
-y  配合参数"-l"使用时,不显示F(flag)栏位,并以RSS栏位取代ADDR栏位。

常用组合

  • ps -ef
  • ps aux 或 ps -aux
  • ps auxc 或 ps -auxc
  • ps axjf 或 ps -axjf
  • ps axjfc 或 ps -axjfc

实例

  • ps -ef
    [root@hzj ~]# ps -ef
    UID        PID  PPID  C STIME TTY          TIME CMD
    root      6679  0.0  0.1 208708  3184 ?        Sl   Sep03   0:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-por
    root      6684  0.0  0.2 108744  3992 ?        Sl   Sep03   0:20 containerd-shim -namespace moby -workdir /var/lib/container
    polkitd   6700  0.1  0.2  48444  4000 ?        Ssl  Sep03  22:42 redis-server *:6379
    root      6772  0.0  0.0  15232  1604 pts/0    Ss+  Sep03   0:00 redis-cli
    root     17928  0.0  2.2 499928 42048 ?        Ssl  Aug22  25:45 /usr/bin/containerd
    root     17929  0.0  4.0 793492 76964 ?        Ssl  Aug22   6:27 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/cont
    root     18445  0.0  0.6 208708 11732 ?        Sl   Aug22   0:01 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-por
    root     18450  0.0  0.5 108744  9432 ?        Sl   Aug22   0:50 containerd-shim -namespace moby -workdir /var/lib/container
    polkitd  18466  0.0 11.6 1145884 218732 ?      Ssl  Aug22  16:38 mysqld
    root     22206  0.0  0.1  32868  2740 ?        S+   Sep12   0:00 mysql -uroot -p
    root     23927  0.0  0.0      0     0 ?        S    11:15   0:00 [kworker/0:2]
    root     23933  0.0  0.0      0     0 ?        S    11:20   0:00 [kworker/0:0]
    root     23949  0.0  0.0      0     0 ?        R    11:25   0:00 [kworker/0:1]
    root     23951  0.0  0.1 155360  1888 pts/1    R+   11:28   0:00 ps aux
    root     32602  0.0  0.2  32528  4216 ?        S<sl Aug31   6:11 /usr/local/aegis/aegis_update/AliYunDunUpdate
    root     32647  1.7  0.6 128600 12080 ?        S<sl Aug31 333:46 /usr/local/aegis/aegis_client/aegis_10_73/AliYunDun
    
    其中各列的内容意思如下
    UID    //用户ID、但输出的是用户名 
    PID    //进程的ID 
    PPID    //父进程ID 
    C      //进程占用CPU的百分比 
    STIME  //进程启动到现在的时间 
    TTY    //该进程在那个终端上运行,若与终端无关,则显示? 若为pts/0等,则表示由网络连接主机进程。 
    CMD    //命令的名称和参数
    
    • ps aux
    [root@hzj ~]# ps aux
    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    root         1  0.0  0.2 125472  3924 ?        Ss   Aug20   0:25 /usr/lib/systemd/systemd --switched-root --system --deseria
    root         2  0.0  0.0      0     0 ?        S    Aug20   0:00 [kthreadd]
    root         3  0.0  0.0      0     0 ?        S    Aug20   0:03 [ksoftirqd/0]
    root         5  0.0  0.0      0     0 ?        S<   Aug20   0:00 [kworker/0:0H]
    root         7  0.0  0.0      0     0 ?        S    Aug20   0:00 [migration/0]
    root         8  0.0  0.0      0     0 ?        S    Aug20   0:00 [rcu_bh]
    root         9  0.0  0.0      0     0 ?        R    Aug20   3:54 [rcu_sched]
    root        10  0.0  0.0      0     0 ?        S<   Aug20   0:00 [lru-add-drain]
    root        11  0.0  0.0      0     0 ?        S    Aug20   0:08 [watchdog/0]
    root        13  0.0  0.0      0     0 ?        S    Aug20   0:00 [kdevtmpfs]
    
    
    其中各列的内容意思如下
    USER      //用户名 
    %CPU      //进程占用的CPU百分比 
    %MEM      //占用内存的百分比 
    VSZ      //该进程使用的虚拟內存量(KB) 
    RSS      //该进程占用的固定內存量(KB)(驻留中页的数量) 
    STAT      //进程的状态 
    START    //该进程被触发启动时间 
    TIME      //该进程实际使用CPU运行的时间
    
    其中STAT状态位常见的状态字符有
    D      //无法中断的休眠状态(通常 IO 的进程); 
    R      //正在运行可中在队列中可过行的; 
    S      //处于休眠状态; 
    T      //停止或被追踪; 
    W      //进入内存交换 (从内核2.6开始无效); 
    X      //死掉的进程 (基本很少见); 
    Z      //僵尸进程; 
    <      //优先级高的进程 
    N      //优先级较低的进程 
    L      //有些页被锁进内存; 
    s      //进程的领导者(在它之下有子进程); 
    l      //多线程,克隆线程(使用 CLONE_THREAD, 类似 NPTL pthreads); 
    +      //位于后台的进程组;
    
  • 输出指定的字段
    ps -o pid,ppid,pgrp,session,tpgid,comm
    

pgrep

pgrep是linux中常用的通过程序名字来查询进程的命令。

语法

pgrep(选项)(参数) 

选项

-o:仅显示找到的最小(起始)进程号; 
-n:仅显示找到的最大(结束)进程号; 
-l:显示进程名称; 
-P:指定父进程号; 
-g:指定进程组; 
-t:指定开启进程的终端; 
-u:指定进程的有效用户ID。 

注:进程号越大,并不一定意味着进程的启动时间越晚

参数
进程名称:指定要查找的进程名称,同时也支持类似grep指令中的匹配模式。

实例

  • 显示进程号
[root@hzj ~]# pgrep redis
6700
6772
  • 显示进程名称包含字符串redis的所有进程
[root@hzj ~]# pgrep  -l redis
6700 redis-server
6772 redis-cli
  • 显示进程号最小(起始)的进程
[root@hzj ~]# pgrep -ol redis
6700 redis-server
  • 显示进程号最大(终止)的进程
[root@hzj ~]# pgrep -nl redis
6772 redis-cli

pstree

pstree命令更优雅的树状显示
pstree命令以树状图显示进程间的关系(display a tree of processes)。ps命令可以显示当前正在运行的那些进程的信息,但是对于它们之间的关系却显示得不够清晰。在Linux系统中,系统调用fork可以创建子进程,通过子shell也可以创建子进程,Linux系统中进程之间的关系天生就是一棵树,树的根就是进程PID为1的init进程。

  • 以树状图只显示进程的名字,且相同进程合并显示
pstree
  • 以树状图显示进程同时还显示PID:
pstree -p
  • 以树状图显示进程PID为XXX的进程以及子孙进程,如果有-p参数则同时显示每个进程的PID
pstree [-p] <pid>
没有更多推荐了,返回首页