前期基础知识准备,包括linux基础知识中的关于虚拟化的一些概念
CPU:通过timeslice
memory:通过线性地址
IO:通过分时复用
了解一些进程查看工具,包括:pstree,ps,pgrep,pidof,top,htop
htop命令(相对比较好用,这里特别再提一下):
选项:
-d #:指定延迟时间
-u username:仅显示指定用户的进程
-s colomn:以指定字段进行排序
命令:
s:跟踪选定进程的系统调用
l:显示选定进程打开的文件列表
a:将选定的进程绑定至某指定CPU核心
t:显示进程树
注意:需要使用fedora-epel源
这里对linux进程查看及管理工具的相关知识进行梳理的第二部分。
vmstat命令(比较早的一种工具,)
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:保存数据至块设备的速率
system
in:interrupts,中断速率
cs:context switch,进程切换速率
cpu:
us 用户空间占比
sy 内核空间占比
id 空闲
wa io完成所消耗时间比例
st 被偷走的时间比例
选项
vmstat -s 与cat /proc/meminfo的作用相似
-s: 显示内存的统计数据
pmap - report memory map of a process
内存映射表:显示从线性地址到物理地址的映射
pmap [options] pid [...]
-x:显示详细格式的信息
另一种实现
cat /proc/PID/maps
glances命令:
glances [-bdehmnrsvyz] [-B bind] [-c server] [-C conffile] [-p port] [-P password] [-t refresh] [-f file] [-o output]
内建命令
a sort processes automatically
l show/hide logs
c sort processes by cpu%
b bytes or bits for network i/o
m sort processes by mem%
w delete warning logs
p sort processes by name
x delete warning and critical logs
d show/hide disk i/o stats
h show/hide this help screen
f show/hide file system stats
t view network i/o as combination
n show/hide network stats
u view cumulative network i/o
s show/hide sensors stats
q quit(esc and ctrl-c also work)
y show/hide hddtemp stats
常用选项:
-b:以byte为单位显示网卡数据速率
-d:关闭磁盘i/o模块
-f:/path/to/somefile 设置输入文本位置
-o:(html/csv)输出格式
-m:禁用mount模块
-n:禁用网络模块
-t #:延迟时间间隔
-l:每个cpu的相关数据单独显示
c/s模式下运行glances命令
服务模式:
glances -s -B IPADDR
IPADDR:指明监听于本机哪个地址
客户端模式:
glances -c IPADDR
IPADDR:要连入的服务器端地址
dstat命令
dstat [-afv] [options...] [delay [count]]
-c:显示cpu相关信息
-C #,#,...,total
-d:显示disk相关信息
-D total,sda,sdb,...
-g:显示page相关统计数据
-m:显示memory相关统计数据
-n:显示network相关统计数据
-p:显示process相关统计数据
-r:显示io请求相关的统计数据
-s:显示swapped相关的统计数据
--tcp
--upd
--unix
--raw
--socket
--ipc 进程间通信的统计数据
--top-cpu:显示最占用cpu的进程
--top-io:显示最占用io的进程
--top-mem:显示最占用内存的进程
--top-lantency:显示延迟最大的进程
kill命令:
向进程发送控制信号,以实现对进程管理
显示当前系统可用信号
kill -l列出支持发送的信号
man 7 signal
常用信号:
1)sighup:无须关闭进程而让其重读配置文件
2)sigini:中止正在运行的进程,相当于ctrl+c
9)sigkill:杀死正在运行的进程
15)sigterm:终止正在运行的进程
18)sigcont:
19)sigstop:
指定信号的方法:
(1)信号的数字标识:1,2,9
(2)信号完整名称:sighup
(3)信号的简写名称:hup
向进程发信号:
kill [-SIGNAL] PID...
终止名称之下的所有进程
killall [-SIGNAL] program
linux的作业控制
作业和进程不是一一对应的
前台作业:通过终端启动,且启动后一直占据终端
后台作业:可以通过终端启动,但启动后即转入后台运行(释放终端)
如何让走也运行于后台
(1)运行中的作业
ctrl+z
(2)尚未启动的作业
COMMAND &
此类作业虽被送往后台运行,但其依然与终端相关。如果希望送往后台后,剥离与终端的关系
nohup COMMAND &
查看所有作业
jobs:
作业控制
fg [[%]JOB_NUM]:把指定的后台作业调回前台
bg [[%]JOB_NUM]:让送往后台的作业在后台继续运行
kill [%JOB_NUM]:终止指定的作业
进程优先级调整:
静态优先级:100-139
进程默认启动的nice值为0,优先级为120
nice命令
nice [OPTIONS] [COMMAND [ARG]...]
nice,renice
renice命令
renice [-n] priority pid...
查看
ps,axo,pid,comn,ni
未涉及到的命令:sar,tsar,iostat,iftop