Linux开发常用命令

66 阅读4分钟

 

一、文件与目录操作

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    # 显示完整命令

进程信息查询

  1. 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_name

4.统计进程数:

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-QSend-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