0%

7.Monitoring and Managing Linux Processes

1. Red Hat Enterprise Linux 7

1.1. 什么是进程

进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。简单的说,进程就是系统正在做的事情。

1.2. 进程状态

名称 ps状态 解释
运行 R : runnable (on run queue) 正在运行或在运行队列中等待
中断 S : sleeping 休眠中, 受阻, 在等待某个条件的形成或接受到信号
停止 T : traced or stopped 进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行
僵死 Z : a defunct (“zombie”) process 进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放
不可中断 D : uninterruptible sleep (usually IO) 收到信号不唤醒和不可运行, 进程必须等待直到有中断发生

1.3. 图形中如何查看进程

  • 直接打开system monitor
  • 用命令gnome-system-monitor打开进程管理器

1.4. 如何用命令查看进程

ps

1
2
3
4
5
6
7
ps      ##进程查看工具
ps -a ##shell中运行的进程
ps -x ##不在shell中运行的进程
ps -u ##查看进程用户
ps -l ##显示进程的详细信息
ps -f ##完全信息full的缩写
ps -e ##显示进程的依赖关系
1
2
3
4
ps   aux  | grep 进程关键字           ##仅列出某个进程
ps ax -o %cpu,%mem,user,pid,comm ##查看进程某项信息
ps aux --sort +|-%cpu|%mem... ##进程按指定方式排序
ps ax -o gid --sort -%cpu | grep -v GID | head -5 ##按cpu占用排序,显示占用最多的前五名的gid

1.5. 如何控制shell重进程的前后台调用

1
2
3
4
5
6
命令&        ##进程在shell后台运行
ctrl +z ##把占用shell的进程打入后台停止
jobs ##查看被打入后台的进程信息
fg job号 ##把指定进程调回前台
bg job号 ##运行后台停止进程
ctrl +c ##关闭占用shell进程

1.6. 如何用命令控制进程(man 7 signal)

1)信号

1
2
3
4
5
6
7
8
信号 1		##reload进程
信号 2 ##ctrl +c 删除进程在内存中的信息
信号 3 ##清除内存中的鼠标信息
信号 9 ##强行关闭进程
信号 15 ##正常关闭进程
信号 18 ##开启停止的进程
信号 19 ##停止正在运行的进程
信号 20 ##ctrl +z

2)信号发起

1
2
3
kill 	信号   pid
killall 信号 进程名称
pkill -u username ##结束某个用户的所有进程

1.7. 用户登陆监控

1
2
3
4
w	##查看当前使用系统的用户
w -f ##查看当前使用系统的用户并显示使用地点
last ##查看登陆过系统的用户
lastb ##查看试图登陆但没有成功的用户

1.8. top命令

在shell中显示进程管理器

1
2
3
4
5
6
u username
k 信号
h 帮助
s 改变刷新速度
m 以内存占用量排序
c 以cpu占用率排序

1.9. pstree 进程树

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
[root@localhost ~]# pstree
systemd─┬─ModemManager───2*[{ModemManager}]
├─NetworkManager─┬─dhclient
│ └─3*[{NetworkManager}]
├─2*[abrt-watch-log]
├─abrtd
├─accounts-daemon───2*[{accounts-daemon}]
├─alsactl
├─at-spi-bus-laun─┬─dbus-daemon───{dbus-daemon}
│ └─3*[{at-spi-bus-laun}]
├─at-spi2-registr───{at-spi2-registr}
├─atd
├─auditd─┬─audispd─┬─sedispatch
│ │ └─{audispd}
│ └─{auditd}
├─avahi-daemon───avahi-daemon
├─chronyd
├─colord───{colord}
├─crond
├─2*[dbus-daemon───{dbus-daemon}]
├─dbus-launch
├─dconf-service───2*[{dconf-service}]
├─firewalld───{firewalld}
├─gdm─┬─gdm-simple-slav─┬─Xorg
│ │ ├─gdm-session-wor─┬─gnome-session─┬─gnome-settings-───3*[{gnome-settin+
│ │ │ │ ├─gnome-shell───4*[{gnome-shell}]
│ │ │ │ └─3*[{gnome-session}]
│ │ │ └─2*[{gdm-session-wor}]
│ │ └─2*[{gdm-simple-slav}]
│ └─2*[{gdm}]
├─goa-daemon───3*[{goa-daemon}]
├─ibus-daemon─┬─ibus-dconf───2*[{ibus-dconf}]
│ ├─ibus-engine-sim───{ibus-engine-sim}
│ └─2*[{ibus-daemon}]
├─ibus-x11───{ibus-x11}
├─iprdump
├─iprinit
├─iprupdate
├─ksmtuned───sleep
├─libvirtd───10*[{libvirtd}]
├─lsmd
├─lvmetad
├─master─┬─pickup
│ └─qmgr
├─mission-control───2*[{mission-control}]
├─polkitd───5*[{polkitd}]
├─pulseaudio───2*[{pulseaudio}]
├─rhsmcertd
├─rpc.statd
├─rpcbind
├─rsyslogd───2*[{rsyslogd}]
├─rtkit-daemon───2*[{rtkit-daemon}]
├─smartd
├─sshd───sshd───bash───pstree
├─systemd-journal
├─systemd-logind
├─systemd-udevd
├─tuned───4*[{tuned}]
└─upowerd───2*[{upowerd}]