Linux进程管理命令:
pstree、ps、top、pidof、htop、glances、pmap、vmstat、dstat、kill、pkill、job、bg、fg、nohup、pgrep、
pstree:display a tree of processes
ps:report a snapshot of the current processes.
Linux系统上运行中的各个进程的相关信息都保存在/proc/PID目录下的各文件中;
所以这些状态查看工具无非都是通过查看这些目录下的相关文件来实现的;
ps [options…]
支持两种风格的选项:加"-"和不加"-"
常用组合:
u:以用户为中心组织进程状态信息显示;
a:与终端相关的进程;
x:与终端无关的进程;
~]#ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
属主 进程号 使用cup时间百分比 使用内存百分比 已用虚拟内存大小 常驻内存集 终端类型 进程状态 启动时间 累计占用CPU的时间 由哪个命令 启动的
VSZ:Virtual memory Size 虚拟内存大小,进程在其线性地址空间占用的内存大小;
虚拟/线性内存集
RSS:ReSident Size 常驻内存大小;
常驻内存集
虚拟内存集大小一般大于常驻内存集大小,除了常驻内存集的数据剩下的都可以被交换到swap分区中;
TTY:通过哪个终端启动的
?:与终端无关;
STAT:进程状态
帮助:man ps
R:running
S:可中断的sleeping
D:不可中断的sleeping
T:stopped
Z:僵死态
+:前台进程
l:多线程进程
N:低优先级进程
<:高优先级进程
s:session leader
~]#ps -ef
-e:显示所有进程
-f:显示完整格式的程序信息
~]#ps -ejH
已进程层级格式显示进程相关信息
~]#ps -eFH
相对于上一个命令组合显示更完整的格式的进程信息
~]#ps -U username
显示某用户的运行的进程
~]#ps stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm,…
显示指定选项
pri:优先级
ni:nice
psr:processor,运行在哪颗CPU上;
pgrep、pkill:look up or signal processes based on name and other attributes
pgrep [options] pattern
pkill [options] pattern
-u uid:effective user
-U uid:real user
-t terminal:与指定终端相关的进程
-l:显示进程名
-a:完整格式的进程名
-P:显示其父进程为此处指定的进程的进程列表
pidof:find the process ID of a running program.
根据进程名获取其PID
top:display Linux processes
选项:
-d:指定刷新时间间隔,默认为3s;
-b:以批次方式显示,从第一屏刷到最后一屏;
-n #:显示多少批次;
有许多内置命令
排序:
P:以占据的CPU百分比排序;
M:以占用的内存百分比排序;
T:以累计占用CPU时长排序;
修改刷新时间间隔:s+键入秒数;
中止指定进程:k+进程号;
信息显示:
1:Def - 22:12:23 up 12:38, 2 users, load average: 0.00, 0.01, 0.05 =》 uptime
系统时间 主机已运行时间 使用者数量 负载均衡 一分钟 五分钟 十五分钟 使用"l"可以隐藏第一行信息
Tasks: 100 total, 1 running, 99 sleeping, 0 stopped, 0 zombie
进程总数量 运行中的进程 睡眠中的进程 停止的进程 僵死的进程
%Cpu(s): 0.0 us, 3.1 sy, 0.0 ni, 96.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
CPU的使用情况 用户空间程序占据的百分比 内核空间 nice 空闲的 等待IO完成时间 硬件中断 软件中断 虚拟机窃取的时间 使用"1"可以显示多个cpu
KiB Mem : 1867048 total, 1515904 free, 86300 used, 264844 buff/cache
内存使用情况 物理内存总大小 空闲空间 已使用内存 已使用的缓冲和缓存占据的空间
KiB Swap: 2097148 total, 2097148 free, 0 used. 1550164 avail Mem =》free -m
交换分区使用情况 总空间大小 空间交换空间 已使用交换空间 物理内存可使用空间
1 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
进程号 属主 优先级 nice 虚拟内存集 常驻内存集 共享内存大小 状态 占据CPU百分比 占据内存百分比 累计运行时长 启动命令
退出:q
htop:interactive process viewer 界面美观
安装htop:
tar -zxvf htop-1.0.2.tar.gz
cd htop-1.0.2.tar.gz
yum groups install Development\ Tools
yum install ncurses-devel.x86_64
./configure
make
make install
选项:
s:跟踪选定进程的系统调用;
l:显示选定进程打开的文件列表;
a:将选定进程绑定至某指定cpu核心;
帮助:man htop、top界面键入h
vmstat:Report virtual memory statistics
vmstat [options] [delay [count]]
各字段信息:
procs:
r:等待运行的进程数;
b:处于不可中断睡眠态的进程数(被阻塞的队列的长度);
memory:
swpd:交换内存的使用总量;
free:空间物理内存的总量;
buffer:用于buffer的内存总量;
cache:用于cache的内存总量;
swap:
si:数据从swap到内存的速率(Kb/s);
so:数据从内存进入swap的速率(Kb/s);
io:
bi:从块设备读入数据到系统中的速率(Kb/s);
bo:保存数据到块设备的速率(Kb/s);
system:
in:终端速率(Kb/s);
cs:进程/上下文切换速率(Kb/s);
cpu:
us:用户空间占据CPU的时间比例;
sy:内核空间占据CPU的时间比例;
id:空闲时间比例;
wa:等待IO完成所需要的时间比例;
st:被vm窃取的时间比例
选项:
-s:显示内存的统计数据信息;
pmap:report memory map of a process
pmap [options] pid [...] =》cat /proc/PID/maps
选项:
-x:以扩展格式显示;
glances:
帮助:man glances
可以查看内建命令;
常用选项:
-b:以Byte为单位显示网卡数据速率;
-d:关闭磁盘IO模块;
-f /path/to/somefile:设定输入文件位置;
-o {HTML|CSV}:输出格式;
-m:禁用mount模块;
-n:禁用网路模块;
-t # :延迟时间间隔;
-1:每个cpu的相关数据单独显示;
C/S模式下运行glances命令:
服务模式:
glances -s -B IPADDR(指明监听于本机的哪个地址)
客户端模式:
glances -c IPADDR(指明服务器端的地址)
dstat:versatile tool for generating system resource statistics
选项:
-c:显示CPU相关信息;
-C #,#,…,total
-d:显示disk相关信息;
-D total,sda[#],sdb[#],…
-g:显示page相关统计信息;
-m:显示memory相关统计信息;
-n:显示network相关统计信息;
-p:显示process相关统计信息;
-r:显示io请求的相关统计信息;
-s:显示swapped的相关统计信息;
--tcp:显示tcp相关统计信息;
--udp:显示udp相关统计信息;
--unix:
--raw:
--socket:
--icp:
--top-cpu:显示最占用CPU的进程;
--top-mem:显示最占用内存的进程;
--top-io:显示最占用io的进程;
--tcp-lantency:显示延迟最大的进程;
kill:terminate a process
向进程发送控制信号,以实现对进程的控制;
显示当前系统可用进程:
man 7 signal
kill -l
常用信号:
1)SIGHUP:无需关闭进程而让其重读配置文件;
2)SIGINT:终止正在进行的进程,相当于Ctrl+c;
9)SIGKILL:杀死正在运行的进程;
15)SIGTERM:终止正在进行的进程;
指定信号的方法:
信号的数字标识:1,2,9,…
信号完整名称:SIGHUP,SIGINT,SIGKILL,…
信号的简写名称:HUP,INT,KILL,…
向进程发信号:
kill [-SIGNAL] PID...
终止名称之下的所有进程:
killall [-SIGNAL] Program
Linux的作业控制:
前台作业:通过终端启动,且启动后一直占据终端;
后台作业:可以通过终端启动,但启动后即转入后台运行(释放终端);
如何让作业运行于后台?
运行中的作业
Ctrl+z:停止
尚未启动的作业
# COMMAND &
虽然这样作业被送往后台而释放了终端(前端),但是依然与终端相关;
如果希望送往后台后,剥离与终端的关系可使用:nohup COMMAND &
查看所有作业情况:
jobs
作业控制:
fg [[%]JOB_NUM]:将指定的后台作业调回前台;
bg [[%]JOB_NUM]:让送往后台的处于停止状态的进程继续运行;
kill [%JOB_NUM]:杀死指定作业号的进程;
进程优先级调整:
进程默认启动时的nice为0,优先级为120;
nice:run a program with modified scheduling priority
对启动时的进程的优先级进程调整;
nice -n 5 htop
renice:alter priority of running processes
renice -n 2 pid
对启动后的进程的优先级进程调整;
在生产环境中,如果某一进程占用cpu过多,内核会根据情况自动降低其优先级;
注:根据马哥视频做的学习笔记,如有错误,欢迎指正;侵删