Fork me on GitHub

Linux命令——pgrep

参考:Linux pgrep Command Tutorial for Beginners (10 Examples)

Linux命令——ps、pstree

bash基础——grep、基本正则表达式、扩展正则表达式、fgrep

简介

这个命令也是用来查看进程(或线程)信息的。可以理解成是ps+grep

举例

根据用户ID,用户名查找进程(或线程)

使用-u参数。

这一点要称赞pgrep,不像ps(-u接uid,-U接username),-u可以包含uid和username两种情况

[root@localhost lib]# pgrep -u 0 -d:
1:2:3:5:7:8:9:10:11:12:13:14:16:17:18:19:21:22:23:24:26:27:28:29:30:31:32:33:34:36:37:38:39:40:41:42:43:44:45:46:48:49:50:51:52:53:54:55:56:57:63:64:65:66:74:75:76:77:78:79:80:93:94:128:148:323:324:325:333:334:335:336:337:338:339:342:343:357:360:363:421:422:432:433:447:448:449:450:451:452:453:454:455:456:457:458:527:554:563:591:605:661:662:663:664:665:666:667:668:669:671:672:676:680:681:682:683:684:685:686:687:708:741:742:750:759:767:917:918:942:1004:1005:1006:1017:1098:1265:1271:1287:1288:1289:1293:1341:1426:1994:2126:2151:2210:2229
[root@localhost lib]# pgrep -u root -d:
1:2:3:5:7:8:9:10:11:12:13:14:16:17:18:19:21:22:23:24:26:27:28:29:30:31:32:33:34:36:37:38:39:40:41:42:43:44:45:46:48:49:50:51:52:53:54:55:56:57:63:64:65:66:74:75:76:77:78:79:80:93:94:128:148:323:324:325:333:334:335:336:337:338:339:342:343:357:360:363:421:422:432:433:447:448:449:450:451:452:453:454:455:456:457:458:527:554:563:591:605:661:662:663:664:665:666:667:668:669:671:672:676:680:681:682:683:684:685:686:687:708:741:742:750:759:767:917:918:942:1004:1005:1006:1017:1098:1265:1271:1287:1288:1289:1293:1341:1426:1994:2126:2151:2210:2229
View Code

ps的-G好很多,可以接gid和groupname

自定义分隔符

上面的例子我使用了-d参数,这个就是用来自定义分隔符的,默认是换行符,所以默认情况的输出会很多行,如下

[root@localhost lib]# pgrep -u root 
1
2
3
5
7
8
9
10
11
12
13
14
16
17
18
19
21
22
23
24
26
27
28
29
30
31
32
33
34
36
37
38
39
40
41
42
43
44
45
46
48
49
50
51
52
53
54
55
56
57
63
64
65
66
74
75
76
77
78
79
80
93
94
128
148
323
324
325
333
334
335
336
337
338
339
342
343
357
360
363
421
422
432
433
447
448
449
450
451
452
453
454
455
456
457
458
527
554
563
591
605
661
662
663
664
665
666
667
668
669
671
672
676
680
681
682
683
684
685
686
687
708
741
742
750
759
767
917
918
942
1004
1005
1006
1017
1098
1265
1271
1287
1288
1289
1293
1341
1426
1994
2151
2210
2255
2256
View Code

为了输出美观,第一个例子我更改了分隔符

显示进程(或线程)名字

上面那个例子,虽然把root的进程(或线程)都找到了,但是只有ID,太不方便了。

使用-l参数,可以把进程(或线程)名字显示出来。

[root@localhost lib]# pgrep -u root -l
1 systemd
2 kthreadd
3 ksoftirqd/0
5 kworker/0:0H
7 migration/0
8 rcu_bh
9 rcu_sched
10 lru-add-drain
11 watchdog/0
12 watchdog/1
13 migration/1
14 ksoftirqd/1
16 kworker/1:0H
17 watchdog/2
18 migration/2
19 ksoftirqd/2
21 kworker/2:0H
22 watchdog/3
23 migration/3
24 ksoftirqd/3
26 kworker/3:0H
27 watchdog/4
28 migration/4
29 ksoftirqd/4
30 kworker/4:0
31 kworker/4:0H
32 watchdog/5
33 migration/5
34 ksoftirqd/5
36 kworker/5:0H
37 watchdog/6
38 migration/6
39 ksoftirqd/6
40 kworker/6:0
41 kworker/6:0H
42 watchdog/7
43 migration/7
44 ksoftirqd/7
45 kworker/7:0
46 kworker/7:0H
48 kdevtmpfs
49 netns
50 khungtaskd
51 writeback
52 kintegrityd
53 bioset
54 kblockd
55 md
56 edac-poller
57 kworker/0:1
63 kswapd0
64 ksmd
65 khugepaged
66 crypto
74 kthrotld
75 kworker/u256:1
76 kmpath_rdacd
77 kaluad
78 kpsmoused
79 kworker/0:2
80 ipv6_addrconf
93 deferwq
94 kworker/3:1
128 kauditd
148 kworker/2:1
323 ata_sff
324 mpt_poll_0
325 mpt/0
333 scsi_eh_0
334 scsi_tmf_0
335 kworker/u256:2
336 scsi_eh_1
337 scsi_tmf_1
338 scsi_eh_2
339 scsi_tmf_2
342 ttm_swap
343 irq/16-vmwgfx
357 kworker/7:2
360 kworker/4:2
363 kworker/1:2
421 kdmflush
422 bioset
432 kdmflush
433 bioset
447 bioset
448 xfsalloc
449 xfs_mru_cache
450 xfs-buf/dm-0
451 xfs-data/dm-0
452 xfs-conv/dm-0
453 xfs-cil/dm-0
454 xfs-reclaim/dm-
455 xfs-log/dm-0
456 xfs-eofblocks/d
457 xfsaild/dm-0
458 kworker/6:1H
527 systemd-journal
554 lvmetad
563 systemd-udevd
591 nfit
605 kworker/6:2
661 kvm-irqfd-clean
662 xfs-buf/sda1
663 xfs-data/sda1
664 xfs-conv/sda1
665 xfs-cil/sda1
666 xfs-reclaim/sda
667 xfs-log/sda1
668 xfs-eofblocks/s
669 xfsaild/sda1
671 kdmflush
672 bioset
676 kworker/3:2
680 xfs-buf/dm-2
681 xfs-data/dm-2
682 xfs-conv/dm-2
683 xfs-cil/dm-2
684 xfs-reclaim/dm-
685 xfs-log/dm-2
686 xfs-eofblocks/d
687 xfsaild/dm-2
708 auditd
741 systemd-logind
742 irqbalance
750 crond
759 ksmtuned
767 login
917 kworker/7:1H
918 kworker/0:1H
942 dhclient
1004 rsyslogd
1005 tuned
1006 sshd
1017 kworker/2:2
1098 master
1265 kworker/1:1H
1271 bash
1287 kworker/4:1H
1288 kworker/5:1H
1289 sshd
1293 bash
1341 kworker/3:1H
1426 kworker/2:1H
1994 kworker/5:2
2151 kworker/5:0
2210 kworker/1:1
2256 kworker/1:0
2326 kworker/5:1
2334 sleep
View Code

显示命令行命

使用-a参数还可以把这个进程(或线程)启动时的命令行显示出来

pstree也是使用-a显式命令行

