Linux运维¶
- 分屏工具
tmux 左右分屏:ctrl+b+% 分屏切换:ctrl+向左/向右
- 监控工具
nmon
- 查看进程树
pstree
- 查看进程堆栈
1) gdb -p pid (gdb) detach (gdb) quit 2) pstack pid 3) strace -p pid 4) perf record -p pid -g perf report 5) cat /proc/pid/stack
- for
#!/bin/bash process_names=("test1" "test2") for name in "${process_names[@]}"; do nohup ./top.sh "$name" "top_${name}.log" &>/dev/null & nohup ./smem.sh "$name" "smem_${name}.log" &>/dev/null & nohup ./pmap.sh "$name" "pmap_${name}.log" &>/dev/null & nohup ./smaps.sh "$name" "pmap_${name}.log" &>/dev/null & done
- 查看内存使用情况 top
查看...VIRT: 虚拟内存使用量 RES: 常驻内存使用量(实际使用的物理内存) SHR: 共享内存使用量 %MEM: 使用的物理内存占总内存的百分比 VIRT (Virtual Memory) 定义: VIRT 表示进程使用的虚拟内存总量,包括所有分配的内存(无论是否在物理内存中),以及映射的文件和共享库。 包含内容: 进程的代码段和数据段。 共享库的内存。 进程使用的所有内存映射文件。 进程未使用的内存(例如,已分配但未使用的堆内存)。 注意: VIRT 的值可能会很大,因为它包括了所有分配的内存,而不仅仅是当前实际使用的物理内存。 RES (Resident Memory) 定义: RES 表示进程当前使用的常驻内存量,即实际在物理内存中占用的内存。 包含内容: 进程的实际数据和代码在物理内存中的部分。 不包括被换出到交换空间的内存。 不包括未使用的内存。 注意: RES 的值通常比 VIRT 小,因为它只反映了实际在物理内存中使用的部分。 top -n 1 top-->shift+m top -b -o %MEM -n 1 注意:top与nohup连用时记得加-b(批量模式)参数,不能会报错:top: failed tty get
- 查看内存使用情况 smem
查看...apt install smem smem -k -s uss -k参数用来显示内存单位 -s表示排序 uss表示对USS进行排序 USS(Unique Set Size):-->独占:进程独自占用的内存,它只计算了进程占用的内存大小,不包含任何共享部分。 PSS(Proportional Set Size):-->共享库均分:所有使用某共享库的程序均分该共享库占用的内存,显然所有进程的PSS之和就是系统的内存使用量。它会更准确一些,它将共享内存大小进行平均后,再分摊到各进程上去。 RSS(Resident Set Size):用top命令可用查询到,是最常用的内存指标,表示进程占用的物理内存大小。但将各个进程的RSS值相加,通常会超出整个系统的内存消耗,因为RSS中包含了各个进程间的共享内存。 smem -p -s uss(显示百分比) smem -k -P 进程名
- 查看内存使用情况 pmap
比top更准确查看VIRT/RES: watch -n 1 "pmap -x $(pgrep test) | grep total"
1)说明 查看...
2)示例 查看... - 查看内存使用情况 smaps
1)说明 查看...
2)示例 查看... - find
# 删除 /test/ 目录中所有在 "2023-10-20 10:00" 之前(包括该时间)修改的文件: find /test/ -type f ! -newermt "2023-10-20 10:00" -exec rm -f {} + # -type f: 只查找文件(不包括目录) # ! -newermt "2023-10-20 10:00": 这部分指定了一个条件,用于查找不晚于指定日期和时间 "2023-10-20 10:00" 修改的文件。! 是一个否定操作符,-newermt 用于比较文件的修改时间。 # -exec rm -f {} +: 对每个符合条件的文件执行 rm -f 命令。{} 是当前找到的文件的占位符,+ 允许 find 将多个文件一次性传递给 rm,这比对每个文件单独执行 rm 更高效。 :<<COMMENT rm -f {} +: 这种方式使用 + 作为结尾,意味着 find 会尽可能多地将匹配的文件传递给 rm 命令一次性执行。这种方式更高效,因为它减少了 rm 命令的调用次数。 rm -f {} \;: 这种方式使用 \; 作为结尾,意味着 find 对每个匹配的文件单独调用一次 rm 命令。这可能会导致更多的 rm 调用,尤其是在匹配文件很多的情况下。 COMMENT
- 其它
1. CPU性能调优工具 vmstat uptime mpstat 2. 内存性能调优工具 free smem 3. 磁盘性能调优工具 iotop iostat 4. 网络性能调优工具 pint mtr IP 5. 综合性能分析工具 htop 6. 参考 https://blog.csdn.net/edward_zcl/article/details/123851460