目录
1.进程的查看
ps:将某个时间点的进程运行情况选取下来
#仅查看自己的bash的相关进程: ps -l
mali@mali:~$ ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 1000 2472 2465 0 80 0 - 6029 wait pts/4 00:00:00 bash
0 R 1000 3042 2472 0 80 0 - 7662 - pts/4 00:00:00 ps
#所列出的信息说明bash的程序属于UID为1000的用户,状态为睡眠(sleep),之所以睡眠是因为它触发了ps(状态为run)
S: 代表这个进程的状态(STAT),主要的状态有:
- R(Running):该进程正在运行中;
- S(Sleep):该进程目前正在睡眠状态(idle),但可以被唤醒(signal)
- D:不可被唤醒的睡眠状态,通常这个进程可能在等待I/O的情况
- T:停止状态(stop),可能是在工作控制(后台暂停)或除错(traced)状态
- Z(Zombie):“僵尸”状态,进程已经终止但却无法被删除至内存外。
#列出目前所有的正在内存当中的进程:
mali@mali:~$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.1 0.3 185380 3516 ? Ss 22:22 0:01 /sbin/init splash
root 2 0.0 0.0 0 0 ? S 22:22 0:00 [kthreadd]
root 4 0.0 0.0 0 0 ? S< 22:22 0:00 [kworker/0:0H]
root 6 0.0 0.0 0 0 ? S 22:22 0:00 [ksoftirqd/0]
root 7 0.0 0.0 0 0 ? S 22:22 0:00 [rcu_sched]
root 8 0.0 0.0 0 0 ? S 22:22 0:00 [rcu_bh]
root 9 0.0 0.0 0 0 ? S 22:22 0:00 [migration/0]
root 10 0.0 0.0 0 0 ? S< 22:22 0:00 [lru-add-drain]
......#中间省略
mali 2472 0.0 0.3 24116 3188 pts/4 Ss 22:26 0:00 bash
root 2485 0.6 10.0 298412 101584 ? SNl 22:26 0:06 /usr/bin/python3 /usr/sbin/aptd
mali 2491 0.0 0.2 519112 2432 ? Sl 22:26 0:00 /usr/lib/x86_64-linux-gnu/deja-dup/deja-dup-monitor
root 2634 0.0 0.2 94964 2080 ? Ss 22:28 0:00 /usr/sbin/cupsd -l
root 2635 0.0 0.2 274812 2640 ? Ssl 22:28 0:00 /usr/sbin/cups-browsed
lp 2667 0.0 0.1 81240 1396 ? S 22:28 0:00 /usr/lib/cups/notifier/dbus dbus://
lp 2668 0.0 0.1 81240 1436 ? S 22:28 0:00 /usr/lib/cups/notifier/dbus dbus://
lp 2669 0.0 0.1 81240 1352 ? S 22:28 0:00 /usr/lib/cups/notifier/dbus dbus://
root 3034 0.0 0.0 0 0 ? S 22:28 0:00 [kworker/u2:2]
root 3068 0.0 0.0 0 0 ? S 22:35 0:00 [kworker/u2:0]
root 3160 0.0 0.0 0 0 ? S 22:37 0:00 [kworker/0:1]
root 3471 0.0 0.0 0 0 ? S 22:42 0:00 [kworker/u2:1]
mali 3550 0.0 0.3 39096 3364 pts/4 R+ 22:43 0:00 ps aux
#显示出所有的进程
mali@mali:~$ ps -lA
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 1 0 0 80 0 - 46345 - ? 00:00:01 systemd
1 S 0 2 0 0 80 0 - 0 - ? 00:00:00 kthreadd
1 S 0 4 2 0 60 -20 - 0 - ? 00:00:00 kworker/0:0H
1 S 0 6 2 0 80 0 - 0 - ? 00:00:00 ksoftirqd/0
1 S 0 7 2 0 80 0 - 0 - ? 00:00:00 rcu_sched
1 S 0 8 2 0 80 0 - 0 - ? 00:00:00 rcu_bh
1 S 0 9 2 0 -40 - - 0 - ? 00:00:00 migration/0
1 S 0 10 2 0 60 -20 - 0 - ? 00:00:00 lru-add-drain
5 S 0 11 2 0 -40 - - 0 - ? 00:00:00 watchdog/0
1 S 0 12 2 0 80 0 - 0 - ? 00:00:00 cpuhp/0
5 S 0 13 2 0 80 0 - 0 - ? 00:00:00 kdevtmpfs
1 S 0 14 2 0 60 -20 - 0 - ? 00:00:00 netns
......
#列出类似进程树的程序显示:
mali@mali:~$ ps axjf
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
0 2 0 0 ? -1 S 0 0:00 [kthreadd]
2 4 0 0 ? -1 S< 0 0:00 \_ [kworker/0:0H]
2 6 0 0 ? -1 S 0 0:00 \_ [ksoftirqd/0]
2 7 0 0 ? -1 S 0 0:00 \_ [rcu_sched]
2 8 0 0 ? -1 S 0 0:00 \_ [rcu_bh]
......//中间省略
1630 2465 1782 1782 ? -1 Sl 1000 0:03 \_ /usr/lib/gnome-terminal/gnome-terminal-server
2465 2472 2472 2472 pts/4 3592 Ss 1000 0:00 \_ bash
2472 3592 3592 2472 pts/4 3592 R+ 1000 0:00 \_ ps axjf
top:动态查看进程的变化
相对于ps时选取一个时间点的进程状态,top则可以持续检测进程运行的状态。
top [-d 数字] | top [-bnp]
参数:
- -d: 后面可以接秒数,就是整个进程界面更新的秒数。默认是5秒
- -b: 以批次方式执行top,还有更多的参数可以使用。通常会搭配数据流重定向来将批处理的结果输出成为文件
- -n: 与-b搭配,意义是,需要进行几次top的输出结果
- -p: 指定某些个PID来进行查看监测。
在top执行过程中可以使用的按键命令:
- ?: 显示在top当中可以输入的按键命令
- P:以CPU的使用资源排序显示
- M: 以内存的使用资源排序显示
- N:以PID来排序
- T: 由该进程使用的CPU时间累积(TIME+)排序
- k:给予某个PID一个信号(signal)
- r: 给予某个PID重新制定一个nice值
- q:离开top
#每2秒钟更新一次top,查看整体信息
mali@mali:~$ top -d 2
top - 23:07:47 up 44 min, 1 user, load average: 0.37, 0.17, 0.12
Tasks: 167 total, 1 running, 166 sleeping, 0 stopped, 0 zombie
%Cpu(s): 5.1 us, 1.1 sy, 0.6 ni, 86.3 id, 6.9 wa, 0.0 hi, 0.1 si, 0.0 st
KiB Mem : 1013768 total, 192000 free, 506248 used, 315520 buff/cache
KiB Swap: 1046524 total, 831808 free, 214716 used. 336620 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2058 mali 20 0 1266020 150044 34308 S 37.5 14.8 1:38.35 compiz
1281 root 20 0 466836 86016 11328 S 12.5 8.5 0:28.48 Xorg
1 root 20 0 185380 3516 2168 S 0.0 0.3 0:01.41 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
4 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
6 root 20 0 0 0 0 S 0.0 0.0 0:00.21 ksoftirqd/0
7 root 20 0 0 0 0 S 0.0 0.0 0:00.40 rcu_sched
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
9 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
#查看单一进程
mali@mali:~$ echo $$
2472
mali@mali:~$ top -p 2472
top - 23:11:29 up 48 min, 1 user, load average: 0.34, 0.19, 0.12
Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie
%Cpu(s): 19.8 us, 3.7 sy, 0.0 ni, 72.1 id, 4.4 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1013768 total, 176516 free, 515232 used, 322020 buff/cache
KiB Swap: 1046524 total, 831812 free, 214712 used. 327564 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2472 mali 20 0 24116 3512 1856 S 0.0 0.3 0:00.04 bash
pstree: 进程之间的相关性
mali@mali:~$ pstree -p
systemd(1)─┬─ModemManager(680)─┬─{gdbus}(793)
│ └─{gmain}(791)
├─NetworkManager(658)─┬─dhclient(858)
│ ├─dnsmasq(871)
│ ├─{gdbus}(760)
│ └─{gmain}(758)
├─VBoxClient(1253)───VBoxClient(1254)
├─VBoxClient(1643)───VBoxClient(1644)───{SHCLIP}(1678)
├─VBoxClient(1653)───VBoxClient(1654)
├─VBoxClient(1658)───VBoxClient(1659)───{X11 events}(1671)
├─VBoxClient(1663)───VBoxClient(1664)─┬─{dndHGCM}(1673)
│ └─{dndX11}(1674)
├─VBoxService(1292)─┬─{automount}(1300)
│ ├─{control}(1294)
│ ├─{cpuhotplug}(1297)
│ ├─{memballoon}(1298)
│ ├─{timesync}(1295)
│ ├─{vminfo}(1296)
│ └─{vmstats}(1299)
......