一、进程概念
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。
二、查看进程
1.PS 查看当前终端上运行的进程
[root@ztq ~]#ps
[root@ztq ~]#ps aux
选项:
a 表示显示所有用户的进程,包括其他用户的守护进程。
如果不使用 -a 选项,ps 命令默认只显示当前用户的进程。
u 表示以用户为主要排序标准显示进程。
使用 u 选项后,ps 命令会显示进程的详细信息,
包括用户、进程ID(PID)、CPU使用率、内存占用等。
x 表示显示没有控制终端的进程,即守护进程或后台运行的进程。
f 显示进程之间的父子关系(使用pstree查看更详细的父子关系)
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 193972 7036 ? Ss 09:34 0:03 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0.0 0.0 0 0 ? S 09:34 0:00 [kthreadd]
user 用户,进程拥有者
pid 进程id号 process identify
1号进程 所有进程的父进程
名称 systemd centos7之后的1号进程
initd centos7之前的1号进程
CPU cpu占用百分比
MEM mem占用百分比
VSZ 系统分配给进程虚拟内存 进程运行时跟内核申请的内存
RSS 进程占用的真实内存
TTY 进程运行时占用的终端 进程在哪个终端运行
查看tty的方法:
#tty
? 表示这个进程开启的时候没有占用终端
STAT 进程状态
S 休眠状态
R 运行状态
T 暂停状态
Z zombie 僵死状态 (垃圾进程,看见直接杀死)
START 进程的启动时间
TIME 进程占用cpu的总时间
COMMAND 进程名称
按指定字符排序:
# ps aux --sort %cpu //按cpu进行排序
# ps aux --sort -%cpu //-%cpu 反向排序
# ps aux --sort -%mem //-%mem 反向排序
显示指定字段:
# ps axo user,%cpu,command --sort -%cpu
[root@ztq ~]# ps -elf
选项:
-e 显示所有进程 //常用
-l 长格式显示
-f 完整格式
# ps -e
PID TTY TIME CMD
# ps -el
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
# ps -elf
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
pstree进程树
查看进程树
[root@ztq ~]# pstree
-a 显示参数
-p 显示pid
-u 显示用户名 只针对普通用户开启的进程
2.top 实时查看进程状态
[root@ztq ~]# top
top - 19:12:17 up 9:38, 2 users, load average: 0.02, 0.03, 0.05
Tasks: 230 total, 1 running, 229 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.2 us, 1.2 sy, 0.0 ni, 98.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 4026120 total, 2098988 free, 917780 used, 1009352 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 2814412 avail Mem
2063 root 20 0 3047612 154764 26384 S 6.7 15.5 1:56.51 gnome-shell
38508 root 20 0 162100 2188 1528 R 6.7 0.2 0:00.01 top
load average: 0.02,0.04,0.05
从1分钟,5分钟,15分钟之前开始到现在等待cpu处理的队列平均长度
%Cpu(s):
0.2 us user 用户态的进程所占用的cpu的使用率 <70%
1.2 sy system 内核态的进程所占用的cpu的使用率 <30%
0.0 ni nice 修改过nice值的进程所占用的cpu使用率
98.7 id idle cpu空闲率
0.0 wa wait cpu空转率
0.0 hi hardware interrupt 硬件中断
0.0 si software interrupt 软件中断
0.0 st stolen steal 被虚拟化程序偷走的cpu使用率
buff/cache 缓存:
buffer 缓冲区 写缓存
cache 缓冲 读缓存
清理缓存
# echo 3 > /proc/sys/vm/drop_caches
swap分区 交换分区 是磁盘分区
作用:当内存不够时,会有一部分进程把占用的内存的空间交换到硬盘交换分区
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
pid 进程id
user 进程所属用户
PR priority 优先级
NI nice值 它可以间接修改进程优先级
VIRT 虚拟内存
RES 物理内存
SHR share 共享内存
S 进程状态
%CPU cpu使用率
%MEM 内存使用率
TIME 占用的CPU时间片
COMMAND 进程名称
h|? 帮助
M 按内存排序
P 按cpu排序
1
> 往下翻页
< 往上翻页
k 输入pid杀死进程
h 打印帮助
q 退出
3.lsof
应用范围有限,只能查看带端口的进程
[root@ztq ~]# lsof -i:80
查看端口为80的进程
4.pidof / pgrep
查看进程的PID
[root@ztq ~]# pidof bash
7951 811
[root@ztq ~]# pgrep bash
7951
进程pid文件
[root@ztq ~]#cd /var/run
[root@ztq ~]# cat /var/run/httpd/httpd.pid
12265
5.w 查看用户
[root@ztq ~]# w
16:51:43 up 8:30, 7 users, load average: 0.11, 0.27, 0.30
USER TTY FROM LOGIN@ IDLE JCPU
PCPU WHAT
root :0 :0 08:22 ?xdm? 29:39 0.23s
gdm-session-
root pts/0 :0 14:13 1:43 0.30s 0.30s bash
root pts/1 :0 11:19 5:19 0.62s 0.62s bash
root pts/2 :0 14:13 1:39m 0.06s 0.01s less
root pts/3 :0 14:54 7.00s 0.06s 0.01s w
root pts/4 :0 16:25 25:51 0.06s 0.06s bash
root pts/5 :0 16:40 7:11 0.24s 0.24s bash
6.who 查看用户
[root@ztq ~]# who
root :0 2017-11-27 08:22 (:0)
root pts/0 2017-11-27 14:13 (:0)
root pts/1 2017-11-27 11:19 (:0)
root pts/2 2017-11-27 14:13 (:0)
root pts/3 2017-11-27 14:54 (:0)
root pts/4 2017-11-27 16:25 (:0)
root pts/5 2017-11-27 16:40 (:0)
7.users 查看用户
[root@ztq ~]# users
root root
8.uptime
[root@ztq ~]# uptime
10:48:27 up 0 min, 2 users, load average: 0.52, 0.15, 0.05
当前时间 运行时间 用户连接数 平均负载
三、进程状态/生命周期
[root@ztq ~]# man ps
R running
S sleep
T stop
Z zombie(僵死,僵尸)
D Uninterruptible sleep (usually IO)
R Running or runnable (on run queue)
S Interruptible sleep (waiting for an event to complete)
T Stopped, either by a job control signal or because it is
being traced.
W paging (not valid since the 2.6.xx kernel)
X dead (should never be seen)
Z Defunct ("zombie") process, terminated but not reaped by
its parent.
< high-priority (not nice to other users)
N low-priority (nice to other users)
L has pages locked into memory (for real-time and
custom IO)
s is a session leader
l is multi-threaded (using CLONE_THREAD, like NPTL
pthreads do)
+ is in the foreground process group
四、控制进程
[root@ztq ~]# kill -L //查看kill选项
-l 同理
[root@ztq ~]# kill 信号(signal) pid
-TERM -15 //默认信号,不写信号选项的时候默认是它
-KILL -9 //强制杀死
-CONT -18 //激活进程
-STOP -19 //挂起进程
-HUP -1 //重新加载进程或者重新加载配置文件
pkill
-9 进程名称 连终端本身一起杀掉
-t 终端 只杀死在终端上运行的进程
-u 用户名称 终止其所有进程的用户名
killall 信号 进程名称