适用:所有 Linux 耗时:约 30 分钟 前置:D6(会用命令行)
最后一天不讲新东西,讲出事时怎么办。这一篇最重要——因为你迟早会用上,而且用上的时候通常很慌。
一、先记住这条铁律
不要瞎试。先看现象,再找日志,最后才动手。
新手出问题的标准流程是:百度一个命令 → 敲 → 报新错 → 再百度 → 再敲 → 系统彻底坏。
正确流程:
- 现象是什么(截图/记下来)
- 日志说什么(99% 的答案在这)
- 只改一处
- 验证
- 不行就改回来,再试下一个
二、日志在哪:三个地方就够
1. journalctl —— 系统总日志(现代系统都用这个)
# 最近 100 条
journalctl -n 100
# 只看错误级别以上的
journalctl -p err -n 50
# 看某个服务的日志(最常用)
journalctl -u cups -n 50 # 打印服务
journalctl -u NetworkManager -n 50 # 网络服务
# 实时跟踪(像 tail -f,Ctrl+C 退出)
journalctl -f
# 只看今天的
journalctl --since today
# 只看最近半小时
journalctl --since "30 min ago"
这是排查服务问题的主力工具。 服务起不来,journalctl -u 服务名 -n 50 一般就能看到原因。
2. /var/log/ 目录 —— 传统日志位置
ls -lh /var/log/
重点看这几个:
| 文件 | 内容 |
|---|---|
syslog 或 messages | 系统综合日志 |
auth.log 或 secure | 登录、权限相关(密码错、被锁看这个) |
dpkg.log | 装软件的历史记录(装坏了看这个) |
Xorg.0.log | 图形界面日志(黑屏、花屏看这个) |
kern.log | 内核日志(硬件、驱动看这个) |
# 看最近的错误
grep -i error /var/log/syslog | tail -20
3. 应用自己的日志
很多软件有自己的日志目录:
ls ~/.config/软件名/logs/ # 用户级
ls /var/log/软件名/ # 系统级
ls ~/.local/share/软件名/ # 有些放这
微信/钉钉/WPS 这类,一般在自己安装目录或 ~/.config 下。
三、五种"看起来要完蛋"的情况,其实能救
情况 1:开机黑屏,只有光标在闪
先试这三步(按顺序):
① 切 TTY(文字控制台)
Ctrl + Alt + F3
如果出现登录提示 → 系统没问题,只是图形界面挂了。登录进去(输用户名密码),然后:
# 看图形界面为什么挂了
journalctl -u gdm -n 50 # GNOME
journalctl -u lightdm -n 50 # 部分系统
journalctl -u sddm -n 50
journalctl -b -p err -n 30 # 本次启动的所有错误
② 最常见原因:磁盘满了
df -h
看 / 是不是 100%。满了会导致图形界面起不来。清一下:
# 看谁最占地方
sudo du -sh /var/log/* | sort -h | tail -10
sudo du -sh /var/cache/* | sort -h | tail -10
# 清 apt 缓存(安全,随时可清)
sudo apt clean
# 清旧日志(保留最近 3 天)
sudo journalctl --vacuum-time=3d
③ 显卡驱动装坏了
# 如果是 NVIDIA 驱动出问题,重启时在 GRUB 菜单选 "Advanced options" → 选带 "(recovery mode)" 的
# 进恢复模式 → 选 "root" → 然后卸载驱动
sudo apt remove --purge nvidia-*
reboot
情况 2:忘了密码
① 先试这个(有 sudo 权限的另一个账号)
sudo passwd 你的用户名
② 没有别的账号,走恢复模式
- 开机时按住 Shift(或反复按 Esc)进 GRUB 菜单
- 选 Advanced options → 选 recovery mode
- 选 root(进入 root shell)
- 重新挂载为可写:
mount -o remount,rw /
- 改密码:
passwd 你的用户名
- 重启:
reboot
⚠️ 这个方法的另一面是:别人拿到你的电脑也能这么改密码。所以磁盘加密(LUKS)是必要的,尤其笔记本。
情况 3:装了个软件,整个系统不正常了
先想:刚才装了什么?
# 看最近的安装记录
grep " install " /var/log/dpkg.log | tail -20
# RPM 系
dnf history
然后卸载它:
sudo apt remove 软件名
sudo apt autoremove # 清掉不再需要的依赖
如果是装驱动搞坏的,回滚:
sudo apt install --reinstall 之前正常的包
情况 4:磁盘满了
df -h # 先确认哪个分区满了
sudo du -sh /* 2>/dev/null | sort -h | tail -10 # 根下谁最大
常见的大户:
# 1. apt 缓存(可放心清)
sudo apt clean
# 2. 旧内核(会占几百 M 到几个 G)
sudo apt autoremove --purge
# 3. 日志(限制大小)
sudo journalctl --vacuum-size=500M
# 4. 你自己下载的东西
du -sh ~/下载/* | sort -h | tail -10
# 5. docker(如果装了)
docker system prune -a
情况 5:图形界面能用,但卡得不行
# 1. 看谁在吃 CPU/内存
top # 按 M 按内存排,P 按 CPU 排,q 退出
# 2. 看内存够不够
free -h
# 3. 看磁盘是不是满了
df -h
最常见:浏览器开了 50 个标签页 + 微信 + 钉钉,8G 内存不够用。 处理:关掉不用的。或者加内存——信创机器很多标配 8G,办公确实紧张。
四、求助前,先收集这 8 项信息
这一节是给要问人的人看的。你把这 8 项准备好,别人(或者本站的 AI)能在 2 分钟内帮你定位,否则就是来回猜半小时。
# 复制这一整段,粘到终端,把输出全部保存下来
echo "=== 1. 系统版本 ==="; cat /etc/os-release
echo "=== 2. 内核 ==="; uname -a
echo "=== 3. 架构 ==="; uname -m
echo "=== 4. 磁盘 ==="; df -h
echo "=== 5. 内存 ==="; free -h
echo "=== 6. 桌面环境 ==="; echo $XDG_CURRENT_DESKTOP; echo $XDG_SESSION_TYPE
echo "=== 7. 最近错误日志 ==="; journalctl -b -p err -n 30 --no-pager
echo "=== 8. 你敲的命令和报错 ==="; echo "(这里手写:我敲了什么,报了什么)"
再补两条最重要的:
- 完整的报错原文(截图或复制,别只写"报错了")
- 你刚才做了什么(“我装了个 xx 之后就变成这样”)
问人的时候也一样:把上面这些贴进去,比说"我的 Linux 坏了"强一百倍。
五、备份:今天花 10 分钟,以后少哭一场
Linux 上最简单的备份就是复制文件。 你的数据全在 /home/你的用户名。
手动备份(现在就能做)
# 备份到 U 盘(先确认 U 盘挂在哪)
lsblk
# 假设挂在 /media/usb
rsync -av --progress ~/文档 ~/桌面 /media/usb/backup-$(date +%Y%m%d)/
rsync 的好处:只复制变化的文件,第二次很快。
自动备份(可选,建议做)
# 1. 写个脚本
nano ~/backup.sh
内容:
#!/bin/bash
DEST="/media/usb/backup-$(date +%Y%m%d)"
mkdir -p "$DEST"
rsync -av --delete ~/文档 ~/桌面 ~/图片 "$DEST/" 2>&1 | tail -5
echo "备份完成: $DEST"
# 2. 加执行权限
chmod +x ~/backup.sh
# 3. 手动跑一次测试
~/backup.sh
自动执行(用 cron,每周一早上 9 点):
crontab -e
加一行:
0 9 * * 1 /home/你的用户名/backup.sh >> /home/你的用户名/backup.log 2>&1
⚠️ 备份脚本只有在 U 盘插着的时候才有用。 更靠谱的是备份到网络位置(NAS/共享盘),但配置更复杂,第一天不做。
六、验证:你过关了吗
- 会用
journalctl -u 服务名 -n 50查服务日志 - 会用
df -h和du -sh找磁盘空间 - 会用
top找吃 CPU/内存的程序 - 知道忘密码怎么进恢复模式改
- 跑过上面那段"求助前收集信息"的脚本
- 手动备份过一次
/home下的重要文件
七、最后:七天的路线图
D1 认桌面 → D2 找文件 → D3 装软件 → D4 办公软件
↓
D5 打印机 → D6 命令行 → D7 排障与备份
走完这七天,你已经能应付 90% 的办公场景。
接下来往哪走(按兴趣选,不必都学):
| 方向 | 学什么 | 适合谁 |
|---|---|---|
| 日常深化 | 输入法优化、字体、桌面美化、截图录屏 | 只想用得舒服 |
| 命令行进阶 | find / awk / sed / 管道、shell 脚本 | 想提高效率 |
| 系统管理 | 用户权限、服务管理、定时任务、日志分析 | 想当单位的"半个 IT" |
| 服务器方向 | SSH、Nginx、Docker、数据库 | 想做运维/后端 |
| 编程方向 | Python / C++ / Git | 想写程序 |
八、不行怎么办
Q1:journalctl 报 No journal files were found
系统用的是传统 syslog:
tail -n 100 /var/log/syslog
# 或
tail -n 100 /var/log/messages
Q2:进恢复模式后 mount -o remount,rw / 报错
有些系统根分区是只读的 squashfs 或者用了 LVM:
# 先看挂载情况
mount | grep " / "
# 如果是 LVM,可能需要先激活
vgchange -ay
Q3:rsync 报 Permission denied
目标目录没写权限。检查 U 盘挂载点的权限:
ls -ld /media/usb
必要时:
sudo chown -R $USER:$USER /media/usb
Q4:忘了自己是不是 sudo 用户
groups
输出里有 sudo 或 wheel 就是。
九、走完七天之后
这七天你没学"Linux",你学的是"在 Linux 上正常上班"。
真正的 Linux 知识(文件系统、权限模型、进程管理、网络)还在后面,慢慢来——但你现在已经能自己判断"这是哪一类问题"了。
遇到这七天没覆盖的问题 → 把报错原文原样贴出来(发群、发同事、发给 AI 都行),别转述。