Linux 常见问题
bash mount -o remount,rw /sysroot # rd.break 方式 chroot /sysroot # 进入系统环境
或直接:
```bash
mount -o remount,rw /
- 使用
passwd命令重置 root 密码:passwd root - 创建
/.autorelabel文件(仅 SELinux 开启时需要):touch /.autorelabel - 输入
exit,系统会继续启动或自动重启。
普通用户无法使用 sudo 提权
现象:执行 sudo 时提示 “user is not in the sudoers file”。
解决方法:
- 切换到 root 用户。
- 使用
visudo安全编辑 sudoers 文件。 - 添加用户权限,例如:
或加入username ALL=(ALL:ALL) ALLwheel组(CentOS)或sudo组(Ubuntu):usermod -aG wheel username # CentOS usermod -aG sudo username # Ubuntu - 保存退出后,用户需重新登录使组权限生效。
文件权限错误导致无法访问
常见错误:Permission denied。
检查与修复:
- 查看当前权限:
ls -l 文件名 stat 文件名 - 修改所有者和组:
chown 用户名:组名 文件 - 修改读写执行权限:
chmod 755 文件 # 目录通常用 755,文件用 644 - 需要递归修改目录时加
-R,谨慎操作。
磁盘与文件系统问题
磁盘空间不足(No space left on device)
原因:数据量大、日志膨胀、inode 耗尽等。
排查步骤:
- 查看分区使用情况:
df -h - 若空间未满但报错,检查 inode:
df -i - 查找大文件或大目录:
du -ah / | sort -rh | head -20 # 或在特定目录下 du -sh /* - 清理日志、临时文件、旧内核:
journalctl --vacuum-size=200M # 清理 systemd 日志 apt autoremove --purge # Debian/Ubuntu 清理旧内核 yum autoremove # CentOS 8+/Fedora - 若 inode 耗尽,查找大量小文件并删除。
分区无法挂载或文件系统损坏
现象:mount 报错,如 “wrong fs type, bad option”。
解决方法:
- 确认文件系统类型:
lsblk -f blkid 设备名 - 尝试修复文件系统(分区必须未挂载):
fsck -y /dev/sda1 # ext4 示例 xfs_repair /dev/sda1 # xfs 示例 - 若为 Windows 分区(ntfs),安装
ntfs-3g后挂载:mount -t ntfs-3g /dev/sda1 /mnt - 检查
/etc/fstab配置是否正确,避免开机挂载失败。
逻辑卷(LVM)扩容后文件系统未扩大
现象:df -h 显示容量未改变。
解决:
- 扩容逻辑卷后,需扩展文件系统:
- ext4:
resize2fs /dev/vg_name/lv_name - xfs:
xfs_growfs /挂载点
- ext4:
- 若为根分区,可能需要进入救援模式操作。
网络配置与排错
无法上网或网络中断
基本检查流程:
- 查看网卡是否启动:
ip link show - 检查 IP 地址获取:
ip addr show - 若为静态 IP,确认配置无误:
/etc/network/interfaces(Debian)或/etc/sysconfig/network-scripts/ifcfg-eth0(RHEL)。 - 测试网关连通性:
ping 网关IP - 测试 DNS 解析:
nslookup baidu.com或dig baidu.com - 重启网络服务:
systemctl restart networking # Debian systemctl restart NetworkManager # 部分发行版 - 检查路由表:
ip route,添加默认路由:ip route add default via 192.168.1.1
SSH 连接被拒绝
常见原因及解决:
- 服务未启动:
systemctl status sshd,启动systemctl start sshd - 端口被防火墙阻挡:
firewall-cmd --add-service=ssh --permanent && firewall-cmd --reload # firewalld ufw allow 22/tcp # ufw - 配置文件禁用密码登录或禁止 root 登录:编辑
/etc/ssh/sshd_config,检查PasswordAuthentication yes和PermitRootLogin yes,重启 sshd。 - IP 被
/etc/hosts.deny误拦:检查并清除。
DNS 解析缓慢或失败
诊断:
- 测试 DNS 服务器响应:
dig @8.8.8.8 baidu.com - 检查
/etc/resolv.conf是否被正确写入。 - 若使用
systemd-resolved,查看状态:systemd-resolve --status
临时修复:手动添加公共 DNS 到 /etc/resolv.conf:
nameserver 8.8.8.8
nameserver 114.114.114.114
永久修改需编辑网络配置文件或 /etc/systemd/resolved.conf。
软件包管理
包依赖损坏或安装失败
现象:dpkg 或 rpm 报依赖错误,无法安装/卸载。
Debian/Ubuntu 系:
sudo apt --fix-broken install
sudo dpkg --configure -a
RHEL/CentOS/Fedora 系:
sudo yum-complete-transaction # 完成未完成的事务
sudo package-cleanup --cleandupes # 清理重复包(需 yum-utils)
sudo rpm --rebuilddb
如果特定包损坏,强制移除:
sudo rpm -e --nodeps 包名 # 谨慎使用
sudo dpkg --remove --force-remove-reinstreq 包名
存储库密钥过期或缺失
错误信息:NO_PUBKEY 或 The following signatures couldn't be verified。
解决:
- 更新密钥:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 缺失的KeyID # Debian sudo rpm --import https://example.com/RPM-GPG-KEY # RHEL - 对于新系统,检查是否完全安装了发行版的密钥包(如
debian-archive-keyring)。
安装的软件包版本过旧
原因:默认源版本滞后。
升级策略:
- 添加官方第三方 PPA(Ubuntu):
sudo add-apt-repository ppa:example/ppa sudo apt update - 使用通用二进制包(
.AppImage、.tar.gz、Flatpak/Snap)。 - 从源码编译安装。
系统启动与引导
系统卡在引导界面无法进入桌面
可能原因:显卡驱动失败、显示管理器崩溃。
应急方案:
- 在 GRUB 界面编辑内核参数,在
linux行添加nomodeset或single。 - 进入命令行后,重新安装显卡驱动或禁用显示管理器:
sudo systemctl disable gdm # 或 lightdm、sddm sudo systemctl stop gdm - 检查 Xorg 日志:
/var/log/Xorg.0.log。
GRUB 引导丢失(双系统安装后)
现象:直接启动到 Windows,无法选择 Linux。
修复方法:
- 使用 Ubuntu 等发行版的 Live USB 启动。
- 挂载系统分区,chroot 进入系统:
sudo mount /dev/sda2 /mnt # 根分区 sudo mount /dev/sda1 /mnt/boot # 若有单独 boot 分区 for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done sudo chroot /mnt - 重新安装 GRUB 到磁盘主引导记录:
grub-install /dev/sda update-grub - 退出 chroot,重启。
启动报错 “A start job is running for...”
原因:某个服务或挂载点在超时等待。
临时跳过:通常会有倒计时,可等待结束或按相应键跳过。
永久修复:
- 检查并禁用无法启动的服务:
systemctl list-units --state=failed systemctl disable 服务名 - 检查
/etc/fstab中不存在的挂载项,添加nofail选项或删除。
进程与性能
系统负载高、响应卡顿
分析工具:
top或htop查看 CPU/内存使用。iostat -x 1查看磁盘 I/O 等待。sar -u 1 3综合性能数据。 常见元凶及处理:
- 僵尸进程:
ps aux | grep 'Z',若大量存在可尝试重启父进程。 - 内存不足导致 Swap 频繁:增加物理内存或调整 swappiness 值:
sysctl vm.swappiness=10 - 单个进程占用过高 CPU:使用
kill -STOP PID暂停,或renice调整优先级。
进程无法杀死(kill -9 无效)
现象:D 状态(不可中断睡眠),通常与 I/O 阻塞有关。
方法:
- 该进程不能直接杀死,需解决底层 I/O 问题(如 NFS 超时、磁盘故障)。
- 若为 NFS 导致的挂起,尝试强制卸载 NFS 挂载点:
umount -f -l /mnt/nfs - 重启系统是最后手段。
端口被占用
查找占用进程:
sudo lsof -i :端口号
sudo netstat -tulpn | grep 端口号
ss -tulpn | grep 端口号
释放端口:杀死进程或停止对应服务。
安全与防火墙
防火墙规则错误导致服务不可用
快速排查:
- 查看当前防火墙状态及规则:
sudo ufw status numbered # ufw sudo firewall-cmd --list-all # firewalld sudo iptables -L -n -v # iptables - 临时禁用防火墙测试连通性(仅限排查):
sudo systemctl stop firewalld sudo ufw disable - 永久添加允许规则:
sudo firewall-cmd --add-port=80/tcp --permanent && sudo firewall-cmd --reload sudo ufw allow 80/tcp
SELinux 导致服务异常
现象:权限拒绝,日志 /var/log/audit/audit.log 中有 AVC 拒绝记录。
临时诊断:将 SELinux 设置为宽容模式验证:
sudo setenforce 0
若问题消失,则调整策略而不是直接关闭。
修复:
- 使用
audit2why分析日志,获取建议。 - 调整布尔值或上下文:
sudo semanage fcontext -a -t httpd_sys_content_t "/web(/.*)?" sudo restorecon -Rv /web - 避免永久禁用 SELinux,安全风险高。
其它常见问题
时间不同步
问题:时区错误或时间漂移。
解决:
- 设置时区:
sudo timedatectl set-timezone Asia/Shanghai - 启用 NTP 同步:
若使用 chrony:sudo timedatectl set-ntp truesudo systemctl enable --now chronyd
字符集或语言乱码
原因:locale 未正确配置。
检查和设置:
locale # 查看当前设置
locale -a # 查看可用 locale
sudo localectl set-locale LANG=en_US.UTF-8
生成缺失的 locale(Debian):
sudo dpkg-reconfigure locales