Linux常用高效指令
找到文件并执行
find -name "LTE_EN.xml" -exec vi {} ;
xargs 结果作为输入,过滤并获取前10条
find -name *.xml | xargs stat | grep 16:20 | head -10
根据文件内容快速找文件
find ./ | xargs grep VpConfigUtil 2>/dev/nul
内存占用前3
ps -aux | sort -rnk4 | head -3
文件按列分隔显示第一列
awk '{print $0}' upgrade_column.log | uniq -c
监控查询某端口连接状态变化:
watch -n 1 -d 'netstat -an | grep 18543 | grep ESTABLISHED | wc -l'
切换用户执行
su - ossadm -c 'source';
CPU管理
top是查看系统整体cpu占用的好工具, %Cpu(s) 行的id+wa就是系统的空闲cpu占比。此处需要强调,wa也是idle,是有线程在等待io的idle。
top默认会按照cpu占用来对进程排序,一般情况下可以很快发现占用cpu多的进程。但top也有缺陷,只会显示进程本身的cpu,而不把其创建的子进程耗费的cpu算进去。
linux系统上进程退出(或者说死掉)时,会把其耗费的cpu累加到父进程上。所以对于一个进程而言,有自身耗费的cpu以及其所有退出子进程的cpu。
rtop工具会计算指定间隔内,进程耗费的所有cpu以及进程本身的cpu,并按照cpu占比从小到大排序。
ps aux的%CPU是指进程从创建至今的cpu平均值,并不是当前的cpu占用。
进程的cpu占用是相对于单个cpu的,对于多核的系统,一个进程占用几百的cpu也是很常见的。
内存管理
top
可使用top对进程的物理内存占用进行排序。top的界面按下大写F键,高亮选择RES行,按下小写的s键,此时右上方”sort field is RES”,按下q即可。
meminfo
查看详细的内存信息
cat /proc/meminfo
MemAvailable 是当前可用内存,物理内存的占用最优的公式是 (1 - MemAvailable/ MemTotal)*100% 。比较老的内核是没有这项的,可以采用同样的算法计算。
Active(anon) + Inactive(anon) 的总和如果占用了物理内存的绝大部分,说明是所有进程的内存占用耗费了系统的大部分内存。
Sunreclaim代表内核正在使用的内存,如果这个值有几个G,需要引起重视,可配合/proc/slabinfo去确认。
如果HugePages_Total有数值,需要确认是哪个应用使用的。尤其是HugePages_Free不为0时,这部分预留的大页内存就被浪费了。
SwapTotal - SwapFree的值较大时,说明系统内存曾经出现了不够,导致了进程的内存被换到了swap设备,这会对应用的性能有较大的影响。
可使用echo 3 > /proc/sys/vm/drop_caches回收文件缓存和未使用的slab。
free
free -h
vmstat
vmstat -s
IO管理
iostat -x 2 10
iostat 是非常实用的io监控工具,一般加上-x去使用,iostat -x 2 10,每隔两秒输出一次数据,共输出10次。输出的第一个数据是系统启动至今的平均值,没有参考意义,所以正常使用时,次数要大于一,且忽略第一次的数据。
%util为100%并不代表磁盘性能有问题,磁盘控制器一般都有并发处理能力,%util只是代表是否有io的时间占比。 w_await和r_await是读和写的平均处理时间,直接反映当前的磁盘io性能指标,单位是ms,如果比较大,比如超过100ms,说明磁盘io性能有问题。
aqu-sz 代表io请求队列里平均的请求个数,如果比较大,如大于100,说明io请求出现了严重的排队。
pidstat -d xx xx 用来查看进程的io读写,如pidstat -d 2 10。可通过这个命令去查看不同进程的io读写。
网络管理
ip查看
ifconfig -a
ip addr
端口查看
netstat -ano | grep 25913
lsof -i:25913
路由
arp arping
抓包
tcpdump
句柄
查看进程打开的句柄:lsof -p $pid
查看操作系统的句柄:lsof -K|awk '{print $1,$2}'|sort|uniq -c | sort -nr
Proc文件
Proc 是一个虚拟文件系统,在Linux 系统中它被挂载于/proc 目录之上。Proc 有多个功能 ,这其中包括用户可以通过它访问内核信息或用于排错,这其中一个非常有 用的功能,也是Linux 变得更加特别的功能就是以文本流的形式来访问进程信息。很Linux 命令( 比如 ps 、toPpstree 等) 都需要使用这个文件系统的信息。注意, 本文就是向用户介绍一些访问这些信息的方法
/proc/pid/下有进程的详细信息
在/proc文件系统中,每一个进程都有一个相应的文件 。下面是/proc目录下的一些重要文件 :
/proc/pid/cmdline 包含了用于开始进程的命令 ;
/proc/pid/cwd包含了当前进程工作目录的一个链接 ;
/proc/pid/environ 包含了可用进程环境变量的列表 ;
/proc/pid/exe 包含了正在进程中运行的程序链接;
/proc/pid/fd/ 这个目录包含了进程打开的每一个文件的链接;
/proc/pid/mem 包含了进程在内存中的内容;
/proc/pid/stat包含了进程的状态信息;
/proc/pid/statm 包含了进程的内存使用信息。
————————————————
版权声明:本文为CSDN博主「天府云创」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/enweitech/article/details/53391567
其他
dmesg -T查看内核缓冲区日志是否有异常,很多情况下里面会有很多有用信息。
uptime看下系统运行了多久也很有帮助,很多时候是系统重启了导致的问题
\