作为一名linux工程师,我们需要时刻关注设备的cpu性能,内存和网络io等指标,以便保持系统正常运转,同时也是为了检查程序的性能。
这里奉上大神的博客想进一步深造的可以去观摩一下:http://www.brendangregg.com
#这里不展开讲,只是列出一些常用的命令,想要进一步了解每一个参数,可以利用help查看参数具体使用规则,也可以上网单独查看某一条命令详解。
grep 作为linux内容查找利器,当之无愧霸榜,用的也是最多的命令。
#其中i:忽略大小写;r:递归查找目录;n:打印行号;v:反向查找;c:显示匹配的行数;等等
grep -irn ./test
查看目录下文件情况,对于修改时间,权限查看也是非常常用的命令
#l:显示条目;h:显示GB,M,K等自适应;a:显示所有
ls -lah ./test
find查找文件利器,通过文件名查找文件的所在位置,文件名查找支持模糊匹配
find [指定查找目录] [查找规则] [查找完后执行的action]
#忽略大小写查询test.txt文件
find ./test -iname test.txt
查看用户资源,常用与查看系统当前支持的文件句柄数,进程数等等;
#查看所有用:-a
ulimit -a
#临时修改先查看所有带的命令参数;
#如修改:文件句柄数:-n
ulimit -n 4096
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 7380
max locked memory (kbytes, -l) 16384
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 1024
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
curl 是常用的命令行工具,用来请求 Web 服务器。
#在http访问上用的比较多
curl -v “http://www.baidu.com”
远程拷贝神器,告别u盘;
#用户名@ip:路径文件 目标目录
scp [email protected]:/home/disk/test/libcrypto.a ./test
用于转换Windows和UNIX的换行符,通常在Windows系统h开发的脚本和配置,UNIX系统下都需要转
换。
#转换整个目录
find . -type f -exec dos2unix {} ;
详细参考:github-sed
1 替换
-n 表明忽略执行过程的输出,只输出我们的结果即可。 -i 。使用此参数后,所有改动将在原文件上执行。你的输出将覆盖原文件。非常危险,一定要注意。
#sed ‘s/原字符串/新字符串/g’ 文件,替换
sed -n ‘s/sudo/test_sudo/g’ README.md
2 操作
p 对匹配内容进行打印。d 对匹配内容进行删除。这个时候就要去掉-n
参数了,想想为什么。w 将匹配内容写入到其他地方。
sed -n ‘2,5 p’ test.cpp
sed ‘2,5 d’ test.cpp
sed -n ‘2,5 w output.txt’ test.cpp
详细参考:github-awk
awk [可选的命令行选项] ‘BEGIN{命令 } pattern{ 命令 } END{ 命令 }’ 文件名
#ip拆分
echo ‘192.168.1.1’ | awk -F “.” ‘{print $2}’
168
注意点:
查看机器的启动时间、登录用户、平均负载等情况,通常用于在线上应急或者技术攻关中,确定操作系
统的重启时间。
查看虚拟机运行的状态
17:24:31 up 13 days, 3:00, 2 users, load average: 0.05, 0.01, 0.00
当前时间: 17:24:31
系统已经运行的时间:13 days, 3:00
前在线用户:2 个用户,是总连接数量,不是不同用户数量(开一个终端连接就算一个用户)。
系统平均负载:0.05, 0.01, 0.00,为最近1分钟、5分钟、15分钟的系统负载情况。
注意点:
负载说明(现针对单核情况,不是单核时则乘以核数):
查看cpu核数:
grep ‘model name’ /proc/cpuinfo | wc -l
压测cpu工具stress :
stress ,一个 Linux 系统压力测试工具,这里我们用作异常进程模拟平均负载升高的场景。
apt install stress
#模拟一个cpu使用率100%运行600s
stress --cpu 1 --timeout 600
cpu性能分析工具mpstat:
mpstat 是一个常用的多核 CPU 性能分析工具,用来实时查看每个 CPU 的性能指标,以及所有 CPU 的平均指标。
mpstat [-P {cpu|ALL}] [internal [count]]
apt install sysstat
#每5s打印一次cpu列表使用情况
mpstat -P ALL 5
进程查看
#显示所有的线程
#查看进程是否启动
sudo ps -ef |grep “nginx” |grep -v grep
top命令用于查看活动进程的CPU和内存信息,能够实时显示系统中各个进程的资源占用情况,可以按照
CPU、内存的使用情况和执行时间对进程进行排序。
pidstat用于监控全部或指定的进程占用系统资源的情况,包括CPU、内存、磁盘I/O、程切换、线程数等
数据。
u:显示cpu相关的性能指标;r:输出内存的使用信息;d:输出磁盘I/O的使用信息
pidstat -urd -p 进程号
#每5秒打印一次上下文切换
pidstat -w 5
注意:
一个是 cswch ,表示每秒自愿上下文切换(voluntary
context switches)的次数,另一个则是 nvcswch ,表示每秒非自愿上下文切换(non voluntary
context switches)的次数。
free各个字段的含义:
free -h
显示所有cpu的平均统计数据;这里需要关注一个参数%iowait:等待磁盘io所消耗的cpu比例
查看文件系统的硬盘挂载点和空间使用情况。
df -h
显示目录和目录下子目录和文件占用磁盘空间的大小。
查看网络状态,包括ip,mac地址;RUNNING表示当前网络正常工作;MTU数据大小;相关丢包错误等信息,对于网络基本信息基本描述。
查看网络套接字连接情况。
#-l只显示监听套接字;n表示显示数字地址和端口;p显示进程信息-t 表示只显示 TCP 套接字-u只显示udp
netstat -nlp
#查看协议栈信息
netstat -s
#检查进程开启的端口
netstat -nap | grep 进程号
#检查端口占用
netstat -nap | grep 端口号
连通性检查
检测网络中DNS服务器能否正确解析域名的工具命令
抓包利器
检查网络连通性,有时候为了检查端口是否被防火墙拦截,采用这种方式检查。
#客户机A,监听8888端口
nc -l 8888
#客户机B,连接端口8888
nc -vw 2 192.168.88.44 8888