
我第二天的 Linux 学习笔记重点从“会敲指令”变成了“会查资料、会组合命令、会自己排查问题”。第一天我还在纠结命令记不住第二天才意识到真正要学的不是命令清单而是 Linux 看问题和解决问题的思路。如果你也刚开始学 Linux或者平时用过但一直觉得命令很乱这篇笔记适合你跟着过一遍。每个命令我都尽量给场景、给输出、给踩坑点而不是单纯罗列参数。我学习用的环境是 VMware 里的 Ubuntu 22.04 虚拟机另外准备了一台 CentOS Stream 9 做差异对比。为什么坚持用虚拟机而不是在线工具因为第二天开始要接触 systemd、网络配置、防火墙这些跟真实系统强相关的内容网页版环境往往限制太多练不出排障手感。下面从环境、文件、权限、文本处理、进程、网络六个方向回顾一下最后是报错排查记录。1. 学 Linux 第二天先把学习路线和工作原理理顺1.1 为什么不能像背单词一样背命令很多人学 Linux 喜欢一天背几十个命令第二天全忘光。我第二天最关键的转变是接受了一个事实命令不需要背需要懂。Linux 的命令本质上就是一个个程序shell 负责把输入的命令名翻译成可执行文件路径再传参数给它。比如输入lsshell 会按照 PATH 环境变量里的目录顺序去找ls这条命令在哪找到后执行。所以你看不到命令路径的时候完全可以敲which ls或者type -a ls查清楚。理解这一点后学命令就变成了学“工具的用法”而不是背咒语。遇到不认识的命令第一反应不应该是慌而是去看帮助ls --help、man ls、info ls。man 手册分很多章节常见的是第 1 章用户命令、第 5 章配置文件格式、第 8 章系统管理命令。新手最实用的是在 man 手册里按/搜索关键字比如在man sshd_config里搜Port直接跳到相关段落。能把这个习惯养起来后面学再偏的命令都不怕。第二天真正要建立的心智模型有三个。第一Linux 是多用户系统任何操作都绕不开“身份”和“权限”。第二一切皆文件硬件设备是文件进程信息在 /proc 里也是文件普通文本文件只是其中一小部分。第三命令不是单打独斗管道和重定向可以把小命令组合成复杂流程。这三个模型一旦建立后面学 vim、脚本、服务配置都会顺很多。1.2 一套能用来练手的 Linux 环境练手环境的搭建我建议优先选虚拟机至少撑过第一周。VMware Workstation Pro 或者 VirtualBox 都可以镜像去发行版官网下载 ISOUbuntu、Debian、Rocky Linux 都行。安装时注意两点一是虚拟机内存别给低于 2GB不然跑 GNOME 桌面加多个终端会很卡二是磁盘建议 40GB 以上虽然装完系统只占用几 GB但后续装 Docker、编译软件、缓存的日志都可能撑爆小分区。如果你是 Windows 用户也可以先装 WSL命令体验和 Linux 基本一致但缺点是 systemd 在 WSL1/早期 WSL2 里不完整后来又加入了 systemd 支持和真实服务器还是有差异。我更推荐的做法是虚拟机装一个 Ubuntu 当主力练习机再开一个最小化安装的 Rocky Linux 习惯一下不同发行版的风格。两个系统的包管理器不同Ubuntu 用aptRocky 用dnf但命令用法高度相似。比如安装软件Ubuntu 敲sudo apt update sudo apt install -y nginxRocky 敲sudo dnf install -y nginx。环境装完先确认四件事能上网、能装包、能看到 IP、能开防火墙。具体命令后面会讲。虚拟机里最好再开两台不一定一台足够学前两周。如果你有条件用云服务器安全组要放行 22 端口注意千万别开着 root 密码直接暴露公网这个安全性问题后面专门说。总之环境越接近真实服务器你踩的坑越有价值。1.3 第二天先解决这三类问题我把第二天的目标收敛成三个词控文件、控权限、控进程。控文件就是增删改查、复制移动、打包解压这是最基础的操作。控权限就是理解文件所有者、所属组、其他用户分别能做什么学会用chmod、chown改变权限和归属。控进程就是能看出机器上跑了什么资源占用多少把卡死的程序找到并处理掉。这三个层面搞定后日常运维和开发中 80% 的终端操作你都能看懂。有人第二天就想学 shell 脚本我建议再等等。脚本本质是把命令组合成流程前提是你对单条命令的输入输出有感觉。所以我宁可第二天把管道的原理磨透也不急着写循环。比如cat /var/log/syslog | grep -i error | tail -n 20这个表达式里每一步输出都是下一步输入想清楚这条链比背十个循环语法有用得多。2. 目录和文件操作先把“一切皆文件”这句话落到命令行2.1 先看清 Linux 目录到底在放什么平时说 Linux 目录结构指的是 FHSFilesystem Hierarchy Standard这套约定。你不用背每个目录但最核心的几个必须形成本能。/etc是配置文件集中地服务装完后配置基本都在这里/var/log是日志存放区排查问题必翻/tmp是临时目录重启可能被清空/proc是内核暴露信息的虚拟目录不是真实磁盘文件。我用一张表记录最常用目录学习时对照着看目录作用典型文件/用途/根目录所有路径起点/root是 root 用户家目录/home普通用户家目录/home/dev/etc系统和服务配置/etc/ssh/sshd_config/var动态数据、日志/var/log/syslog/usr系统软件和用户程序/usr/bin放可执行程序/tmp临时文件重启可能清空/proc内核和进程虚拟文件/proc/meminfo理解目录结构不是为了考试是为了排查时少走弯路。比如你现在怀疑磁盘被日志占满第一反应应该是去/var/log下面找原因而不是整个磁盘一层层翻。如果发现某个服务配错了大概率要去/etc下面找对应配置文件不是去网上乱搜。2.2 ls 怎么看输出以及 file 命令该不该用第一天就会ls但第二天要看懂输出。ls -l的每一行第一列长这样-rw-r--r--。第一个字符表示类型-是普通文件d是目录l是软链接c是字符设备b是块设备。后面九个字符三个一组分别是所有者、所属组、其他用户的读、写、执行权限。所以你看到-rw-r--r--意思是这是一个文件当前用户可读写同组用户可读其他用户可读。新手容易把扩展名当真以为file.txt是文本file.sh是脚本。但 Linux 判断文件类型不看扩展名而是看文件内容。这时候file命令很有用file /etc/passwd会告诉你它是 ASCII text而file /usr/bin/bash会告诉你它是 ELF 可执行文件。用file --mime-type xxx还能查 MIME 类型后面写脚本判断输入文件时经常用。这些细节看着小能帮你少犯很多想当然的错。2.3 cp、mv、rm、tar 的注意点比参数更重要复制文件用cp复制目录必须加-r。cp -r /data /backup/data能复制目录但我更建议用cp -a它比-r多保留了权限、时间戳、软链接属性。很多时候你复制过去的配置文件权限变了服务起不来就是因为用了cp -r而不是cp -a。移动或重命名用mv同一个文件系统内mv只是改路径速度很快跨文件系统移动时系统会先复制再删除耗时就上来了。删除文件用rm删除目录加-r强制删除加-f。但rm -rf一定要谨慎我见过太多人把/home打成/hom、把项目目录少打一个字母然后整文件夹没了。建议重要操作前先ls确认当前目录再用绝对路径或者pwd看清楚。如果需要删除大量打包文件更稳妥的办法是先mv到一个临时目录比如/tmp/to_delete确认无误后再删至少给自己留一个后悔的机会。打包解压也要尽早练熟。tar -czvf backup.tar.gz /data是打压缩包tar -xzvf backup.tar.gz是解压。这里的z代表 gzip 压缩c创建x解压v显示过程f指定文件名。记住参数顺序有个小技巧czvf里f必须放最后因为它后面要跟文件名。我以前把f放前面结果 tar 老报错后来才理解 tar 的老传统。2.4 软链接和硬链接别只用“快捷方式”理解Windows 有快捷方式Linux 有符号链接软链接和硬链接。ln -s 原始文件 链接名创建符号链接这就像快捷方式链接指向的是路径原始文件删了链接就失效。ln 原始文件 链接名创建硬链接硬链接是指向同一个 inode 的多个目录项相当于同一个文件有了多个名字只要还有一个硬链接在数据就不会被回收。理解 inode 能帮你想明白很多事。你在系统里查看时ls -l输出的第二列是链接数。新建的普通文件默认链接数是 1多建一个硬链接就变成 2。目录的链接数至少是 2因为它自己代表一个.子目录里的..又指回它。这套概念初学不用钻研太深但要记住软链接可以跨文件系统硬链接不行软链接可以对目录建硬链接不行硬链接对普通文件来说更安全因为它不依赖路径。实际运维里软链接用得多比如切换 Java 版本、指向当前发布目录都用ln -s完成。3. 用户和权限搞懂 Permission denied 到底卡在哪3.1 用户、组和家目录的关系Linux 是多用户系统所有进程都归属于某个用户。查看当前身份用whoami查看完整信息用id比如id会显示uid1000(dev) gid1000(dev) groups1000(dev),4(adm),27(sudo)。用户账户信息存在/etc/passwd每行七个字段依次是用户名、密码占位符、UID、GID、注释、家目录、登录 shell。密码哈希存在/etc/shadow普通用户不能读这也是为什么总是强调别随便改权限。新建用户不要直接用useradd dev就完事最好用useradd -m -s /bin/bash dev-m表示创建家目录-s指定登录 shell。再加密码用passwd dev。如果要给管理员权限把用户加入sudo组usermod -aG sudo dev。注意-aG里的-a很关键只用-G会把用户从原来的附加组里移除这是一个容易翻车的地方。查看用户组用groups dev修改组用groupadd和groupmod。我第二天踩过的坑是建完用户以后忘记-m结果登录后发现没有家目录shell 提示符变得很奇怪各种配置文件也没地方放。解决办法是补一条mkdir /home/dev chown dev:dev /home/dev然后把/etc/passwd里家目录字段顺带改一下。与其事后补救不如一开始就养成写完整参数的习惯。3.2 读、写、执行权限的本质权限位上一节说了是九个字符三组 rwx。读权限对文件来说就是能看内容写权限是能改内容执行权限是能当程序运行。对目录来说读权限是能列出目录里有哪些文件写权限是能在目录里新建或删除文件执行权限是能进入目录。这个区别很重要有时候你能ls目录但cd进不去就是因为只有读权限没有执行权限有时候文件权限明明是 644执行脚本却说 Permission denied那是因为你只看文件权限没看目录是否有执行权限。修改权限用chmod最推荐数字法。r4w2x1把三组权限分别相加就得到三个数字。比如chmod 755 file意思所有者是 7rwx所属组是 5r-x其他人是 5r-x。755 对可执行文件很常见644 对普通文本很常见600 对私钥和密码文件很常见。想保留已有权限只加执行位可以用chmod x file这在给脚本加执行权限时最常用。修改所有者和组用chown dev:dev file注意是先用户后组。只改组可以用chgrp或者chown :dev file。新手最容易犯的错是在/etc/passwd里直接改用户 ID改完一堆文件权限对不上。正确做法是用户建好后如果需要调整 UID用usermod -u同时把家目录下文件的所有者批量改掉。3.3 sudo 和 su 的区别以及 sudoers 的写法su是切换用户比如su - root中间的-表示同时切换到目标用户的环境变量不只是换身份。sudo是以其他用户身份执行单条命令默认以 root 执行比如sudo apt update。区别在于su需要输入目标用户的密码sudo需要输入当前用户的密码而且操作会被记录到日志。生产环境里建议尽量用sudo不要随便su - root挂着管理员身份到处跑出问题不好定位。sudoers文件的权限非常敏感一定要用visudo编辑不要直接vim /etc/sudoers。因为visudo会检查语法改错会提示错误直接改可能把整个 sudo 功能弄坏。给某个用户免密执行特定命令格式是这样dev ALL(ALL) NOPASSWD: /usr/bin/systemctl。意思是 dev 用户可以在所有主机上以所有用户身份执行 systemctl 命令且不用输密码。权限配置最怕写得太大新手宁可一步步加也别写NOPASSWD: ALL。4. 管道、重定向和文本处理三剑客4.1 管道和重定向先把“数据流”想明白Linux 命令默认有三个数据流标准输入 stdin、标准输出 stdout、标准错误 stderr。命令执行后的正常结果走 stdout报错信息走 stderr。重定向就是把 stdout 写到文件比如echo hello out.txt会把内容覆盖到文件是追加。而2是把 stderr 重定向到文件比如ls /nonexist 2 err.txt。想同时保留正常输出和错误输出常用command out.txt 21这里的21是把 stderr 指向 stdout 现在的位置。管道|做的是把前一个命令的 stdout 接到后一个命令的 stdin。比如ps aux | grep nginxps aux列出全部进程grep nginx在里面搜索包含 nginx 的行。管道是最能体现 Linux 哲学的功能一个命令只做一件事复杂任务用小命令组合完成。管道默认只是在顺序连接不是并行前面的命令输出多少后面就处理多少。真实脚本里经常配合head、tail、wc -l一起用比如cat access.log | grep GET /api | wc -l一条链子就把请求数量数出来了。4.2 grep不是只能搜关键字grep是文本搜索的瑞士军刀。基础用法grep error /var/log/syslog是搜包含 error 的行。常用参数里-i忽略大小写-n显示行号-v反选-c计数-E启用扩展正则。比如grep -iE error|fail /var/log/messages能把 error 或 fail 相关的行都筛出来还忽略大小写。搜目录用-r递归但要注意可能会搜出二进制文件加上-I可以忽略二进制文件。正则这块新手掌握^行首、$行尾、.任意字符、*前一个字符重复任意次、[abc]字符集合就够用。比如grep ^#\|^$ /etc/nginx/nginx.conf会显示注释行和空行反过来用可以过滤掉注释看有效配置。我这里偷懒用了\|但更推荐-E后用|grep -Ev ^#|^$ /etc/nginx/nginx.conf。每天用 grep 去查日志正则熟练度会提升得很快。4.3 sed流编辑器最常用的是替换和删除sed是流式文本编辑器读取一行处理一行。最经典的是替换sed s/old/new/g files是替换命令old是待替换的内容new是替换后的内容g表示一行里所有匹配都替换不加g只替换每行第一个。默认 sed 不会直接改文件它把结果输出到屏幕。要真正改文件加-i比如sed -i s/127.0.0.1/0.0.0.0/g /etc/app.conf。新手建议先不加-i跑一遍确认输出没问题再决定改不改原文件。删除行用sed 3d file删除第三行sed 1,5d file删除第一到第五行sed /^#/d file删除注释行。取某段区间用sed -n 20,30p file-n关闭默认输出p打印匹配到的行。sed 还能做追加、插入、按行范围替换但第一天不用学那么多掌握替换和删除就够应对大多数文本处理需求。4.4 awk取列、统计、格式化一把抓awk看着吓人其实常用的场景很固定。默认按空白分割字段$1是第一列$2第二列。最典型的是ps aux | awk {print $1}输出进程的所有者列表。要按特定分隔符分割用-F比如读/etc/passwd时是冒号分隔的awk -F: {print $1} /etc/passwd会打印所有用户名。awk 还能统计和判断。df -h | awk NR1 {print $5}会显示除第一行外每个分区的使用率其中NR是行号NR1是跳过标题行。想统计文件有多少行用awk END{print NR} file在文件处理结束后打印总行数。awk 的条件、变量、数组也很强但第二天不用急着背。我建议先记住一个统计场景awk {sum$1} END{print sum}用来对某一列求和这在分析日志请求量时非常实用。4.5 三剑客组合实战一个日志分析小例子光列命令不好记我给一个第二天练手的组合题。假设有一个access.log每行格式是 IP、时间、请求路径、状态码、字节数比如192.168.1.10 [01/Jan/2025:12:00:01] /api/user 200 1024。要统计每个 IP 的请求次数可以这样awk {print $1} access.log | sort | uniq -c | sort -rn。这里sort排序uniq -c计数并去重sort -rn按数字降序。整个过程没有一个高深命令但能解决真实问题。想看状态码不是 200 的行用awk $4 ! 200 {print} access.log。想把错误行单独存一个文件就加重定向awk $4 ! 200 {print error.log} access.log。这一步一步拆开你会发现前面的管道、grep、awk 全用上了。学习文本处理不要孤立地背每个命令要拿一份真实日志持续练习命令之间怎么配合比单个命令的参数更重要。5. 进程与资源占用面试和运维都绕不开的“系统体检”5.1 ps、top、free、df 的正确打开方式查看进程最常用ps -ef和ps aux。ps -ef每一列依次是 UID、PID、PPID、C、STIME、TTY、TIME、CMDps aux会把进程的 CPU、内存占用率也显示出来。想看某个进程是否在跑通常是ps -ef | grep nginx但注意 grep 那条命令本身也会出现在结果里所以最好用ps -ef | grep [n]ginx这种技巧让自己搜不到 grep 进程。比较正规的做法是用pgrep -a nginx直接输出匹配进程的 PID 和命令行。动态资源看top它每隔几秒刷新一次。第一行显示系统运行时间和负载第二行是进程总数和运行状态之后是 CPU、内存、Swapping。按P按 CPU 排序按M按内存排序按q退出。top信息太密有时我会用htop它显示更友好能用方向键定位进程F9 直接杀进程适合新手观察。内存查看用free -h这里的-h是 human-readable会显示 1.2Gi 这样的单位。要分清buff/cache不是“占用”它只是磁盘缓存系统压力大时会自动释放真正要看的是available这一列。磁盘查看用df -h看分区使用率用du -sh /目录看某个目录总大小。排查磁盘被占满时先df -h看哪个分区满了然后du -h --max-depth1 /var/log一层层往下找。不要上来就du -sh /*会扫得很慢。日志文件如果很大别直接rm就完事还要看有没有进程持有文件句柄经典操作是用lsof | grep deleted找到已被删除但仍被占用的文件。5.2 kill、pkill 和“退出终端后进程怎么办”杀掉进程不是只有kill -9。kill默认发TERM(15)信号请求进程自己退出进程可以清理资源后优雅停止。kill -9发KILL信号交给内核直接杀掉进程没有机会清理。所以推荐顺序是先用TERM卡住再用KILL。查看信号列表用kill -l。比如找到 PID 后执行kill 12345过两秒再看进程还在不在还在就kill -9 12345。很多人问“退出终端后后台任务会不会被杀”。如果你只是用把命令放到后台关掉终端时很多进程会收到 SIGHUP 信号然后退出。解决办法有几种第一用nohup 命令 让进程忽略挂断信号日志重定向到文件第二用setsid 命令让进程脱离当前会话第三用tmux或screen开一个在后台持续运行的终端会话这种方式我推荐指数最高因为你不仅能放后台还能随时重新“贴”回会话查看输出。比如tmux new -s work开新会话Ctrlb d脱离再tmux attach -t work回去比 nohup 更可控。5.3 systemctl 管理服务的基本功现代 Linux 发行版用 systemd 管理服务systemctl是主要工具。最常用的是systemctl start nginx、systemctl stop nginx、systemctl restart nginx、systemctl enable nginx。注意enable不是启动服务而是设置开机自启所以安装完一个服务后标准流程通常是systemctl enable --now nginx--now表示同时立即启动。查看服务状态用systemctl status nginx它显示当前状态、主进程 PID、最近日志排错第一步就是它。服务配置一般写在/etc/systemd/system/xxx.service格式是 INI 风格。比如一个简单服务的 Unit 段落里写DescriptionxxService 段落里写ExecStart/usr/local/bin/appExecStart必须是绝对路径。每次改完配置要systemctl daemon-reload重新加载。排查服务起不来时除了看 status还常用journalctl -u nginx查看这个服务的日志。journalctl 的-u后面指定服务名-f是 follow 实时滚动--since today只看今天的日志。6. 网络配置和远程管理学会自己看 IP、连服务器、传文件6.1 查看 IP、网关和端口占用第二天网络方面不用学太难先把“看网络状态”搞定。查看所有网卡和 IP 用ip addr里面能看网卡名、Mac 地址、IPv4、IPv6。新系统查 IP 优先用ip命令而不是老旧的ifconfigifconfig默认不一定安装。查看路由和网关用ip route里面default via 192.168.1.1 dev ens33就代表默认网关。临时配置 IP 可以用ip addr add 192.168.1.20/24 dev ens33但重启会失效真正持久配置要去改 netplan 或 NetworkManager不建议第二天就上手改。网络连通性测试用ping比如ping -c 4 baidu.com-c指定次数不然会一直 ping 下去。ping 通只说明 ICMP 通不代表端口通。测 TCP 端口推荐nc -vz 192.168.1.10 22或者ss -tlnp。ss -tlnp是查看服务器当前监听的端口和对应进程比如怀疑 nginx 没起来用ss -tlnp | grep :80能看到监听 80 的进程。以前教程爱用netstat现在新系统推荐用ss输出更直接。6.2 用 SSH 连远程机器、用 scp 传文件远程连接第一工具是 SSH。命令格式是ssh 用户名主机IP -p 端口默认端口 22。第一次连接会提示确认主机指纹输入yes后会加到本机~/.ssh/known_hosts。如果经常连建议配置密钥免密登录本地生成ssh-keygen -t ed25519然后把公钥追加到服务器的~/.ssh/authorized_keys用ssh-copy-id userhost最省事。密钥登录比密码登录安全得多生产环境尤其重要。传文件常用scp它基于 SSH命令和cp类似。本地传到远程scp /tmp/test.txt userhost:/home/user/远程拉到本地scp userhost:/var/log/nginx/access.log /tmp/。传整个目录加-r保留文件时间和权限加-p。如果文件大或者文件多建议用rsync -avz增量同步断点续传、压缩、保留属性样样都有。rsync -avz /data/ userhost:/backup/注意源目录末尾的/意义不同多一个斜杠是把目录内容传过去少一个斜杠是连目录本身一起传这个细节很容易踩坑。6.3 时间同步和防火墙别忽略查看系统当前时间用date查看硬件时间用hwclock。系统时间和硬件时间可能不一致可以用hwclock -s把硬件时间同步到系统。查看系统时间同步状态用timedatectl输出里NTP service: active表示正在用 NTP 同步。如果时间不对先timedatectl set-ntp true打开 NTP然后systemctl restart systemd-timesyncd过一会儿再看timedatectl。日志排错时间里外偏差太大会非常痛苦因为很多日志对比都是基于时间的。防火墙也是第二天值得了解的。Ubuntu 默认可能没开 ufw状态查看用sudo ufw status允许 22 端口用sudo ufw allow 22/tcp启用防火墙用sudo ufw enable。Rocky 默认用 firewalld查看sudo firewall-cmd --list-all开放服务sudo firewall-cmd --permanent --add-servicessh改完要--reload。新手最容易的现象是服务明明启动了从外面就是连不上十有八九是防火墙拦截先用ss -tlnp确认端口在监听再看防火墙规则。7. Linux 学习第二天的常见报错与排查实录7.1 我第二天踩得最狠的五个问题第一command not found。看起来是命令不存在实际可能是软件没装、命令不在 PATH、或者这个命令只有 root 能用。排查用which 命令名如果没输出说明不在 PATH 里用ls /usr/bin/命令名确认是否真的没有。比如traceroute很多系统默认不装需要apt install traceroute或dnf install traceroute。第二Permission denied。这个问题有太多可能。对文件本身没权限用ls -l看所有者对目录没执行权限也会出现这个提示。如果确认权限没问题但还报错可能是文件系统挂载了noexec选项这种情况用mount看看挂载参数。新手常犯的是在/tmp下发执行脚本而/tmp在某些加固系统里是noexec解决方法是换目录或改挂载参数。第三No space left on device。明明df -h显示还有空间却提示空间不足。这时候要看 inode 是否耗尽用df -i如果IUse%接近 100%说明小文件太多常见于/var/spool或邮件队列。清理方式是找到冗余文件并删除而不是只关注磁盘块占用。第四端口被占用。启动服务时报Address already in use先ss -tlnp | grep 端口号找到谁的 PID然后再决定是杀了冲突进程还是改服务端口。千万别一上来就kill -9先确认不是自己的另一个服务在占用。第五终端卡死或者 vim 不知道按什么退出。很多人第一次进 vim 后不知道该怎么做方向键变成字母A B C D。这是因为你的发行版可能把 vim 装成了 vi 改进版默认兼容模式。退出方式是先按Esc然后输入:q!强制退出不保存。终端没有响应时先试CtrlC终止当前命令再试CtrlD退出 shell“卡住”有时是因为输出量太大尝试按q退出 less 分页。7.2 我建议的排查步骤和好习惯遇到任何报错先看完整输出再看日志。命令行报错信息里通常已经写明“什么文件、什么权限、什么服务”把关键词提取出来再搜比整段复制到搜索引擎更高效。系统日志去哪看Ubuntu 一般看/var/log/syslogRocky 看/var/log/messages服务日志用journalctl -u 服务名。查看最近日志用tail -n 50 -f /var/log/syslog-f是持续跟随写入调试服务时开着这个窗口非常直观。还要养成一个习惯改动文件前先备份。比如要改/etc/ssh/sshd_config先cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak.$(date %F)改坏了还能恢复。编辑这种关键文件前先跑一遍语法检查比如 sshd 配置改完执行sshd -tnginx 配置改完执行nginx -t。系统更新前也要看一眼磁盘空间别在/满时做apt upgrade容易搞出半套依赖问题。7.3 一份“第二天自测”小清单我把第二天应该掌握的内容做成了自测清单每一条你都能在终端里现场试一遍能否用ls -l看懂文件类型和权限能否用find /etc -name *.conf | head -20找出配置文件能否给普通用户加 sudo 权限用chmod 600修改私钥文件权限用rsync同步一个目录到 /tmp在ps aux输出里找到特定进程并查看端口用 sed 批量替换文本并确认生效知道 nohup 和 tmux 的区别会看df -h、free -h、ss -tlnp。如果都不卡壳说明第二天的核心部分已经过关可以开始学 shell 脚本和 vim 深入用法了。8. 最后想说的练到形成条件反射第二天结束后我最强的感受是Linux 不是一门“看会的课”是一门“练会的技能”。刚开始你会觉得命令又多又杂但只要你每天在终端里真实操作一两个小时坚持把报错自己查一遍一星期后很多命令就成了肌肉记忆。遇到不会的命令第一反应不是打开收藏夹而是man和--help遇到服务起不来第一反应不是重装而是看日志和状态。这个思维转变比记住任何具体参数都值钱。后面我想给自己安排的是第三天把 vim 的常用操作彻底练熟第四天开始写第一个 shell 脚本把第二天学到的管道、循环、参数判断全用进去。如果你也正在学 Linux建议别贪多一天吃透一个主题就足够。把文件、权限、进程、网络这四块地基打好再往上去学环境部署、自动化都会轻松很多。