进程管理
查看进程
ps命令 查看进程
# 1 ps是获取当前系统进程的命令 是Process Status的缩写
-a : 显示当前终端的所有进程
-u : 显示进程的用户信息
-x : 显示没有控制终端的进程,同时显示各个命令的具体路径
-e : 显示所有进程
-f : 显示程序间的关系
# 查看系统进程 常用组合
ps -aux # 中括号是系统进程 [内核态进程]
ps -ef
# 2 -aux 和 -ef之间的区别?
ps -aux : 会打印出cpu、内存相关的使用情况
ps -ef : 会打印出父级PID、带有UUID
# 3 ps -aux 结果详解
eg: ps aux | head -5
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.3 128400 7104 ? Ss 8月12 0:05 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0.0 0.0 0 0 ? S 8月12 0:00 [kthreadd]
root 4 0.0 0.0 0 0 ? S< 8月12 0:00 [kworker/0:0H]
root 5 0.0 0.0 0 0 ? S 8月12 0:01 [kworker/u256:0]
# 各字段详细解释
USER 运行进程的用户
PID 进程ID
%CPU CPU占用率
%MEM 内存占用率
VSZ 占用虚拟内存,单位:kb(killobytes)
VSZ是指已分配的线性空间大小,这个大小通常并不等于程序实际用到的内存大小,产生这个的可能性很多
比如内存映射,共享的动态库,或者向系统申请了更多的堆,都会扩展线性空间大小。
RSS 占用实际内存,单位:kb(killobytes)
RSZ是Resident Set Size,常驻内存大小,即进程实际占用的物理内存大小
TTY 进程运行的终端
STAT 进程状态 man ps (/STATE)
R 正在运行
S 可中断睡眠 Sleep,即在睡眠的过程中可以接收信号唤醒=》执行的IO操作可以得到硬件设备的响应
D 不可中断睡眠,即在睡眠的过程中不可以接收信号唤醒=》执行的IO操作得不到硬件设备的响应
T 停止的进程
Z 僵尸进程
X 死掉的进程(几乎看不见,因为死了就立即回收了)
< 标注了<小于号代表优先级较高的进程
N N代表优先级较低的进程
s 包含子进程
+ +表示是前台的进程组
l 小写字母l,代表以线程的方式运行,即多线程
| 管道符号代表多进程
START 进程的启动时间
TIME 进程占用CPU的总时间
COMMAND 进程 所执行的进程命令 或进程文件
# 带[]号的代表内核态进程
# 不带[]号的代表用户态进程
top命令 动态查看进程
# 默认情况下,top命令是3秒刷新一次
-d : 指定刷新的频率
-p : 查看指定进程的信息
-u : 查看指定用户的进程
-n : 查看指定top次数的信息
# 4 查看进程 实时变化状态
top
# 5 关闭进程
kill 进程号 # 正常关闭某进程 <==> kill -15 进程号
-l # 列出全部的信号
常用信号:
1 (HUP) :重新加载进程
9 (KILL) :强制杀死一个进程 立即终止
15 (TERM):正常停止一个进程 会保存信息 # 默认信号
# 6 强行关闭某进程
kill -9 进程id号
# 7 关闭软件的所有进程
pkill -9 软件名
eg:pkill -9 nginx # 关闭nginx所有进程
killall 软件名
eg: killall nginx # 关闭nginx所有进程
### 后台运行进程: 通过screen 来管理进程
1.安装:
yum install screen -y
2.创建一个screen窗口 指定名称
screen -S myjobs
3.screen窗口中执行耗时任务、进程
wget ...
4.后台运行任务 平滑退出screen 但任务还在后台运行
ctrl+a+d # 注:exit 才是真正关闭screen窗口
5.查看所有的screen
screen -list
6.进入正在运行的screen
screen -r myjobs # 调到前台执行
7.终止screen
exit 或 Ctrl + d
进程信号
kill 信号 关闭进程
HUP信号