Linux14 进程管理之进程相关命令
进程相关命令
一个进程的优先级高了,意味着:获得更多的CPU运行时间;更优先获得运行的机会;
如何调节进程的优先级呢?每一个进程都有一个nice值:nice值的范围是-20--19 分别对应100--139,普通用户仅能够调大自己的进程的Nice值; init进程是所有进程的父进程:进程号为1
ps
ps:Process State
SysV风格:-
BSD风格:
ps:
a:所有与终端有关的进程
u:显示进程是由哪个用户启动的
x:所有与终端无关的进程
进程的分类:
跟终端有关的进程:
跟终端无关的进程:
进程状态:
D:不可中断的睡眠
R:运行或就绪
S:可中断的睡眠
T:停止
Z:僵尸
<:高优先级进程
N:低优先级进程
+:前台进程组中的进程
l:多线程进程
s:会话进程首进程
ps aux | head # BSD风格
USER(进程发起者)
PID(进程ID)
%CPU(该进程占据CPU的百分比)
%MEM(占据内存的百分比)
VSZ(虚拟内存集)
RSS(常驻内存集)
TTY(关联的终端)
STAT(进程状态)
START(启动时间)
TIME(占据CPU的时长)
COMMAND(哪个命令启动的这个进程,如果这个命令外面有中括号,表示这是一个内核线程)
e:显示所有进程
l:长选项,显示更多字段
f(F):大小写显示的字段近似,
ps:
-elF
-eF # 相当于-a
-ef
ps -el # SysV风格
ps -elf | head
F
S
UID:用户ID
PID:当前进程进程号
PPID:父进程进程号
C
PRI:优先级
NI:nice值
ADDR:
SZ:size,
WCHAN:
TTY:
TIME CMD:
PSR:表示正在运行在哪一个CPU上
ps:
-o # 指定显示哪些字段
ps -axo pid,command,ni | head
pstree
查看进程树
pgrep、pkill
pgrep bash # 显示bash的进程,且只显示进程号
pgrep -u root bash # 显示以root用户运行的bash,且只显示进程ID号
pgrep -u root,deamon #显示以root用户运行或者进程是deamon的进程ID号
pkill 和pgrep用法相同,根据进程名杀死进程
pidof
pidof: # 通过进程的进程名字寻找这个进程的进程ID号
pidof 进程名
pidof httpd
pidof bash
pidof sshd
pidof crond
top
PID
USER
PR :进程优先级
NI:nice值
VIRT:虚拟内存集
RES(resident size):常驻内存集
SHR:共享内存 多个进程可能共享一些资源,比如库,这些都是共享资源的大小。
S:状态
%CPU
%MEM
TIME+:运行时长(占用CPU的时长)
COMMAND
top:
M:根据驻留内存大小进行排序
P:根据CPU使用百分比进行排序
T:根据累计时间进行排序
l:是否显示平均负载和启动时间
t:是否显示进程和CPU状态相关信息
m:是否显示内存相关信息
c:是否显示完整的命令行信息
q:退出top
k:终止某个进程
top: # 显示的第一行内容和 uptime 命令显示的相同,表示系统负载情况。
-d 1: # 每秒钟自动刷新一次
top -d 1
-b: 按批刷新,不是单屏刷新
top -d 1 -p
-n:在批模式下,共显示多少批
top -d 1 -p -n 3 # 显示3屏之后退出
top 之后 按 1 显示当前机器其他CPU的使用状态 按 M 按照进程使用内存进行排序,谁使用的多,谁在前面,默认是按照 %CPU 进行显示的 再次按 P 返回到按照%CPU进行排序
进程间通信(Inter Process Communication)
共享内存
信号:Signal
Semphore:旗语
vmstat
vmstat(virtual memory state):系统状态查看命令
procs
r:运行队列长度
b:阻塞队列长度
memory
swpd:交换内存已用的大小
free:空闲内存
buff:用于缓冲的
cache:用于缓存的
swap
si(swap in):从物理内存到交换内存又多少个页面换进换出 在指定的观察窗口内有多少个页面到交换内存
so(swap out):有多少个页面从交换内存调到物理内存然后又被调到交换内存的页面的个数
io
bi(block in):有多少个磁盘块被调到内存
bo(block out):有多少个磁盘块从内存中同步到磁盘上了
system
in(interrupt):中断的个数
cs(context switch):上下文切换的次数(进程切换的次数)
cpu
us(user space): 用户空间占用的CPU百分比
sy(system):内核空间占用的CPU百分比
id:空闲
wa:等待IO
st:被偷走的
vmstat 1 # 表示每隔一秒钟刷新一次
vmstat 1 5 # 每隔一秒钟显示一次,总共显示5次
free
kill
Linux常用系统信号:
1:SIGHUP:重载 让一个进程不用重启,就可以重读其配置文件,并让新的配置信息生效;
2:SIGINT: 中断信号 Ctrl+c:中断一个进程 Ctrl+Z:杀死
9:SIGKILL:发出杀死信号;杀死一个进程,强制杀死;一般不使用
15:SIGTERM:发出终止信号;终止一个进程,杀死一个进程的默认信号(15)
17,19,23:SIGSTOP 停止信号
18:SIGCONT 恢复信号
INT(2): kill -[信号名称|信号ID] pid
kill -2 PID
kill -SIGINT PID
kill -INT PID
退出信号:
ctrl+d
暂停信号:将进程暂停
SIGTSTP(20)
kill -20 PID
kill -SIGTSTP PID
kill -TSTP PID
杀死进程信号:
SIGKILL
kill -9 PID
kill -SIGKILL PID
kill -KILL PID
终止信号:
SIGTERM
kill -15 PID
kill -SIGTERM PID
kill -KILL PID
注:不能够被捕捉
暂停和恢复信号
SIGCONT:恢复
SIGSTOP:暂停
重载信号:
SIGHUP(1)
关于HUP信号:
如果想让我们的进程在后台一直运行,不要因为用户注销(logout)而去结束掉所有的子进程,可以使用nohup,nohup后台启动,会在当前目录生成一个nohub.out文件,用于执行的命令的输出。
格式: nohup [执行的命令] &
# 例
nohup ping baidu.com
setsid 原理与nohup类似,实际上是开了一个孤儿进程
# 例子
setsid ping baidu.com &
在shell中提交任务
(ping baidu.com &)
# yum install psmisc -y
killall COMMAND(进程名) # 杀死这个进程名下的一批进程 也可以指定信号,和kill一样
nice
调整nice值:
调整已经启动的进程的nice值;
renice NI PID
renice 3
在启动时的进程的nice值:
renice -n NI COMMAND
在启动时指定nice值:
nice -n NI COMMAND
nice -n 3 useradd hbase
前台后台
前台作业:占据了命令提示符
后台作业:启动之后,释放命令提示符,后续的操作在后台完成
前台-->后台:
Ctrl+z:把正在前台的作业送往后台 # 但是当前这个进程会停止 可以通过 bg+作业号 在后台启动
COMMAND &:让命令在后台执行
bg:让后台的停止作业继续运行
bg [JOBID]
bg 1
jobs:查看后台的所有作业
作业号,不同于进程号
+:命令将默认操作的作业
-:命令将第二个默认操作的作业
fg: 将后台的作业调回前台
fg [%JOBID] # %可以省略
fg 1
kill [%JOBID] # 终止某个作业
kill %1 # %不可以省略