一、文件与目录操作
1. 基础文件操作
ls -a # 显示隐藏文件
ls -lt # 按时间排序
2. 文件查看与处理
# 查看文件内容
cat file.txt
nl -b a filename
more filename
# 查看头部/尾部
head -n 10 file.txt # 前10行
tail -n 20 file.txt # 后20行
tail -f logfile.log # 实时追踪日志
# 查找文件内容
grep "keyword" *.txt -n # -n显示行号
grep -r "pattern" /path # 递归搜索
# 文件差异比较
diff file1.txt file2.txt
組合
cat file.txt |grep "keyword1" |grep -v "keyword2"
二、文本处理三剑客
1. grep (文本搜索)
# 基本搜索
grep "error" log.txt
# 正则表达式搜索
grep -E "[0-9]{3}-[0-9]{4}" file.txt
# 排除匹配
grep -v "debug" log.txt
# 统计匹配行数
grep -c "warning" *.log
2. sed (流编辑器)
# 替换文本
sed 's/old/new/g' file.txt
# 原地修改文件
sed -i 's/foo/bar/g' file.txt
3. awk (文本处理语言)
# 打印特定列
awk '{print $1,$3}' data.txt
# 条件过滤
awk '$3 > 100 {print $0}' data.txt
# 统计计算
awk '{sum+=$1} END {print sum}' numbers.txt
三、系统监控与性能
1. 进程管理
# 查看进程
ps aux | grep zkos
ps -ef |grep zkos
ps -eLf # 查看进程及线程
ps -p PID -o pid,ppid,cmd,%mem,%cpu # 查看指定进程详细信息
ps aux | grep 'zkos' | awk '{print $2}' | xargs kill -9 # 查找并杀死进程
pstree - 进程树
pstree # 以树状显示进程关系
pstree -p # 显示PID
pstree -a # 显示完整命令
进程信息查询
- lsof - 打开文件列表
lsof -p PID # 查看进程打开的文件 lsof -i :80 # 查看80端口进程 lsof -u username # 查看用户打开的文件2. pidof - 查找PID
pidof nginx # 查找nginx进程PID 3.查看进程启动时间 ps -eo pid,lstart,cmd | grep process_name4.统计进程数:
ps -ef |wc -l
**/proc文件系统
cat /proc/PID/status # 查看进程状态
ls -l /proc/PID/exe # 查看进程执行文件
cat /proc/PID/environ # 查看进程环境变量
**进程级别监控
pidstat -p pid 1 10 #cpu
pidstat -r -p pid 1 10 # mem
2. 系统监控
内存
free -h
cat /proc/meminfo # 详细内存信息缓存/缓冲管理
sync; echo 1 > /proc/sys/vm/drop_caches # 清除页面缓存 echo 2 > /proc/sys/vm/drop_caches # 清除目录项和inode echo 3 > /proc/sys/vm/drop_caches # 清除所有缓存
CPU
mpstat -P ALL 1 ,cpu所有核使用统计
磁盘
# 磁盘空间监控 df -h # 人类可读格式 ,disk free du -sh * # 查看目录大小 du -h#磁盘I/O监控
iostat -x 1 # 详细磁盘I/O统计(每秒刷新) iostat -x -y -d 1 1 iotop -o # 动态显示I/O使用进程 sar -d 1 # 历史磁盘活动统计 fio 高级进阶 Linux磁盘I/O性能优化工具-CSDN博客
网络
sar -n DEV 1 2 # 历史网络接口统计
netstat -tulnp # 查看监听端口和连接
tcpdump -i eth0 -w capture.pcap # 抓包分析
tshark -i eth0 -f "tcp port 80" # Wireshark命令行版
命令解释
netstat: 这是一个用于显示网络连接、路由表、接口统计信息等的命令。-t: 显示 TCP 协议的连接。-u: 显示 UDP 协议的连接。-l: 只显示监听中的端口(即当前服务器正在等待的连接)。-n: 以数字形式显示地址和端口号,而不是尝试解析成主机名和服务名。-p: 显示与每个连接相关联的进程 ID 和进程名称。例子与输出解释:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 10.204.0.1:52001 0.0.0.0:* LISTEN 841/zkos_someip_rou
Recv-Q和Send-Q: 分别表示接收队列和发送队列的长度。0表示当前没有数据等待接收或发送。Local Address: 本地地址和端口,10.204.0.1:52001表示本机 IP 地址为10.204.0.1,端口为52001。Foreign Address: 远程地址和端口。0.0.0.0:*表示任何远程 IP 地址和端口都可以连接到本机的该端口。- 这条命令输出显示了一个监听状态的 TCP 连接,本地地址
10.204.0.1:52001正在等待来自任何远程地址的连接,程序zkos_someip_rou(进程 ID 为 841)在处理此连接。
四、进阶工具
1. 性能分析
# CPU分析
sudo perf record -g -p pid => /tmp/perf.data
sudo perf report -n --stdio
# 内存分析
valgrind --tool=helgrind ./bin/TestASWC_CSCBCACore
valgrind --tool=cachegrind ./bin/TestASWC_CSCBCACore
valgrind --tool=massif ./bin/TestASWC_CSCBCACore
valgrind --tool=callgrind ./bin/TestASWC_CSCBCACore
# I/O分析
sar -n Dev 1 3,网络接口统计:接收发送每秒字节数
iostat -d 统计每个磁盘的IO
iostat -x -y -d 1 1 统计每个磁盘的IO
2. 系统调试
# 内核日志
dmesg | tail
# 系统调用跟踪
strace -f command