进程管理
进程介绍
进程是正在执行的程序或命令。每个进程独立的,都有需要占用一定的系统资源。Linux
系统中启动进程有两种方式:1.Linux
操作系统启动的时自动启动的进程。2.用户在终端输入命令启动的进程。
ps 查看当前系统进程状态
命令说明:
ps命令的全称为`process status` 表示进程状态。
ps命令参数 |
作用 |
无 |
显示当前用户通过终端启动的进程 |
a |
显示所有用户通过终端启动的进程 |
u |
显示所有用户通过终端启动的进程的详细信息 |
x |
显示所有用户的所有进程 |
-e |
显示所有进程 |
-u |
显示某个用户关联的所有进程 |
-f |
显示进程完整信息 |
常用方法:
ps aux 查看进程的CPU占用率和内存占用率 ps -ef 查看进程的父进程ID可以使用
操作示例:
[root@cyxpa02 ~]# ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.3 128096 6632 ? Ss 14:36 0:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22 root 2 0.0 0.0 0 0 ? S 14:36 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S 14:36 0:00 [ksoftirqd/0] root 5 0.0 0.0 0 0 ? S< 14:36 0:00 [kworker/0:0H]
效果说明:
标题 |
说明 |
USER |
进程所属的用户 |
PID |
进程的ID |
%CPU |
进程占用CPU资源的百分比 |
%MEM |
进程占用物理内存的百分比 |
VSZ |
进程占用虚拟内存的大小,单位 KB |
RSS |
进程占用实际物理内存的大小,单位 KB |
TTY |
进程是在哪个终端中运行的,如果显示?,表示非终端启动,该进程是守护进程 |
STAT |
进程状态。R:运行状态、S:睡眠状态、T:暂停状态、Z:僵尸状态、s:包含子进程、l:多线程、+:前台显示 |
START |
进程的启动时间 |
TIME |
进程占用CPU运算的时间 |
COMMAND |
产生此进程的命令名 |
操作示例:
[root@cyxpa02 ~]# ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 14:36 ? 00:00:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22 root 2 0 0 14:36 ? 00:00:00 [kthreadd] root 3 2 0 14:36 ? 00:00:00 [ksoftirqd/0] root 5 2 0 14:36 ? 00:00:00 [kworker/0:0H]
效果说明:
标题 |
说明 |
UID |
进程所属的用户ID |
PID |
进程的进程号 |
PPID |
进程的父进程号 |
C |
进程的CPU使用率百分比 |
STIME |
进程的启动时间 |
TTY |
进程是在哪个终端中运行的,如果显示?,表示非终端启动,该进程是守护进程 |
TIME |
进程占用CPU运算的时间 |
CMD |
启动进程所用的命令和参数 |
ps -ef | grep 查询进程的信息
可以通过:ps -ef | grep 查询信息
:可以根据查询信息找到相应的进程和信息。
操作示例:
[root@cyxpa02 ~]# ps -ef | grep tail root 114750 7441 0 16:02 pts/0 00:00:00 tail -f he.txt root 114882 113463 0 16:02 pts/2 00:00:00 grep --color=auto tail
kill 终止进程
命令说明:
作用: 发送一个特定的信号给指定的进程,若没有指定信号,默认是15,用于终止程序 语法: kill [选项] pid 选项: -s 指定发送的信号,信号可以以信号名或数字的方式给定 -p 指定 kill 只打印命名进程的进程标识 (pid) , 而不应发送给它信号 -l 打印信号名的列表,这可以在 /usr/include/linux/signal.h 中找到 常见用法: kill -l 打印信号名的列表 kill -1 进程号 重新加载进程 kill -9 进程号 杀死一个进程 kill -15 进程号 正常停止一个进程
操作示例:
[root@cyxpa02 ~]# kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8 43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2 63) SIGRTMAX-1 64) SIGRTMAX [root@cyxpa02 ~]# [root@cyxpa02 ~]# ps -ef | grep tail root 12192 7441 0 16:13 pts/0 00:00:00 tail -f he.txt root 79541 12407 0 16:31 pts/4 00:00:00 grep --color=auto tail [root@cyxpa02 ~]# kill -1 12192 [root@cyxpa02 ~]# [root@cyxpa02 ~]# ps -ef | grep tail root 81383 7441 0 16:32 pts/0 00:00:00 tail -f he.txt root 82270 12407 0 16:32 pts/4 00:00:00 grep --color=auto tail [root@cyxpa02 ~]# kill -9 81383 [root@cyxpa02 ~]# [root@cyxpa02 ~]# ps -ef | grep tail root 83202 7441 0 16:32 pts/0 00:00:00 tail -f he.txt root 83444 12407 0 16:32 pts/4 00:00:00 grep --color=auto tail [root@cyxpa02 ~]# kill -9 83202 [root@cyxpa02 ~]#
pstree 查看进程树
最小化安装的CentOS 7系统默认没有pstree
命令。直接敲命令运行后会显示-bash: pstree: 未找到命令
,需要单独安装pstree
命令。输入下面的命令安装pstree
:
yum -y install psmisc
命令说明:
作用: 语法: pstree [选项] 选项: -p 显示进程的ID -u 显示进程的所属的用户 常见用法: pstree -p 树形结构显示进程的ID pstree -u 树形结构显示进程的所属的用户
操作示例:
[root@cyxpa02 ~]# pstree -p systemd(1)─┬─NetworkManager(6431)─┬─dhclient(6729) │ ├─{NetworkManager}(6438) │ └─{NetworkManager}(6442) ├─VGAuthService(6306) ├─abrt-watch-log(6307) 省略一部分 ├─lvmetad(3201) ├─systemd-journal(3180) ├─systemd-logind(6310) ├─systemd-udevd(3214) ├─tuned(6923)─┬─{tuned}(7318) │ ├─{tuned}(7319) │ ├─{tuned}(7320) │ └─{tuned}(7333) └─vmtoolsd(6320)───{vmtoolsd}(6394) [root@cyxpa02 ~]# pstree -u systemd─┬─NetworkManager─┬─dhclient │ └─2*[{NetworkManager}] ├─VGAuthService 省略一部分 ├─sshd─┬─sshd─┬─bash───tail │ │ ├─bash───top │ │ └─bash───sleep │ ├─sshd─┬─bash───pstree │ │ ├─bash───top │ │ ├─bash───sleep │ │ └─sftp-server │ └─sshd─┬─bash───sleep │ ├─bash │ ├─bash───top │ └─sftp-server [root@cyxpa02 ~]#
top 显示Linux进程状态
命令说明:
作用: 显示Linux进程状态 语法: top [选项] 选项: -d 间隔秒数 -i 忽略空闲进程和僵尸进程 -p 监控指定的进程 常见用法: top -d 2 间隔2秒数显示一次进程状态 top -i 忽略空闲进程和僵尸进程 top -p 1222 监控1222进程状态
top
命令默认是3秒后刷新显示,用户可以输入回车
或空格
手动刷新。
执行top命令后进入top基本视图
,在top基本视图
可以使用命令操作,命令如下:
top基本视图命令 |
说明 |
s |
修改显示间隔时间 |
l |
切换系统运行时间和平均负载信息 |
t |
切换CPU状态信息 |
m |
切换物理内存使用信息 |
f |
设置进程的状态的显示信息, 移动, 选中或取消, 退出选择 |
N |
以PID的大小的顺序排列 |
P |
以CPU占用率大小的顺序排列 |
M |
以内存占用率大小的顺序排列 |
n |
设置进程的显示数量 |
1 |
显示监控每个逻辑CPU的信息 |
h |
显示帮助 |
操作示例:
[root@cyxpa02 ~]# top -d 0.5 top - 17:10:00 up 2:33, 6 users, load average: 0.18, 0.31, 0.32 Tasks: 152 total, 1 running, 151 sleeping, 0 stopped, 0 zombie %Cpu(s): 1.0 us, 3.5 sy, 0.0 ni, 95.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 1863252 total, 1190420 free, 178444 used, 494388 buff/cache KiB Swap: 2097148 total, 2097148 free, 0 used. 1481796 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 12373 root 20 0 161260 6096 4344 S 2.0 0.3 0:45.19 sshd 92071 root 20 0 162012 2328 1616 R 2.0 0.1 0:00.13 top 1 root 20 0 128096 6632 4140 S 0.0 0.4 0:03.27 systemd 省略其他信息 [root@cyxpa02 ~]# [root@cyxpa02 ~]# [root@cyxpa02 ~]# top -i top - 17:11:39 up 2:35, 6 users, load average: 0.47, 0.37, 0.34 Tasks: 152 total, 1 running, 151 sleeping, 0 stopped, 0 zombie %Cpu(s): 2.4 us, 5.1 sy, 0.0 ni, 92.4 id, 0.0 wa, 0.0 hi, 0.1 si, 0.0 st KiB Mem : 1863252 total, 1188848 free, 179092 used, 495312 buff/cache KiB Swap: 2097148 total, 2097148 free, 0 used. 1481352 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 7437 root 20 0 161260 6080 4344 S 1.3 0.3 2:05.26 sshd [root@cyxpa02 ~]# [root@cyxpa02 ~]# [root@cyxpa02 ~]# top -p 26520 -d 0.5 top - 17:12:43 up 2:36, 6 users, load average: 0.35, 0.36, 0.33 Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.0 us, 0.5 sy, 0.0 ni, 99.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 1863252 total, 1188492 free, 178332 used, 496428 buff/cache KiB Swap: 2097148 total, 2097148 free, 0 used. 1481680 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 26520 root 20 0 107992 616 524 S 0.0 0.0 0:00.00 tail
top命令结果说明
第一行top - 17:11:39 up 2:35, 6 users, load average: 0.47, 0.37, 0.34
是系统运行时间和平均负载。
标题 |
说明 |
17:11:39 |
当前系统时间 |
up 2:35 |
系统运行时间为2小时35分 |
6 users |
当前系统登录了6个用户 |
load average: 0.47, 0.37, 0.34 |
系统最近5、10、15分钟内的平均负载。小于1说明负载较小。大于1说明系统已经超出负荷 |
第二行Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie
是进程信息。
标题 |
说明 |
Tasks: 1 total |
系统的总进程数量 |
0 running |
正在运行的进程数量 |
1 sleeping |
睡眠的进程数量 |
0 stopped |
停止的进程数量 |
0 zombie |
僵尸进程数量 |
第三行%Cpu(s): 0.0 us, 0.5 sy, 0.0 ni, 99.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
是CPU状态。
标题 |
说明 |
%Cpu(s): 0.0 us |
运行用户进程的CPU时间 |
0.5 sy |
运行内核进程的CPU时间 |
0.0 ni |
运行已调整优先级的用户进程的CPU时间 |
99.5 id |
空闲CPU的百分比 |
0.0 wa |
用于等待IO完成的CPU时间 |
0.0 hi |
处理硬件中断的CPU时间 |
0.0 si |
处理软件中断的CPU时间 |
0.0 st |
这个虚拟机被hypervisor偷去的CPU时间 |
第四行KiB Mem : 1863252 total, 1188492 free, 178332 used, 496428 buff/cache
是物理内存使用情况。
标题 |
说明 |
Mem : 1863252 total |
物理内存总量 |
1188492 free |
空闲的内存总量 |
178332 used |
使用中的内存总量 |
496428 buff/cache |
缓存的内存量 |
第五行KiB Swap: 2097148 total, 2097148 free, 0 used. 1481680 avail Mem
是虚拟内存使用情况。
标题 |
说明 |
Swap: 2097148 total |
交换区总量 |
2097148 free |
使用的交换区总量 |
0 used |
空闲的交换区总量 |
1481680 avail Mem |
缓冲的交换区总量 |
第六行PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
是进程的状态。
标题 |
说明 |
PID |
进程ID |
USER |
进程所属的用户 |
PR |
进程的调度优先级 |
NI |
进程的优先级,值越小优先级越高,负值表示高优先级,正值表示低优先级 |
VIRT |
进程使用的虚拟内存。进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES |
RES |
驻留内存大小 |
SHR |
共享内存大小 |
S |
进程的状态,D:不可中断的睡眠态,R:运行态,S:睡眠态,T:被跟踪或已停止,Z:僵尸态 |
%CPU |
进程使用CPU时间百分比 |
%MEM |
进程使用物理内存百分比 |
TIME+ |
进程从启动到当前使用的CPU总时间 |
COMMAND |
运行进程所使用的命令或进程名称 |
查看网络进程
netstat
命令说明:
作用: 显示网络连接,路由表,接口状态 语法: netstat [选项] 选项: -n, -number 显示数字形式地址主机、端口 -t, tcp 显示TCP协议进程 -l, --listening 只显示正在侦听的套接字 -p, --program 显示所属进程的PID和名称 常见用法: netstat -tnpl
操作示例: