Linux进程管理
进程是什么?
顾名思义, 正在进行的程序
只要是程序,一运行就会产生至少一个进程
进程管理最主要的三个事情
1.判断服务器健康状态(最重要的)
2.查看系统中所有进程
3.杀死进程
1.查看进程
ps aux 查看系统中所有进程,用BSD操作系统格式(如果是ps -aus就会有一行报错)
ps -le 出现的内容与ps aus一样,只是多了一列优先级
选项
-a 显示一个终端的所有进程,除了会话引线
-u 显示进程的归属用户及内存的使用情况
-x 显示没有控制终端的进程
-l 长格式显示。显示更加详细的信息
-e 显示所有进程,和-A作用一致
USER 该进程是由哪个用户产生的
PID 进程的ID号
%CPU 该进程CPU资源占用情况的百分比,占用越高,进程越消耗资源
%MEM 该进程占用物理内存的百分比,占用越高,进程越耗费资源
VSZ 该进程占用虚拟内存的大小,单位为KB
RSS 该进程占用实际物理内存的大小,单位KB
TTY 该进程是在哪个终端中运行的。其中tty1-tty7代表本地控制台终端(值为?的时候,表示并不是由终端启动的,而是由系统自动启动的)
TIME表示当前CPU占用的资源,时间越长,占用资源越多
COMMAND进程名
tty1-tty6是本地的字符界面终端,tty7是图形终端
pts/0-255代表虚拟终端
PPID 父进程的进程ID(Parent Process id)
SID 会话ID(Session id)
P 等待交换页
STAT(状态)状态位常见的状态字符
D 无法中断的休眠状态(通常 IO 的进程);
R 正在运行可中在队列中可过行的;
S 处于休眠状态;
T 停止或被追踪;
W 进入内存交换 (从内核2.6开始无效);
X 死掉的进程 (基本很少见);
Z 僵死 Zombie(a defunct process) 进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放。
< 优先级高的进程;
N 优先级较低的进程;
L 有些页被锁进内存;
s 进程的领导者(在它之下有子进程);
l 多进程的(使用 CLONE_THREAD, 类似 NPTL pthreads);
+ 位于后台的进程组;
top命令
需要注意,top命令是每三秒执行一次
top最重要的功能是,根据最上面的那五行判断系统的健康状态'
服务器维护基本原则, 一般的网站类服务器,一般每个月重启一次,让缓存什么的不能影响效率和运行,
游戏类的服务器负载较大的推荐一周重启一次
杀死进程(kill命令是在无法正常杀死和关闭进程的时候才来用的)
kill
kill -1 进程PID 或者kill -HUP 进程PID 是平滑的杀死进程,不会把用户踢出 (关于相应指令输入kill -l查看)
kill -9 进程PID 强制杀死进程
kill命令是在无法正常杀死和关闭进程的时候才来用的
killall
killall [选项][信号] 进程名
例子 killall -9 httpd强制杀死所有httpd的进程
如果是killall -i -9 httpd将会交互杀死进程,也就是说让用户决定是否真的杀死
-I则是不区分进程大小写
pkill
跟killall用法类似
不过pkill可踢出终端用户 例:pkill -9 -t 终端号(w命令查看到的TTY号)
如此便强制踢出了终端登陆用户(-9 和 -t不能写反)
关于Linux下的进程优先级(修改)
PRI代表Priority(最终生效,但不能直接修改,用户只能改Nice,最后两个相加就能影响优先级了),NI代表Nice。这两个值都是优先级,数字越小代表进程优先级越高
PRI(最终值)=PRI(原始值)+NI
用户只能修改NI的值,不能直接修改PRI
修改操作
nice -n -5 service httpd start启动httpd服务的同时,就修改了优先级了(只能是操作不存在的进程)
renice [优先级] PID
renice命令是修改已存在的进程的NI值的命令
例 :renice -10 2125
jobs查看后台运行的进程(程序)
加上-l指令则可看到进程的PID可用于杀死进程
ctrl + z使进程暂停在后台
可执行程序包括指令都可在最后加一个 & 放入后台进行运行
注:“+”代表最近一个放入后台的工作,也就是工作恢复时,默认恢复的工作。“-”代表倒数第二个放入后台的工作
bg %ID 恢复某个停止的进程(不加ID则默认为+的那个恢复,fg也是一样)
fg 进程恢复到前台
nohup 要执行的命令 &
这样就会放入后台运行终端关闭也不影响它的运行
查询系统资源
vmstat 命令监控系统资源
vmstat [刷新延时 刷新次数]
例: vmstat 1 3
swap 交换分区 memory物理内存
prcs :进程信息字段
-r 等待运行的进程数,数量越大,系统越繁忙
-b 不可被唤醒的进程数量,数量越大,系统越繁忙
memory:内存信息字段
swpd 虚拟内存使用情况,单位KB
free 空闲的内存容量,单位KB
buff 缓冲的内存容量,单位KB
cache 缓存的内存容量,单位KB
简单来说缓存cache是用来加速数据从硬盘中读取的,而缓冲buffer是用来加速数据写入硬盘的
swap 交换分区的信息字段:
si 从磁盘中交换到内存中的数据的数量,单位为KB
so 从内存中减缓到磁盘中数据的数量,单位KB。此两个数越大,证明数据需要经常在磁盘和内存之间交换,系统性能越差
io :磁盘读写信息字段
bi 从块设备读入数据的总量
bo 写到块设备的数据的总量,单位是块,此两个数越大,代表系统的I/O越繁忙
system :系统信息字段,
in 每秒被中断的进程次数
cs 每秒钟进行的事件切换次数,此两个数越大,代表系统与接口设备的通信非常繁忙
CPU :CPU信息字段
us 非内核进程消耗CPU运算时间的百分比,
sy 内核进程消耗CPU运算时间的百分比
id 空闲CPU的百分比
wa 等待I/O所消耗的CPU百分比
st 被虚拟机所盗用的CPU占比
dmesg查看系统内核信息
查看CPU信息
cat /proc/cpuinfo
lsb_release -a 查看Linux发行版
未完待续···