[root@localhost lib]# pgrep -u root -a
1 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
2 kthreadd
3 ksoftirqd/0
5 kworker/0:0H
7 migration/0
8 rcu_bh
9 rcu_sched
10 lru-add-drain
11 watchdog/0
12 watchdog/1
13 migration/1
14 ksoftirqd/1
16 kworker/1:0H
17 watchdog/2
18 migration/2
19 ksoftirqd/2
21 kworker/2:0H
22 watchdog/3
23 migration/3
24 ksoftirqd/3
26 kworker/3:0H
27 watchdog/4
28 migration/4
29 ksoftirqd/4
30 kworker/4:0
31 kworker/4:0H
32 watchdog/5
33 migration/5
34 ksoftirqd/5
36 kworker/5:0H
37 watchdog/6
38 migration/6
39 ksoftirqd/6
40 kworker/6:0
41 kworker/6:0H
42 watchdog/7
43 migration/7
44 ksoftirqd/7
45 kworker/7:0
46 kworker/7:0H
48 kdevtmpfs
49 netns
50 khungtaskd
51 writeback
52 kintegrityd
53 bioset
54 kblockd
55 md
56 edac-poller
57 kworker/0:1
63 kswapd0
64 ksmd
65 khugepaged
66 crypto
74 kthrotld
75 kworker/u256:1
76 kmpath_rdacd
77 kaluad
78 kpsmoused
79 kworker/0:2
80 ipv6_addrconf
93 deferwq
94 kworker/3:1
128 kauditd
148 kworker/2:1
323 ata_sff
324 mpt_poll_0
325 mpt/0
333 scsi_eh_0
334 scsi_tmf_0
335 kworker/u256:2
336 scsi_eh_1
337 scsi_tmf_1
338 scsi_eh_2
339 scsi_tmf_2
342 ttm_swap
343 irq/16-vmwgfx
357 kworker/7:2
360 kworker/4:2
363 kworker/1:2
421 kdmflush
422 bioset
432 kdmflush
433 bioset
447 bioset
448 xfsalloc
449 xfs_mru_cache
450 xfs-buf/dm-0
451 xfs-data/dm-0
452 xfs-conv/dm-0
453 xfs-cil/dm-0
454 xfs-reclaim/dm-
455 xfs-log/dm-0
456 xfs-eofblocks/d
457 xfsaild/dm-0
458 kworker/6:1H
527 /usr/lib/systemd/systemd-journald
554 /usr/sbin/lvmetad -f
563 /usr/lib/systemd/systemd-udevd
591 nfit
605 kworker/6:2
661 kvm-irqfd-clean
662 xfs-buf/sda1
663 xfs-data/sda1
664 xfs-conv/sda1
665 xfs-cil/sda1
666 xfs-reclaim/sda
667 xfs-log/sda1
668 xfs-eofblocks/s
669 xfsaild/sda1
671 kdmflush
672 bioset
676 kworker/3:2
680 xfs-buf/dm-2
681 xfs-data/dm-2
682 xfs-conv/dm-2
683 xfs-cil/dm-2
684 xfs-reclaim/dm-
685 xfs-log/dm-2
686 xfs-eofblocks/d
687 xfsaild/dm-2
708 /sbin/auditd
741 /usr/lib/systemd/systemd-logind
742 /usr/sbin/irqbalance --foreground
750 /usr/sbin/crond -n
759 /bin/bash /usr/sbin/ksmtuned
767 login -- root     
917 kworker/7:1H
918 kworker/0:1H
942 /sbin/dhclient -1 -q -lf /var/lib/dhclient/dhclient-290edd36-584d-4eb9-b155-48b899711cf4-eth0.lease -pf /var/run/dhclient-eth0.pid eth0
1004 /usr/sbin/rsyslogd -n
1005 /usr/bin/python -Es /usr/sbin/tuned -l -P
1006 /usr/sbin/sshd -D
1017 kworker/2:2
1098 /usr/libexec/postfix/master -w
1265 kworker/1:1H
1271 -bash
1287 kworker/4:1H
1288 kworker/5:1H
1289 sshd: root@pts/0    
1293 -bash
1341 kworker/3:1H
1426 kworker/2:1H
1994 kworker/5:2
2151 kworker/5:0
2210 kworker/1:1
2256 kworker/1:0
2326 kworker/5:1
2343 sleep 60
View Code

找出满足条件的最新/最老的一个进程(或线程)

比如root用户,他可能启动了很多进程(或线程),那么最近最新的是哪一个,使用-n(new)参数

[root@localhost lib]# pgrep -u root -a -n
2352 sleep 60
View Code

如果找最老的那个进程(或线程),使用-o(old)参数(这个不是initd就是systemd)

[root@localhost lib]# pgrep -u root -a -o
1 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
View Code

统计满足条件进程(线程)的个数

使用参数-c

pstree的-c是展开折叠

[root@localhost lib]# pgrep -u root  -c
148
View Code

 

 

posted @ 2018-10-21 16:00  克拉默与矩阵  阅读(1131)  评论(0编辑  收藏  举报