进程管理
程序:静态的代码,占用磁盘空间
进程:动态的代码,占用内存,cpu
唯一标识:PID 编号
父进程/子进程 僵尸进程 孤儿进程
查看进程树
-
pstree — Processes Tree
—格式:pstree [选项] [PID或用户名]
-
常用命令选项
— -a:显示完整的命令行
— -p:列出对应PID编号
systemd:所有进程的父进程,上帝进程
终端1:
[root@server ~]# su - njw
[njw@server ~]$ vim abc.txt
终端2:
[root@server ~]# pstree njw #查询njw运行的进程
bash───vim
[root@server ~]# pstree -p njw
bash(10176)───vim(10271)
[root@server ~]# pstree -ap njw #显示当前njw运行的所有进程
bash,10176
└─vim,10271 abc.txt
pstree支持过滤命令
[root@server ~]# pstree | grep named
|-named---3*[{named}]
查看进程快照
-
ps — Processes Snapshot
—格式:ps [选项]...
-
常用命令选项
— aux:显示当前终端所有进程(a)、当前用户在所有终端下的进程(x),以用户格式输出(u)
— -elf:显示系统内所有进程(-e)、以长格式输出信息(-I)、包括最完整的进程信息(-f)
-
ps aux操作
—列出正在运行的所有进程
[root@server ~]# ps aux
用户 进程ID %CPU %内存 虚拟内存 固定内存 终端 状态 起始时间 CPU时间 程序指令
-
ps -elf 操作
—列出正在运行的所有进程,查询进程的父进程
[root@server ~]# ps -elf
PPID:父进程ID; PRI/NI:进程优先级,数值越小优先级越高
进程动态排名
-
top交互式工具
—格式:top [-d 刷新秒数] [-U 用户名]
[root@server ~]# top -d 1
大写P 进行CPU排序
大写M 进行内存排序
系统时间 虚拟机运行时间未关机 正在登陆系统的用户 CPU在一定时间内处理进程个数的平均值
总共进程个数 正在运行的进程个数 待机的进程个数 0个停止 0个僵尸进程
检索进程
-
pgrep — Process Grep
—用途:grep [选项]... 查询条件
-
常用命令选项
— -l:输出进程名,而不仅仅是PID
— -U:检索指定用户的进程
— -x:精确匹配完整的进程名
[root@server ~]# pgrep -l a #查找名字带a的进程
[root@server ~]# pgrep -lU njw #查询njw用户运行的进程
[root@server ~]# pgrep -xl rsyslogd
1080 rsyslogd
#######################################################################
进程的前后台的调度
-
前台启动
—输入正常命令行,运行期间占用当前终端
-
后台启动
—在命令行末尾添加"&"符号,不占用当前终端
-
Ctrl + z 组合键
—挂起当前进程(暂停并转入后台)
-
jobs 命令
—查看后台任务列表
-
fg 命令
—将后台任务恢复到前台运行
-
bg 命令
—激活后台被挂起的任务
[root@server ~]# sleep 900 & #正在运行放入后台
[1] 12338
[root@server ~]# jobs #查看后台运行的进程
[1]+ Running sleep 900 &
[root@server ~]# sleep 800
^Z #Ctrl + z 暂停放入后台
[2]+ Stopped sleep 800
[root@server ~]# bg 2 #将后台编号为2的进程继续运行
[root@server ~]# jobs
[1]- Running sleep 900 &
[2]+ Running sleep 800 &
[root@server ~]# fg 2 #将后台编号为2的进程恢复到前台
sleep 800
^C #按Ctrl + c 终止进程
[root@server ~]# jobs
[1]+ Running sleep 900 &
[root@server ~]# fg 1 #将后台编号为1的进程恢复到前台
sleep 900
^C #按Ctrl + c 终止进程
[root@server ~]# jobs
####################################################################
杀死进程
-
干掉进程的不同方法
—Ctrl + c 组合键,终端当前命令程序
—kill [-9] PID... 、kill [-9] %后台任务编号
—killall [-9] 进程名 ...
—pkill 查找条件
#选项 -9 为强制杀死进程,一般用于僵尸进程和孤儿进程
[root@server ~]# sleep 500 &
[1] 12574
[root@server ~]# sleep 600 &
[2] 12581
[root@server ~]# sleep 700 &
[3] 12591
[root@server ~]# sleep 800 &
[4] 12610
[root@server ~]# jobs -l #显示后台进程,包括进程PID编号
[1] 12574 Running sleep 500 &
[2] 12581 Running sleep 600 &
[3]- 12591 Running sleep 700 &
[4]+ 12610 Running sleep 800 &
[root@server ~]# kill 12574
[1] Terminated sleep 500
[root@server ~]# jobs -l
[2] 12581 Running sleep 600 &
[3]- 12591 Running sleep 700 &
[4]+ 12610 Running sleep 800 &
[root@server ~]# kill -9 12581
[2] Killed sleep 600
[root@server ~]# jobs -l
[3]- 12591 Running sleep 700 &
[4]+ 12610 Running sleep 800 &
[root@server ~]# killall sleep
[3]- Terminated sleep 700
[4]+ Terminated sleep 800
[root@server ~]# jobs -l
######################################################################
强制踢出一个用户(杀死该用户开启的所有进程)
[root@server ~]# killall -9 -u njw