ps查看进程
静态查看进程某个时刻的状态,信息主要包括进程的用户、pid、stat状态、command命令等信息。
whatis ps 显示ps命令的功能描述
man ps 查看ps帮助手册(man是manual手册的缩写)
查看当前终端号:tty
tty终端:即当前的命令窗口界面。当前终端号用tty命令查。
pts/0~n:是伪终端,通常是指远程登录到此linux服务器的命令界面。
ps选项:(注,选项使用-的显示结果可能有差异)
a 显示其他终端的进程。例:ps a
u 以user、pid这种格式显示进程信息。例:ps u
x 显示系统中属于系统自己的所有进程,通常是开机启动系统时产生的进程(tty终端为?表示没有终端)例:ps x
e 显示进程中命令的的环境信息。例:ps e
f 以\_显示进程间的父子关系。例:ps f
-C 显示指定命令(command)的进程。例:ps ef -C sshd
l 或-l,以BSD长格式显示进程信息。例:ps l
-o 按自定义格式显示。例 ps -f -o user,pid,tname,time,cmd
ps aux 显示所有的进程
ps u 以user、pid这种格式显示进程信息
USER 进程的用户
PID 进程的标识号
%CPU CPU的使用率
%MEM 内存的使用率
VSZ 虚拟内存使用量
RSS 真实物理内存使用量
TTY 控制台(虚拟终端号)
STAT 进程状态
START 开启进程的时间
TIME 占用cpu的时间
COMMAND 终端上进程的名字
PID
1 1号进程(init或systemd也称为初始化进程) 1号进程是其他进程的父进程 其他的进程是1号进程的子进程
STAT状态(红字母为必须知道的状态)
说明:以下状态在man ps的579行的位置(用/CODE查)
R(running) 运行状态 (正在进行cpu处理的)
S(sleeping) 睡眠状态 休眠状态 (暂时没正在运行,后台挂着,通常是系统服务或网络服务)
Z(zombie) 僵尸状态 僵尸状态 看到僵尸状态的进程就是没有正常退出的 杀死
T(stopped) 暂停状态 挂起状态(不会占用cpu)。例ping 127.0.0.1回车后按ctrl+z即可暂停运行ping命令,用ps u查。
X 死掉的进程。
< 高优先级。例:ps aux | more
N 低优先级
s 包含子进程(sub)。例:ps uf
+ 位于后台的进程组。
l
孤儿进程:父进程死了,但子进程还活着在。通常是程序的进程异常时才会出现。
pstree命令
pstree 查看进程树
pstree -u 查看进程树并其用户
pstree -p 显示进程的pid
pstree -a 显示参数
pstree | grep sshd 过滤关键字,查看sshd的进程树
ps -f -C sshd 显示sshd命令的进程
ps l
ps elf 以长格式输出进程信息
ps -elf | more 以长格式输出进程信息,解释如下
F 文件的描述符
S STAT进程的状态
UID 进程的用户
PID 进程的标识号
PPID 父进程
C cpu的使用率
PRI 进程的优先级(priority) 被cpu所执行的优先级,数值越小越优先 数值越高优先级越低(注:PRI=20+NI)
NI 好心值(nice谦让值为-20~19) 数值越高优先值越低
ADDR SZ WCHAN 都与内存相关
STIME 开启程序的时间
TTY 在哪个终端上运行
TIME 占用cpu的时间
CMD 终端上进程的名字
文件描述符(了解):内核(kernel)利用文件描述符(file descriptor)来访问文件。文件描述符在形式上是一个非负整数。实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。在程序设计中,一些涉及底层的程序编写往往会围绕着文件描述符展开。但是文件描述符这一概念往往只适用于UNIX、Linux这样的操作系统。
动态观察进程的变化
top 类似于windows中的任务管理器,可以对进程显示状态、调优先级、强制结束等操作。
top命令在执行过程当中可以使用如下的按键命令,q键退出
q 退出
? 显示可以输入的按键命令及帮助信息
W 保存top程序的当前设置到/root/.toprc文件中
d 修改刷新间隔时间(delay)
z 彩色显示信息
b 高亮显示R运行状态的进程
x 高亮显示排序字段(列)
c 显示完整命令
f 设置显示字段、排序字段
R 切换升序、降序
P 按cpu使用率排序
M 按照内存的使用率排序
N 以pid来排序
T 由cpu时间累积排序(TIME+)
r 给某个pid重新指定一个nice谦让值(-20~19 调优先级) ,nice值越小优先级越高(注:PRI=20+NI)
r -->PID to renice: 3804(进程的pid)--> Renice PID 3804 to value: -5(nice值)
k 控制进程(结束进程)
k -->PID to kill: 5383(进程的pid)-->Kill PID 5383 with signal [15]: 15(正常退出信号)
> 向左翻页
< 向右翻页
说明:PR优先级=20 + nice值
top动态查看进程状态:(按q键退出)
查看pid为0,1,2,3,4,5的进程:top -p 0,1,2,3,4,5
说明:-p是指定要查看的进程pid,0为最后运行的进程
top的选项
top -d 2 //指定2秒更新 默认是3秒
top -b -n 5 > /tmp/top.txt //将top信息进行5次存到/tmp/top.txt文件中
top -p 13589 //查看pid为13589所对应进程的状态
top -u postfix 查看postfix用户的进程
杀(结束)进程的命令
kill pkill killall xkill
注意:
1、kill的实质作用是给进程发送信号,信号可以是强制结束9、暂停19、继续18、正常退出15、重新加载程序1、强制中断2等。
2、kill操作进程时必须先查出程序进程的pid进程号。
查看进程PID
pidof 程序名 例:pidof sshd
ps -C 关键字 //精确查找 例:ps ef -C sshd
pgrep -l 关键字 //模糊查找 例:pgrep -l ssh
杀进程kill
用法:kill 信号 pid
查看信号列表
kill -l
1 重新加载程序 HUP
2 即ctrl+c 强制中断 INT
15 正常退出 TERM
9 强制杀死 KILL
19 暂停进程 STOP
18 激活进程 CONT
杀死进程
kill -signal pid
kill -15 3804
-15默认的可以不写
kill -9 3804 强制杀死
暂停进程
kill -19 3804
kill -stop 3804 //可是使用单词代替
激活进程
kill -18 3804
kill -cont 3804
pkill
按照进程的名称控制进程,慎用,因为会结束掉所有相同命令的进程
pkill -信号 进程的名称
pkill -9 ping
按用户控制进程
pkill -信号 -u 用户名
pkill -9 -u jim
按终端控制进程,用ps u或who、w查已开启了哪些终端
pkill -信号 -t 终端名
pkill -9 -t pts/4
查看终端名
tty
killall
杀死所有和关键字相关的进程 ssh服务
killall -9 关键字
xkill 强制关闭卡住了窗口
xkill 回车后用鼠标点关闭的窗口
练习:查看kill信号列表,体验kill命令的常用信号选项。开A、B两个远程连接窗口测试。
kill -l 查看信号列表
1 重新加载程序 HUP
2 即ctrl c 强制中断 INT
15 正常退出 TERM
9 强制杀死 KILL
19 暂停进程 STOP
18 激活进程 CONT
说明:A窗口执行并查看状态,B窗口执行kill命令对A窗口的命令进程发信号。
A窗口:ping 127.0.0.10
B窗口:ps ef -C ping 或pidof ping 查看ping命令进程的pid值
kill -19 pid值 执行后请到A窗口看ping命令的状态变化
ps u 验证ping 127.0.0.10的进程状态是否为T
kill -18 pid值 同上
kill -15 pid值 同上
kill -2 pid值 同上
kill -9 pid值 同上
进程前后台操作(类似于win7中窗口的最小化、最大化)
符号和命令:&在后台运行 nohup jobs fg bg ctrl+z ctrl+d
程序的操作模式:
非交互式:执行命令后无需人为操作。不会占用命令终端。如ls、date、pwd、cat等。
交互式:执行后需要人为操作,会占用命令终端,可能需要切换到后台。如vim、vi、fdisk、firefox、gedit、word、脚本程序等软件。
进程运行在终端的前台 前台缺点:前台的进程会占用shell命令提示
# firefox
强制终止前台进程:ctrl+c
进程运行在终端的后台& 后台优点:后台进程不占用shell命令提示
# firefox & //用此命令执行,关闭终端会关闭进程
用ctrl d 关闭终端窗口,firefox进程不会关闭
# nohup firefox & //用此命令执行,关闭终端不会关闭进程 进程不依赖终端运行
把运行在前台的进程放到后台
#firefox 在前台运行firefox程序
#ctrl z 将firefox进程切到后台,进程将暂停
显示后台工作任务
# jobs
[1]+ Stopped firefox
[1] 工作号 工作号越大 表示最新开启的
+ 当前的进程
- 表示当前进程的上一个进程
将后台进程重新放回前台(类似于窗口最大化)
# fg %工作号
例:fg %1 或 fg 1
将进程切换到后,状态会变成已停止
# ctrl+z
激活后台任务
# bg %工作号 通常用于ctrl+z切换到后台并暂停的进程
杀死后台进程
kill - 9 % 工作号
例:kill -9 %1
综合实例:
pkill -9 top
top &
top &
jobs
kill -9 %1
kill -9 %2
前台进程可以用ctrl c 结束进程
1.信号9和15的区别
强制杀死
正常杀死
2.开启进程firefox放到后台
firefox &
nohup firefox &
3.前台开启进程,将前台进程放到后台
firefox
ctrl z
进程前后台切换的练习:
firefox & 在后以运行firefox
firefox & 同上
jobs 查后台工作任务
fg 1 将后台任务1切换到前台
ctrl+z 将当前任务切换到后台,并暂停运行
bg 1 激活后台任务1
ps ef -C firefox 查firefox的进程状态信息
kill -19 %1 让后台任务1暂停
kill -18 %1 让后台任务1继续执行(激活)
pkill -9 firefox 强制强束所有的firefox进程
修改进程的优先级
renice nice值 pid //调整某个进程的nice(取值为-20~19)
1.在后台运行多个ping命令
ping 127.0.0.1 &> /dev/null & #在后台运行ping命令
ping 127.0.0.2 &> /dev/null &
ping 127.0.0.8 &> /dev/null &
2.ps elf -C ping 进程信息如下
4 S root 2786 2747 0 80 0 - 31978 skb_re 11:35 pts/0 00:00:00 ping 127.0.0.1
4 S root 2787 2747 0 80 0 - 31978 skb_re 11:35 pts/0 00:00:00 ping 127.0.0.2
4 S root 2789 2747 0 80 0 - 31978 skb_re 11:35 pts/0 00:00:00 ping 127.0.0.8
0 R root 2796 2747 0 80 0 - 28166 - 11:35 pts/0 00:00:00 grep --color=auto ping
在另一窗口执行:top -p 2786,2787,2789
注:以上的2786、2787、2789是用ps elf -C ping查到的进程pid号
3.renice -5 2786 将pid为2786的nice值调为-5,PRI=20+NI
2786 (进程 ID) 旧优先级为 0,新优先级为 -5
4.ps elf -C ping
4 S root 2786 2747 0 70 -5 - 31978 skb_re 11:35 pts/0 00:00:00 ping 127.0.0.1
4 S root 2787 2747 0 80 0 - 31978 skb_re 11:35 pts/0 00:00:00 ping 127.0.0.2
4 S root 2789 2747 0 80 0 - 31978 skb_re 11:35 pts/0 00:00:00 ping 127.0.0.8
0 R root 2820 2747 0 80 0 - 28166 - 11:37 pts/0 00:00:00 grep --color=auto ping
在程序开启的时候指定其nice值
nice -nice值 进程的名字
nice --15 vim a.txt & 将nice指定为-15
ps elf -C vim 在另一窗口执行