适用:所有 Linux 耗时:约 30 分钟 前置:D6(会用命令行)

最后一天不讲新东西,讲出事时怎么办。这一篇最重要——因为你迟早会用上,而且用上的时候通常很慌。


一、先记住这条铁律

不要瞎试。先看现象,再找日志,最后才动手。

新手出问题的标准流程是:百度一个命令 → 敲 → 报新错 → 再百度 → 再敲 → 系统彻底坏。

正确流程:

  1. 现象是什么(截图/记下来)
  2. 日志说什么(99% 的答案在这)
  3. 只改一处
  4. 验证
  5. 不行就改回来,再试下一个

二、日志在哪:三个地方就够

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 你的用户名

② 没有别的账号,走恢复模式

  1. 开机时按住 Shift(或反复按 Esc)进 GRUB 菜单
  2. 选 Advanced options → 选 recovery mode
  3. 选 root(进入 root shell)
  4. 重新挂载为可写:
mount -o remount,rw /
  1. 改密码:
passwd 你的用户名
  1. 重启:
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 都行),别转述。


← 上一篇 D6|命令行第一次 返回 7 天过渡清单总览