linux调试命令速查
linux调试命令速查
命令速查-块引用
网络配置
查看与连接,假设 PC A 连接 linux B
# linux B 查看所有连接
netstat -an
# PC A SSH 登录, 替换 <占位符>
ssh -o IdentitiesOnly=yes -i ~/.ssh/id_rsa -p <端口号> root@<B_IP>
IP 与路由
# linux B 查看 IPv4 地址
ip -4 addr
# linux B 查看路由表
ip route show
# linux B 配置路由规则
# 假设linux机器位于网段 20.11.75.0/24,该网段网关ip为 20.11.75.1;
# 并且添加脚本配置,需要将20.0.0.0/8来源的流量都发送到网关
if ping -c 1 -W 3 20.11.75.1 >/dev/null 2>&1; then
ip route del 20.0.0.0/8 2>/dev/null || true
ip route add 20.0.0.0/8 via 20.11.75.1
ip route show | grep -q "20.0.0.0/8" && echo "✓ 路由添加成功" || echo "✗ 失败"
else
echo "⚠ 网关不可达"
fi
# linux B 验证
ip route get 20.11.75.10
默认路由配置
# linux B 添加策略表,
ip rule add from 192.168.0.1/32 table mgmt
# linux B 配置专用路由(二选一)
ip route add default via <网关> dev <调试口> table mgmt # 有网关
ip route add default dev <调试口> table mgmt # 无网关/点对点
ip route add 20.0.0.0/8 via <网关> # 配置网段路由
# linux B 替换默认路由(绑定源地址)
ip route replace default via 20.11.75.1 dev <网口名> src 20.11.75.21 metric 10
# linux B 验证
ip route show default
ip route get 1.1.1.1
网卡控制
sudo ifconfig eth0 down # linux B 关闭
sudo ifconfig eth0 up # 启用
tcpdump 抓包
# linux B 监听指定网卡的 ICMP 和 TCP 8000 端口
sudo tcpdump -i eth0 -nn "icmp or tcp dst port 8000"
# 监听所有网卡
sudo tcpdump -i any -nn "icmp or tcp dst port 8000"
PC A 测试连接 linux B (192.168.0.1)
ping <B_IP>
# 指定端口
ssh -p 2222 root@192.168.0.1
# 快速测试(不真正登录,仅验证端口)
ssh -o ConnectTimeout=5 -o BatchMode=yes root@192.168.0.1 exit 2>&1
# 返回 "Permission denied" = 端口开放但密钥/密码错误
# 返回 "Connection refused" = 端口未开放
# 返回 "Connection timed out" = 防火墙屏蔽或主机不可达
# 测试 SSH 端口
telnet 192.168.0.1 22
# 测试 HTTP 端口
telnet 192.168.0.1 8000
# 测试 HTTP 服务(带超时)
curl -v --connect-timeout 5 http://192.168.0.1:8000
# 仅测试 TCP 连接(不发送 HTTP 请求)
curl -v telnet://192.168.0.1:22 --connect-timeout 5
# 测试单个端口
nc -zv 192.168.0.1 22
# -z: 扫描模式(不发送数据)
# -v: 详细输出
# 测试多个端口
nc -zv 192.168.0.1 22 80 8000
# 扫描端口范围
nc -zv 192.168.0.1 20-25
# 设置超时(3 秒)
nc -zv -w 3 192.168.0.1 8000
在 Linux B 上验证端口监听
# 查看所有监听端口(推荐)
netstat -tuln
# 查看特定端口是否监听
netstat -tuln | grep :8000
netstat -tuln | grep :22
# 查看所有连接(包括 ESTABLISHED)
netstat -tun
# 查看所有连接 + 进程名(需 root)
sudo netstat -tulnp
# 查看特定端口的连接 + 进程
sudo netstat -tulnp | grep :8000
iptables 防火墙
基本操作
# 恢复防火墙规则
iptables-restore < /etc/firewall-file
# 查看当前规则(详细+数字格式)
iptables -L -v -n
端口管理
# 开放端口
iptables -A INPUT -i eth0 -p tcp --dport 8000 -j ACCEPT
# 删除规则
iptables -D INPUT -i eth0 -p tcp -m tcp --dport 8000 -j ACCEPT
日志记录(插入优先规则)
# 基础日志
iptables -I INPUT -i eth0 -p tcp --dport 8000 -j LOG --log-prefix "WebServer-Access: "
# 限流日志(推荐:防日志风暴,无需 socket 监听)
iptables -I INPUT -i eth0 -p tcp --dport 8000 \
-m state --state NEW \
-m limit --limit 10/min --limit-burst 20 \
-j LOG --log-prefix "WebServer-Access: " --log-level notice
参数说明:
-
-I INPUT:插入到链首(优先匹配) -
-m state --state NEW:仅记录新连接(SYN 包) -
-m limit:令牌桶限速(突发 20 条,后续 10/分钟) -
-j LOG:记录日志但不改变包去向
检查 iptables 服务
# 检查服务状态(静默)
systemctl is-active --quiet iptables 2>/dev/null
# 查找服务文件
find /etc/systemd /usr/lib/systemd /lib/systemd -name "*iptables*" 2>/dev/null
# 显示服务路径
systemctl show iptables.service -p FragmentPath 2>/dev/null
# 列出相关单元
systemctl list-unit-files | grep iptables
停止服务
systemctl stop iptables
systemctl disable iptables
SCP/SSH 文件传输
| 场景 | 命令 |
|---|---|
| 登录 | ssh -i ~/.ssh/id_rsa -p 2222 root@host |
| 上传文件 | scp -i key -P 2222 file.txt root@host:/path/ |
| 下载文件 | scp -i key -P 2222 root@host:/path/file.txt ./ |
| 上传目录 | scp -i key -P 2222 -r dir/ root@host:/path/ |
| 下载目录 | scp -i key -P 2222 -r root@host:/dir ./local/ |
注意: ssh 用 -p,scp 用 -P(大写)
systemd 服务管理
服务控制
# 停止并禁用
systemctl stop iptables
systemctl disable iptables
# 查询状态
systemctl is-active --quiet iptables 2>/dev/null
# 查看服务文件路径
systemctl show -p FragmentPath esp_plat.service
服务文件路径
/lib/systemd/system/ # 系统服务(包管理器)
/usr/lib/systemd/system/ # 备用路径
进程线程查看
# 查看进程及其线程
ps -eLf | grep webserver
# 仅显示线程数
ps -o nlwp,pid,cmd -p $(pgrep webserver)
# nlwp = Number of LightWeight Processes (线程数)
# 详细线程信息
ps -T -p $(pgrep webserver)
# 查询名为 webserver 进程的详情
ps -aux | grep <webserver>
# 查询 pid 进程运行详情
top -p <pid>
# 查询 pid 进程的线程详情
top -H -p <pid>
top 基础使用
# 启动 top
top
# 常用交互按键
q # 退出
h 或 ? # 帮助
k # 杀死进程(输入 PID)
M # 按内存使用排序
P # 按 CPU 使用排序(默认)
1 # 显示每个 CPU 核心的使用率
c # 显示完整命令路径
o 或 O # 进入过滤模式
# 输入:COMMAND=webserver
L # 定位(locate)模式
# 输入:webserver
浙公网安备 33010602011771号