说明:本文简单介绍下运维场景中常用的linux命令
场景一:日志查看类
less 分屏显示文件内容
less指令用来分屏查看文件内容,它的功能与more指令类似,但是比more指令更加强大,支持各种显示终端。less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。
1)基本语法
less 要查看的文件
2)操作说明
操作 | 功能说明 |
空格键 或者 [pagedown] | 向下翻动一页 |
b 或者 [pageup] | 向上翻动一页 |
上下键 | 上下翻动一行 |
/字符串 | 向下搜寻 字符串 的功能;n:向下查找;N:向上查找; |
?字符串 | 向上搜寻 字符串 的功能;n:向上查找;N:向下查找; |
gg | 回到文件第一行 |
shift + g 或者 G | 回到文件的最后一行 |
q | 离开 less 这个程序 |
head 显示文件头部内容
head用于显示文件的开头部分内容,默认情况下head指令显示文件的前10行内容。
1)基本语法
head 文件 (功能描述:查看文件头10行内容)
head -n 5 文件 (功能描述:查看文件头5行内容,5可以是任意行数)
2)选项说明
选项 | 功能 |
-n <行数> | 指定显示头部内容的行数 |
tail 输出文件尾部内容
tail用于输出文件中尾部的内容,默认情况下tail指令显示文件的后10行内容。
1)基本语法
(1)tail 文件 (功能描述:查看文件后10行内容)
(2)tail -n 5 文件 (功能描述:查看文件后5行内容,5可以是任意行数)
(3)tail -f 文件 (功能描述:实时追踪该文档的所有更新)
2)选项说明
选项 | 功能 |
-n<行数> | 输出文件尾部n行内容 |
-f | 显示文件最新追加的内容,监视文件变化 |
grep 过滤查找及“|”管道符
管道符,“|”,表示将前一个命令的处理结果输出传递给后面的命令处理
1)基本语法
grep 选项查找内容源文件
命令 | grep 关键字
2)选项说明
选项 | 功能 |
-n | 显示匹配行及行号 |
-i | 忽略大小写进行匹配 |
-v | 反向匹配,只打印不匹配的行 |
常用for 循环
for i in `命令` ;do xxxx;done
案例实操
(1)查看hologres集群物理机有没有core文件
for i in `/apsara/kube_tools/kubectl get nodes | grep -v NAME |awk '{print $1}'`; do ssh $i ls -lrt /cloud/data/corefile;done
(2) 查看 odps tunnel机器 session_id 为 xxx的日志
for i in $(tj_show -r odps-service-frontend.TunnelFrontendServer# -ip);
do
ssh $i 'grep ERROR /apsara/tunnel_server/logs/tunnel.log'
done
场景二:磁盘水位类
df 查看磁盘空间使用情况
1)基本语法
df 选项(功能描述:列出文件系统的整体磁盘使用量,检查文件系统的磁盘空间占用情况)
2)选项说明
选项 | 功能 |
-h | 以human易读的 GBytes, MBytes, KBytes 等格式显示; |
3)案例实操
(1)查看磁盘使用情况
du 查看目录/文件水位
1)基本语法
du 选项 路径(功能描述:列出路径中目录/文件磁盘使用量)
2)选项说明
选项 | 功能 |
-h | 以human易读的 GBytes, MBytes, KBytes 等格式显示; |
-s | 只显示总计值 |
3)案例实操
(1)查看当前目录下各文件/目录的总计值
find 查找文件或者目录
find指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件显示在终端。
1)基本语法
find [搜索范围] [选项]
2)选项说明
选项 | 功能 |
-name<查询方式> | 按照指定的文件名查找模式查找文件 |
-size<文件大小> | 按照指定的文件大小查找文件。 |
-type<类型> | 按照指定的类型查找 目录或者文件。 |
3)案例实操
(1) 查找/apsara下 名为stderr.out 的文件
sudo find /apsara/* -type f -name 'stderr.out'
(2) 查找大小大于100M的文件
sudo find /* -type f -size +100M
场景三:系统管理类
ps 查看当前系统进程状态
ps:process status 进程状态
1)基本语法
ps aux| grep xxx (功能描述:查看系统中所有进程)
ps -ef| grep xxx (功能描述:可以查看子父进程之间的关系)
2)选项说明
选项 | 功能 |
-a | 选择所有进程 |
-u | 显示所有用户的所有进程 |
-x | 显示没有终端的进程 |
3)功能说明
(1)ps aux显示信息说明
USER:该进程是由哪个用户产生的
PID:进程的ID号
%CPU:该进程占用CPU资源的百分比,占用越高,进程越耗费资源;
%MEM:该进程占用物理内存的百分比,占用越高,进程越耗费资源;
VSZ:该进程占用虚拟内存的大小,单位KB;
RSS:该进程占用实际物理内存的大小,单位KB;
TTY:该进程是在哪个终端中运行的。其中tty1-tty7代表本地控制台终端,tty1-tty6是本地的字符界面终端,tty7是图形终端。pts/0-255代表虚拟终端。
STAT:进程状态。常见的状态有:R:运行、S:睡眠、T:停止状态、s:包含子进程、+:位于后台
START:该进程的启动时间
TIME:该进程占用CPU的运算时间,注意不是系统时间
COMMAND:产生此进程的命令名
(2)ps -ef显示信息说明
UID:用户ID
PID:进程ID
PPID:父进程ID
C:CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低;数值越小,表明进程是I/O密集型运算,执行优先级会提高
STIME:进程启动的时间
TTY:完整的终端名称
TIME:CPU时间
CMD:启动进程所用的命令和参数
4)经验技巧
如果想查看进程的CPU占用率和内存占用率,可以使用aux;
如果想查看进程的父进程ID可以使用ef;
kill 终止进程
1)基本语法
kill [选项] 进程号 (功能描述:通过进程号杀死进程)
2)选项说明
选项 | 功能 |
-9 | 表示强迫进程立即停止 |
top 查看系统健康状态
1)基本命令
top [选项]
2)选项说明
选项 | 功能 |
-d 秒数 | 指定top命令每隔几秒更新。默认是3秒在top命令的交互模式当中可以执行的命令: |
-i | 使top不显示任何闲置或者僵死进程。 |
-p | 通过指定监控进程ID来仅仅监控某个进程的状态。 |
3)操作说明
操作 | 功能 |
P | 以CPU使用率排序,默认就是此项 |
M | 以内存的使用率排序 |
N | 以PID排序 |
q | 退出top |
4)查询结果字段解释
第一行信息为任务队列信息
内容 | 说明 |
12:26:46 | 系统当前时间 |
up 1 day, 13:32 | 系统的运行时间,本机已经运行1天 13小时32分钟 |
2 users | 当前登录了两个用户 |
load average: 0.00, 0.00, 0.00 | 系统在之前1分钟,5分钟,15分钟的平均负载。 |
第二行为进程信息
Tasks: 95 total | 系统中的进程总数 |
1 running | 正在运行的进程数 |
94 sleeping | 睡眠的进程 |
0 stopped | 正在停止的进程 |
0 zombie | 僵尸进程。如果不是0,需要手工检查僵尸进程 |
第三行为CPU信息
Cpu(s): 0.1%us | 用户模式占用的CPU百分比 |
0.1%sy | 系统模式占用的CPU百分比 |
0.0%ni | 改变过优先级的用户进程占用的CPU百分比 |
99.7%id | 空闲CPU的CPU百分比 |
0.1%wa | 等待输入/输出的进程的占用CPU百分比 |
0.0%hi | 硬中断请求服务占用的CPU百分比 |
0.1%si | 软中断请求服务占用的CPU百分比 |
0.0%st | st(Steal time)虚拟时间百分比。就是当有虚拟机时,虚拟CPU等待实际CPU的时间百分比。 |
第四行为物理内存信息
Mem: 625344k total | 物理内存的总量,单位KB |
571504k used | 已经使用的物理内存数量 |
53840k free | 空闲的物理内存数量,我们使用的是虚拟机,总共只分配了628MB内存,所以只有53MB的空闲内存了 |
65800k buffers | 作为缓冲的内存数量 |
第五行为交换分区(swap)信息
Swap: 524280k total | 交换分区(虚拟内存)的总大小 |
0k used | 已经使用的交互分区的大小 |
524280k free | 空闲交换分区的大小 |
409280k cached | 作为缓存的交互分区的大小 |
列名 含义
PID 进程id
PPID 父进程id
RUSER Real user name
UID 进程所有者的用户id
USER 进程所有者的用户名
GROUP 进程所有者的组名
TTY 启动进程的终端名。不是从终端启动的进程则显示为 ?
PR 优先级
NI nice值。负值表示高优先级,正值表示低优先级
P 最后使用的CPU,仅在多CPU环境下有意义
%CPU 上次更新到现在的CPU时间占用百分比
TIME 进程使用的CPU时间总计,单位秒
TIME+ 进程使用的CPU时间总计,单位1/100秒
%MEM 进程使用的物理内存百分比
VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
SWAP 进程使用的虚拟内存中,被换出的大小,单位kb。
RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
CODE 可执行代码占用的物理内存大小,单位kb
DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
SHR 共享内存大小,单位kb
nFLT 页面错误次数
nDRT 最后一次写入到现在,被修改过的页面数。
S 进程状态(D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程)
COMMAND 命令名/命令行
WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名
Flags 任务标志,参考 sched.h
5)案例实操
(1)直接使用
top
(2)一秒钟查询一次
top -d 1
(3)查看进程的线程情况
top -p <进程号> -》shift + h
(4) 高亮显示某一列,并按该列排序 “<”“>”可以左右移动需要排序的列。
top -》 x -》 shift +><
tsar 系统性能监控工具
1)基本命令
tsar [选项]
2)选项说明
选项 | 功能 |
--interval/-i | 指明tsar的间隔时间,默认单位分钟,带上--live参数则单位是秒 |
--live/-l | 查看实时数据 |
-type<类型> | 按照指定的类型查找 目录或者文件。 |
--ndays/-n | 指定过去的数据天数,默认1天 |
--date/-d | 指定日期,YYYYMMDD |
--spec/-s | 指定字段,例如,tsar –cpu -s sys,util |
--list/-L | 列出启用的模块 |
Modules Enabled:
--cpu 列出cpu相关的监控计数
--mem 物理内存的使用情况
--swap 虚拟内存的使用情况
--tcp TCP 协议 IPV4的使用情况
--udp UDP 协议 IPV4的使用情况
--traffic 网络传出的使用情况
--io Linux IO的情况
--pcsw 进程和上下文切换
--partition 磁盘使用情况
--tcpx TCP 连接相关的数据参数
--load 系统负载情况
cpu字段含义
- user: 表示CPU执行用户进程的时间,通常期望用户空间CPU越高越好.
- sys: 表示CPU在内核运行时间,系统CPU占用率高,表明系统某部分存在瓶颈.通常值越低越好.
- wait: CPU在等待I/O操作完成所花费的时间.系统部应该花费大量时间来等待I/O操作,否则就说明I/O存在瓶颈.
- hirq: 系统处理硬中断所花费的时间百分比
- sirq: 系统处理软中断所花费的时间百分比
- util: CPU总使用的时间百分比
mem字段含义
- free: 空闲的物理内存的大小
- used: 已经使用的内存大小
- buff: buff使用的内存大小,buffer is something that has yet to be "written" to disk.
- cach: 操作系统会把经常访问的东西放在cache中加快执行速度,A cache is something that has been "read" from the disk and stored for later use
- total: 系统总的内存大小
- util: 内存使用率
load字段含义
- load1: 一分钟的系统平均负载
- load5: 五分钟的系统平均负载
- load15:十五分钟的系统平均负载
- runq: 在采样时刻,运行队列的任务的数目,与/proc/stat的procs_running表示相同意思
- plit: 在采样时刻,系统中活跃的任务的个数(不包括运行已经结束的任务)
tcp字段含义
- active:主动打开的tcp连接数目
- pasive:被动打开的tcp连接数目
- iseg: 收到的tcp报文数目
- outseg:发出的tcp报文数目
- EstRes:Number of resets that have occurred at ESTABLISHED
- AtmpFa:Number of failed connection attempts
- CurrEs:当前状态为ESTABLISHED的tcp连接数
- retran:系统的重传率
参考链接:https://www.cnblogs.com/zafu/p/7423730.html
3)案例实操
(1)查看最近一天的系统性能,打印间隔是一分钟
tsar -i 1
(2)查看两天前到现在的 cpu使用情况,打印间隔是一分钟
tsar -n 2 --cpu -i 1
(3)查看三天前机器cpu/mem/负载情况
tsar -d 3 --cpu --mem --load
场景四:文件修改类
vi/vim 编辑器
编辑器的三种模式
一般模式
以vi/vim打开一个文件就直接进入一般模式了(这是默认的模式)
一般模式常用语法
语法 | 功能描述 |
yy | 复制光标当前一行 |
y数字y | 复制一段(从第几行到第几行) |
p | 箭头移动到目的行粘贴 |
u | 撤销上一步 |
dd | 删除光标当前行 |
d数字d | 删除光标(含)后多少行 |
x | 删除一个字母,相当于del,向后删 |
X | 删除一个字母,相当于Backspace,向前删 |
yw | 复制一个词 |
dw | 删除一个词 |
^ | 移动到行头 |
$ | 移动到行尾 |
gg或者1+G | 移动到页头 |
G | 移动到页尾 |
数字+G(先输入数字,在按G) | 移动到目标行 |
编辑模式
进入编辑模式常用语法
按键 | 功能 |
i | 当前光标前 |
a | 当前光标后 |
o | 当前光标行的下一行 |
I | 光标所在行最前 |
A | 光标所在行最后 |
O | 当前光标行的上一行 |
命令模式
在一般模式当中,输入『 : / ?』3个中的任何一个按钮,就可以将光标移动到最底下那一行。
在这个模式当中,可以提供你『搜寻资料』的动作,而读取、存盘、大量取代字符、离开 vi 、显示行号等动作是在此模式中达成的!
基本语法
命令 | 功能 |
:w | 保存 |
:q | 退出 |
:! | 强制执行 |
: %s/旧字符/新字符 | 批量替换 |
/ 要查找的词 | n 查找下一个,N 往上查找 |
? 要查找的词 | n是查找上一个,N是往下查找 |
:set nu | 显示行号 |
:set nonu | 关闭行号 |
ZZ(shift+zz) | 没有修改文件直接退出,如果修改了文件保存后退 |
:nohl | 去除高亮显示 |
:set paste | 按照原格式复制内容 |