Debian 故障排查手册:常见问题、实用命令与脚本源码整理
Debian 常见问题汇总|附源码
Debian 是一个以稳定、安全、自由著称的 Linux 发行版,广泛应用于服务器、开发环境、桌面系统、容器镜像以及嵌入式设备中。相比一些滚动更新发行版,Debian 更强调软件包的可靠性和长期维护,因此非常适合生产环境。
不过,很多用户在安装、配置、升级、部署服务时,仍然会遇到各种常见问题,例如:软件源不可用、网络无法连接、权限不足、系统时间错误、SSH 登录失败、防火墙配置异常、中文乱码、磁盘空间不足、服务无法启动等。
本文将系统整理 Debian 使用过程中常见的问题,并提供对应的排查思路和可直接使用的命令或脚本源码,方便新手和运维人员快速定位问题。
一、Debian 软件源配置问题
1.1 常见现象
在 Debian 中执行以下命令时:
sudo apt update
可能出现类似错误:
Temporary failure resolving 'deb.debian.org'
404 Not Found
The repository does not have a Release file
Hash Sum mismatch
这些问题通常与软件源地址、网络 DNS、Debian 版本代号不匹配有关。
1.2 查看 Debian 版本
首先确认当前系统版本:
cat /etc/debian_version
或者:
lsb_release -a
如果没有 lsb_release 命令,可以安装:
sudo apt install lsb-release -y
也可以直接查看系统信息:
cat /etc/os-release
示例输出:
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
VERSION_CODENAME=bookworm
其中 bookworm 就是 Debian 12 的版本代号。
1.3 Debian 12 常用软件源示例
编辑软件源文件:
sudo nano /etc/apt/sources.list
Debian 12 Bookworm 可使用以下配置:
deb http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware
deb http://deb.debian.org/debian bookworm-updates main contrib non-free non-free-firmware
deb http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware
保存后执行:
sudo apt update
如果在国内网络环境下访问较慢,可以使用国内镜像源,例如清华源:
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware
deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free non-free-firmware
二、apt 安装软件失败
2.1 dpkg 被中断
有时安装软件时出现:
dpkg was interrupted, you must manually run 'sudo dpkg --configure -a'
解决方法:
sudo dpkg --configure -a
sudo apt install -f
sudo apt update
2.2 软件包依赖损坏
如果出现依赖错误:
Unmet dependencies
可以尝试:
sudo apt --fix-broken install
或者:
sudo apt install -f
之后重新安装目标软件。
2.3 apt 锁被占用
常见错误:
Could not get lock /var/lib/dpkg/lock-frontend
说明当前可能有其他 apt 或 dpkg 进程正在运行。
查看进程:
ps aux | grep -E 'apt|dpkg'
如果确认没有正常运行的安装任务,可以删除锁文件:
sudo rm -f /var/lib/dpkg/lock-frontend
sudo rm -f /var/lib/dpkg/lock
sudo rm -f /var/cache/apt/archives/lock
sudo dpkg --configure -a
注意:不要在系统正在安装软件时强行删除锁文件,否则可能导致软件包数据库损坏。
三、网络无法连接问题
3.1 查看网卡状态
使用以下命令查看网络接口:
ip addr
或者:
ip a
查看路由:
ip route
如果没有默认路由,可能无法访问外网。
3.2 测试网络连通性
测试 IP 是否可达:
ping -c 4 8.8.8.8
测试域名解析:
ping -c 4 debian.org
如果 IP 可以 ping 通,但域名无法解析,通常是 DNS 配置问题。
3.3 临时配置 DNS
编辑 /etc/resolv.conf:
sudo nano /etc/resolv.conf
写入:
nameserver 223.5.5.5
nameserver 8.8.8.8
然后测试:
ping -c 4 debian.org
如果系统使用 NetworkManager 或 systemd-resolved,/etc/resolv.conf 可能会被自动覆盖,需要通过对应工具进行永久配置。
3.4 使用 systemd-networkd 配置静态 IP
假设网卡名称为 ens33,创建配置文件:
sudo nano /etc/systemd/network/10-ens33.network
写入:
[Match]
Name=ens33
[Network]
Address=192.168.1.100/24
Gateway=192.168.1.1
DNS=223.5.5.5
DNS=8.8.8.8
启用服务:
sudo systemctl enable systemd-networkd
sudo systemctl restart systemd-networkd
查看状态:
systemctl status systemd-networkd
四、SSH 无法登录
4.1 安装 SSH 服务
Debian 默认不一定安装 OpenSSH Server。
安装命令:
sudo apt update
sudo apt install openssh-server -y
启动并设置开机自启:
sudo systemctl enable ssh
sudo systemctl start ssh
查看状态:
sudo systemctl status ssh
4.2 检查 SSH 端口
默认 SSH 端口是 22。
查看监听端口:
sudo ss -tlnp | grep ssh
如果输出中没有 :22,说明服务可能未启动或配置异常。
4.3 修改 SSH 配置
编辑配置文件:
sudo nano /etc/ssh/sshd_config
常见配置如下:
Port 22
PermitRootLogin no
PasswordAuthentication yes
PubkeyAuthentication yes
修改后重启服务:
sudo systemctl restart ssh
如果要允许 root 登录,不建议直接开放密码登录。更安全的方式是使用普通用户登录后再 sudo。
4.4 SSH 登录失败排查
查看日志:
sudo journalctl -u ssh
或者:
sudo tail -n 100 /var/log/auth.log
常见原因包括:
- 用户名或密码错误;
- SSH 服务没有启动;
- 防火墙阻止端口;
- 云服务器安全组未开放端口;
sshd_config配置错误;- 用户没有 shell 登录权限。
五、sudo 命令不可用
5.1 问题现象
普通用户执行:
sudo apt update
出现:
sudo: command not found
说明系统未安装 sudo。
5.2 安装 sudo
切换到 root:
su -
安装 sudo:
apt update
apt install sudo -y
5.3 将用户加入 sudo 组
假设用户名为 debian:
usermod -aG sudo debian
然后重新登录用户,使组权限生效。
检查用户组:
groups debian
六、防火墙配置问题
Debian 常见防火墙工具包括 iptables、nftables 和 ufw。
6.1 使用 ufw 管理防火墙
安装 ufw:
sudo apt install ufw -y
允许 SSH:
sudo ufw allow 22/tcp
允许 HTTP 和 HTTPS:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
启用防火墙:
sudo ufw enable
查看状态:
sudo ufw status verbose
6.2 防止误封 SSH
如果是远程服务器,启用防火墙之前一定要先放行 SSH 端口。例如 SSH 使用 2222 端口:
sudo ufw allow 2222/tcp
sudo ufw enable
否则可能导致自己无法远程登录服务器。
七、系统时间不正确
7.1 查看时间
date
timedatectl
如果时间不正确,可能导致 HTTPS 证书验证失败、日志时间混乱、定时任务异常等问题。
7.2 设置时区为上海
sudo timedatectl set-timezone Asia/Shanghai
启用 NTP 时间同步:
sudo timedatectl set-ntp true
查看状态:
timedatectl
八、中文乱码与中文环境配置
8.1 安装中文语言包
sudo apt install locales -y
重新配置语言环境:
sudo dpkg-reconfigure locales
选择:
zh_CN.UTF-8 UTF-8
设置默认语言:
sudo update-locale LANG=zh_CN.UTF-8
重新登录后生效。
8.2 查看当前语言环境
locale
如果看到:
LANG=zh_CN.UTF-8
说明中文环境基本配置成功。
九、磁盘空间不足
9.1 查看磁盘使用情况
df -h
查看目录占用:
du -sh /*
查看当前目录下各文件夹大小:
du -h --max-depth=1
9.2 清理 apt 缓存
sudo apt clean
sudo apt autoclean
sudo apt autoremove -y
9.3 查找大文件
sudo find / -type f -size +500M 2>/dev/null
也可以按大小排序:
sudo du -ah /var 2>/dev/null | sort -rh | head -n 20
9.4 清理日志
查看 journal 日志占用:
journalctl --disk-usage
清理 7 天前日志:
sudo journalctl --vacuum-time=7d
限制日志最大占用 500MB:
sudo journalctl --vacuum-size=500M
十、服务无法启动
10.1 查看服务状态
以 nginx 为例:
sudo systemctl status nginx
如果服务失败,可以查看详细日志:
sudo journalctl -u nginx
查看最近日志:
sudo journalctl -u nginx -n 50
10.2 检查端口占用
如果服务启动失败,可能是端口被占用。
查看 80 端口:
sudo ss -tlnp | grep ':80'
或者:
sudo lsof -i:80
如果没有 lsof:
sudo apt install lsof -y
10.3 重载 systemd 配置
如果修改了 service 文件,需要执行:
sudo systemctl daemon-reload
然后重启服务:
sudo systemctl restart 服务名
十一、Debian 常用初始化脚本源码
下面提供一个适用于 Debian 11/12 的基础初始化脚本,可用于新服务器快速配置常用环境。
使用前请根据实际情况修改用户名、SSH 端口、时区和软件源。
#!/bin/bash
set -e
echo "========== Debian 初始化脚本开始 =========="
if [ "$(id -u)" -ne 0 ]; then
echo "请使用 root 用户执行该脚本"
exit 1
fi
echo "1. 更新软件包索引"
apt update
echo "2. 安装常用工具"
apt install -y \
sudo \
vim \
curl \
wget \
git \
net-tools \
htop \
unzip \
zip \
ca-certificates \
gnupg \
lsb-release \
ufw \
openssh-server
echo "3. 设置时区"
timedatectl set-timezone Asia/Shanghai
timedatectl set-ntp true
echo "4. 启用 SSH 服务"
systemctl enable ssh
systemctl restart ssh
echo "5. 配置防火墙"
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw --force enable
echo "6. 清理无用软件包"
apt autoremove -y
apt clean
echo "========== Debian 初始化完成 =========="
保存为:
init-debian.sh
赋予执行权限:
chmod +x init-debian.sh
执行:
sudo ./init-debian.sh
十二、Debian 系统健康检查脚本源码
下面是一个简单的系统检查脚本,可以快速查看 CPU、内存、磁盘、网络、系统时间和关键服务状态。
#!/bin/bash
echo "========== Debian 系统健康检查 =========="
echo
echo "【系统信息】"
cat /etc/os-release | grep -E "PRETTY_NAME|VERSION_CODENAME"
echo
echo "【内核版本】"
uname -r
echo
echo "【运行时间】"
uptime
echo
echo "【CPU 信息】"
lscpu | grep -E "Model name|CPU\(s\)"
echo
echo "【内存使用】"
free -h
echo
echo "【磁盘使用】"
df -h
echo
echo "【网络地址】"
ip addr | grep -E "^[0-9]+:|inet "
echo
echo "【默认路由】"
ip route | grep default || echo "未发现默认路由"
echo
echo "【DNS 配置】"
cat /etc/resolv.conf
echo
echo "【时间同步状态】"
timedatectl | grep -E "Time zone|System clock synchronized|NTP service"
echo
echo "【SSH 服务状态】"
systemctl is-active ssh
echo
echo "【防火墙状态】"
if command -v ufw >/dev/null 2>&1; then
ufw status
else
echo "ufw 未安装"
fi
echo
echo "========== 检查完成 =========="
保存为:
check-debian.sh
执行:
chmod +x check-debian.sh
sudo ./check-debian.sh
十三、Debian 升级注意事项
13.1 升级前备份
升级系统前,建议备份以下内容:
/etc
/home
/var/www
数据库文件
重要业务配置
可以使用 tar 打包:
sudo tar -czvf etc-backup.tar.gz /etc
13.2 常规更新命令
sudo apt update
sudo apt upgrade -y
sudo apt full-upgrade -y
sudo apt autoremove -y
其中:
apt upgrade:升级软件包,但不会主动删除旧包;apt full-upgrade:可能会安装新依赖或删除冲突包;apt autoremove:删除不再需要的软件包。
13.3 不建议盲目跨版本升级
例如从 Debian 11 升级到 Debian 12,需要修改软件源代号,并仔细阅读官方 Release Notes。生产环境中,建议先在测试环境验证,确认业务兼容后再升级。
十四、常见命令速查表
| 功能 | 命令 |
|---|---|
| 查看系统版本 | cat /etc/os-release |
| 更新软件源 | sudo apt update |
| 升级软件包 | sudo apt upgrade -y |
| 修复依赖 | sudo apt --fix-broken install |
| 查看磁盘 | df -h |
| 查看内存 | free -h |
| 查看进程 | ps aux |
| 查看端口 | sudo ss -tlnp |
| 查看服务状态 | systemctl status 服务名 |
| 查看日志 | journalctl -u 服务名 |
| 设置时区 | sudo timedatectl set-timezone Asia/Shanghai |
| 重启系统 | sudo reboot |
十五、总结
Debian 的优势在于稳定、安全和生态成熟,但在实际使用过程中,仍然需要掌握一定的基础排障能力。对于大多数常见问题,可以按照以下思路处理:
- 先确认系统版本和环境,避免软件源或命令不匹配;
- 再检查网络、DNS、时间和权限,这些是很多问题的根源;
- 使用 systemctl 和 journalctl 查看服务状态与日志;
- 遇到 apt 问题时优先修复 dpkg 和依赖关系;
- 远程服务器配置防火墙前,务必先放行 SSH 端口;
- 重要操作前做好备份,尤其是系统升级和磁盘清理。
只要熟悉这些基本命令和排查流程,Debian 的日常维护并不复杂。本文附带的初始化脚本和健康检查脚本可以作为基础模板,根据实际生产环境进一步扩展,例如加入 Docker 安装、自动安全更新、日志监控、失败告警等功能。