Linux学习与实战:从常用命令到系统安装、运维与面试避坑指南
2026/9/9 2:52:30 网站建设 项目流程

这个关键词在我的搜索记录里躺了快十年。打开任何一个搜索引擎,都能看到"linux常用命令大全""linux系统安装""linux面试题"这些词常年霸榜,收藏夹里存了一堆教程,最后真正坚持下来的人却没几个。这篇内容不是教科书,是从一个天天跟服务器打交道的Linux使用者的角度,把学Linux、装Linux、用Linux、面Linux这几个环节里的核心方法和踩坑记录全部摊开讲一遍。文章里会有可以直接照抄的命令、分区方案、安装步骤和故障排查思路,适合刚接触Linux的新手,也适合准备面试的运维和开发人员,以及那些只是想给自己电脑装个双系统、配个开发环境的普通程序员。

1. 学Linux:方向比数量重要

1.1 先理解Linux的几个核心抽象

"linux操作系统基础知识"这个热搜词说明很多人第一步就卡在了老生常谈的基础理论上。我不建议一上来就啃《深入理解Linux内核》,而是先理解几个核心抽象。

一切皆文件就是第一个核心。Linux把设备、进程、网络都抽象成文件,所以你能用open、read、write这一套接口操作几乎所有东西。理解了这一点,很多命令的逻辑就通了。比如/dev/null就是一个黑洞文件,把输出丢进去就是丢弃;/proc目录下面全是虚拟文件,cat /proc/meminfo能看内存信息,cat /proc/cpuinfo能看CPU信息。

内核与Shell的关系是第二个。内核管理硬件资源,Shell是用户和内核之间的翻译官,bash就是最常见的Shell。你敲的每条命令,本质上都是让Shell帮你调内核的接口。Windows用户刚转过来时最不适应的就是"没有图形界面也能干活",其实Shell就是最高效的图形界面,只是它不是鼠标点的,是文字敲的。

权限模型是第三个,也是新手最容易出事的点。Linux的权限分为读、写、执行三档,分别对应该文件或目录的所有者、所属组、其他用户。目录的执行权限代表"能不能进入这个目录",这个很多人会搞混。权限控制是Linux安全的基础,后面装服务、建用户的时候,大部分问题都是权限不对导致的。

1.2 按照用途选学习路线

这里的关键是要认清:Linux的学习路线取决于你的使用场景,不同场景需要掌握的东西差别很大。

如果你是运维,重点在服务管理、网络配置、系统调优、自动化脚本。以"linux常用命令大全运维"这个热搜词为例,你其实需要的是systemctl、journalctl、ss、awk、sed、crontab这类命令,而不是花哨的桌面美化。

如果你是后端开发,重点在搭建开发环境、理解进程和网络、会用Docker、能看懂日志。热搜词里的"linux系统安装python""linux安装jdk"就属于这个方向,你需要掌握的是环境变量、软件包安装、遇到缺库怎么排查。

如果你是嵌入式方向,重点在交叉编译、内核裁剪、设备树、文件系统烧录。"嵌入式linux"这个词的热度一直很高,但说实话这条路门槛最高,因为它要求你同时懂硬件和软件,不是光靠背命令就能搞定的。

最怕的是什么?最怕的是方向没想清楚,就买了一堆大部头书,或者收藏了"linux常用100个命令",结果学两周就放弃了。我建议一开始先定一个目标,比如"我要在虚拟机里搭一个WordPress站"或者"我要学会用Linux做日常开发",以项目带学习,这才是最快的路径。

1.3 别忽视桌面环境的意义

提到"linux国产",很多人第一反应是服务器端。实际上,近几年国产Linux桌面发行版在办公和教育领域已经挺常见的,就像热搜里出现"希沃白板linux版""搜狗输入法linux""企业微信linux""豆包linux客户端"一样,说明日常软件生态正在慢慢补齐。

我的观点是:桌面环境最大的意义不是"拿Linux替代Windows",而是让你在一个低风险的环境里熟悉Linux的操作习惯。你可以在虚拟机的Ubuntu桌面版里练习文件管理、输入法配置、软件安装,把这些基础操作练顺手了,再跳到纯命令行的服务器环境就不会那么慌。这也是为什么我一直推荐新手从虚拟机安装Ubuntu桌面版开始,而不是一上来就装个无桌面的最小化系统。

2. 命令实战:高频命令背后的真实场景

每次看到"linux常用100个命令"这类内容我都觉得好笑,因为正常人根本用不了100个。大概20个命令就能覆盖日常工作的80%。但问题在于,很多人是"背命令"而不是"用命令",背完就忘。这里我把最值得掌握的几组命令放在真实场景里讲。

2.1 文件与目录操作:别让rm毁了你的一天

ls、cd、cp、mv、rm、mkdir、touch、ln,这些是文件操作的基础。我用得最多的其实是ls -lh和find。"linux find"这个热搜词能上榜,说明大家都被"找文件"折磨过。find的核心用法是:

find /var/log -name "*.log" -mtime -7 find /home -type f -size +100M find / -name "nginx.conf" 2>/dev/null

第一句是在/var/log下找修改时间在7天内的日志文件;第二句是找/home下面大于100MB的文件,排查磁盘占用时特别好用;第三句是全盘找某个配置文件,把权限报错丢到/dev/null里防止刷屏。find的-exec参数还支持对查到的结果直接执行命令,比如批量清理临时文件:

find /tmp -name "*.tmp" -type f -exec rm {} \;

先find确认,再批量执行,比手动删安全得多。

至于rm,网上那句"rm -rf /"的玩笑已经够多了。我说点真实的:删除文件夹用rm -rf 目录名没问题,但请务必先确认路径没写错。我见过有人把变量写成空格导致rm -rf后面跟了根目录的,也见过把/opt/app写错成/opt/app/logs多删一层的。规范化做法是:删除前用ls确认,或者干脆用mv移到/tmp目录,确认没问题再删,也就是"软删除"思路。

2.2 文本处理:grep、sed、awk是运维的三大件

日志在服务器上是永远排查不完的,如果不会文本处理,你的运维生涯会非常痛苦。grep负责过滤,sed负责编辑,awk负责按列处理,三者合起来能解决95%的日志分析需求。

grep -E "ERROR|FATAL" app.log | wc -l sed -n '100,200p' app.log awk '{print $1, $4}' app.log | sort | uniq -c

第一句统计错误日志条数;第二句只看第100到200行,日志文件巨大时不卡死;第三句把每行的第一个字段和第四个字段取出来,统计去重计数,排在前面的往往就是刷屏的来源。热搜词里还有"linux sed",我多说一句:sed最常用的替换功能是

sed -i 's/old/new/g' config.conf

这个命令会直接改写文件,慎用,尤其配置文件,建议先不加-i跑一遍确认无误,再加上。我在生产环境改配置前永远先备份一份。

2.3 进程与系统状态:定位性能问题的基础

服务器变卡了怎么办?top是最直观的入口,按P按CPU排序,按M按内存排序,按k可以杀掉进程。free -h看内存,df -h看磁盘。如果发现内存还剩很多但Swap被占满了,通常是缓存策略问题;如果发现CPU全是wa(IO等待),那大概率是磁盘IO瓶颈,这个要靠sar和iostat进一步排查。

systemctl和journalctl是管理服务的核心命令。查一个服务挂了,顺序通常是:

systemctl status nginx journalctl -u nginx --since "10 minutes ago" systemctl restart nginx systemctl enable nginx

先看状态,再看日志,再重启,最后设置开机自启。日志会告诉你服务为什么挂,光重启不解决根本问题。这个实操习惯大家一定要养成。

2.4 网络与传输:不装图形界面也能传文件

网络排查是Linux运维的另一个大头。ping测连通、ss -tlnp看端口监听、curl测试HTTP接口,这套组合基本够了。比如新配了一台机器,发现外部访问不到80端口:

ss -tlnp | grep 80 curl -I http://127.0.0.1

第一条确认服务有没有监听,第二条确认本地能不能访问。如果监听正常但外网不通,那大概率是防火墙规则或者云安全组的问题,systemctl status firewalld查一下状态,临时关掉再试,不要一上来就全盘放行。

文件传输也是高频需求。搜"linux rz和sz"说明大家都在找直观的方案。rz和sz是XShell这类终端里最方便的"上传下载"命令,rz接收文件、sz发送文件,人性化得像鼠标操作。如果没有装,使用yum install lrzsz或apt install lrzsz即可。生产环境跨服务器传输还有一个杀手级命令是rsync,支持断点续传和增量同步,迁移数据时特别稳。

3. 系统安装:从镜像下载到装完系统

"linux系统安装""linux镜像""linux安装"这些热搜词说明,很多人第一步就卡在了安装这个看似简单实则很多坑的环节。我以虚拟机安装Rocky Linux 9为例,把完整流程和容易出问题的地方都讲一遍。

3.1 发行版怎么选:从镜像开始

主要的Linux发行版分几条线:Debian系有Ubuntu、Debian,Red Hat系有Rocky Linux、AlmaLinux,还有面向服务器的SUSE和面向极客的Arch。选型标准其实很简单:如果是为了学基础、做开发,Ubuntu LTS用户多、资料多、出错能找到答案;如果是为了服务器生产环境,Red Hat系更常见,因为很多商业软件和文档都优先适配它。CentOS停止维护后,Rocky Linux和AlmaLinux是最热门的替代品,这也是"rocky linux"热度高的原因。

下载镜像时一个关键点:尽量用国内镜像站,速度能差几十倍。搜索"某发行版 镜像站"一般就能找到阿里云、华为云、清华TUNA这些镜像源。文件名里带live或desktop的是图形版,带server的是服务器版,选择时看清楚。

如果不想下载整个镜像做虚拟机,WSL 2也是一个好选择。Windows上装WSL 2,配合发行版镜像,能在Windows里跑原生Linux环境,开发调试非常方便,这也是很多Windows开发者的选择。

3.2 虚拟机创建与分区

虚拟机软件用VMware Workstation Player或VirtualBox都行。创建虚拟机时,CPU给2核、内存给4GB、磁盘给40GB以上,这是跑系统的底线。网络选NAT模式,它能让虚拟机通过宿主机上网,后续想改桥接也方便。

安装界面里最重要的环节是磁盘分区。新手如果搞不清楚就一直选默认的"自动分区",反正都有LVM,后面扩展也方便。如果你想手动分,我建议简单方案:

  • /boot:1GB,启动引导用
  • swap:与内存大小相当或8GB上限,内存够大也可以不建
  • /:剩余全部空间

这里有个常见的坑:如果之后想扩展根分区,LVM会方便很多,但如果你分了独立的/home分区且空间给少了,后面迁移用户数据会很痛苦。我的经验是,刚开始练习阶段,一个根分区就够了,逻辑简单,出问题也好处理。

3.3 关于蓝屏和虚拟机疑难杂症的排查

热搜词"虚拟机安装linux蓝屏"绝对是很多人的噩梦。这个问题绝大多数不是Linux镜像本身的锅,而是虚拟化层面的冲突。常见原因有几个:

第一,在Windows上使用VMware时开了Hyper-V或者内核隔离,导致嵌套虚拟化冲突,VMware启动时直接蓝屏。解决办法是把Windows的Hyper-V相关功能关掉,或者改用Hyper-V本身来创建虚拟机。跑WSL 2也需要Hyper-V组件,所以如果又用WSL又用VMware,冲突概率更高。

第二,BIOS里的虚拟化技术(VT-x/AMD-V)未开启。开机进BIOS找Intel VT-x或AMD SVM,把它设为Enabled。这一步忘了,启动虚拟机时会提示"此主机支持VT-x但不支持"之类的报错。

第三,内存不足或磁盘空间不足导致虚拟机启动瞬间崩溃。给虚拟机分配的内存不要超过宿主机物理内存的一半,同时确保磁盘剩余空间够大,虚拟磁盘文件通常是动态增长的,别看它初始只有几个GB,后面会膨胀到几十GB。

处理这类问题时我的习惯是:先把所有虚拟化相关的内核组件状态查清楚,再考虑是否关闭Hyper-V,最后才是重装系统。跳过排查直接重装,往往同一步错第二遍。

4. 日常运维:添加用户、装软件、配DNS、调磁盘

4.1 软件包管理:update和upgrade到底有什么区别

"linux中update和upgrade有什么区别"这个问题几乎每个新人都会问,面试也常问。简单说,apt update是更新软件源索引,也就是把远程仓库里的软件包列表同步到本地,它不改变系统里任何已安装软件;apt upgrade才是真正升级系统里已有的软件包。对应的yum/dnf里是yum check-update和yum update,逻辑类似。

所以装软件前必须先update,否则可能提示找不到包或者装的版本很旧。但又不能天天无脑upgrade,尤其在生产环境,一次大版本升级可能带来兼容问题。我的做法是:测试环境的Linux可以每周upgrade一次;生产环境只在需要打安全补丁或功能升级时,挑非业务高峰逐个升级。

软件安装的例子,包括热搜里的"linux安装jdk""linux系统安装python"和"linux离线安装pnpm"。装JDK推荐用包管理器或下载官方压缩包两种方式。包管理器装openjdk一行命令就搞定,但版本控制不够灵活;下载Oracle JDK的tar.gz自己解压到/opt/jdk,然后配置环境变量更可控:

export JAVA_HOME=/opt/jdk-17 export PATH=$JAVA_HOME/bin:$PATH

写进/etc/profile才能全局生效,改完记得source /etc/profile。

离线安装是个高频场景。很多生产服务器不能上外网,装pnpm这种就需要先在联网机器上下载好安装包或二进制,再拷贝进去。pnpm提供了独立的二进制包,下载对应版本的二进制文件传到服务器,解压后软链到/usr/local/bin/pnpm,再npm install -g一下就行。离线环境的通用思路就是:先找依赖、再传包、再手动配置,尽量用官方提供的"离线安装包"形式,少自己编译源码,否则依赖地狱会让人疯掉。

4.2 新建用户与权限管理

"linux新建用户"也是经典问题。useradd和adduser是两个不同的命令,Debian系的adduser是个脚本,会自动创建家目录和用户组;useradd则是底层命令,不加参数时不会自动创建家目录。建议新手用adduser。

实际流程:

adduser zhangsan passwd zhangsan usermod -aG sudo zhangsan

第一条创建用户,第二条设置密码,第三条把用户加入sudo组。sudo的权限在/etc/sudoers里控制,改这个文件一定要用visudo命令,因为它会检查语法,避免你把系统唯一的sudo入口改坏。

权限管理里最常见的需求是"给某个服务建一个专用账号,只允许访问特定目录",这就要用到chown、chmod的深入理解。所谓最小权限原则,就是在生产和共享环境里,务必定期审计home目录权限,别让每个新用户都拥有全局的写权限。

4.3 DNS配置的经典坑

"linux中配置dns出现的问题"这个热搜词说明DNS是坑中之坑。传统的改法是在/etc/resolv.conf里写nameserver,但这个文件现在经常被systemd-resolved或NetworkManager覆盖,你改了重启又变回去。所以要先搞清楚系统用哪个网络管理服务。

如果用的是systemd-resolved,正确做法是通过resolvectl查询状态,用nmcli修改DNS:

nmcli con mod "Wired connection 1" ipv4.dns "223.5.5.5 8.8.8.8" nmcli con up "Wired connection 1" systemctl restart systemd-resolved

如果你非得直接改/etc/resolv.conf,需要先把这个文件的符号链接关系弄清楚。很多发行版里它是指向/run/systemd/resolve/resolv.conf的符号链接,直接在系统里改不生效。排查DNS问题的思路是:先ping一个IP,通不通;再nslookup一个域名,看看解析用的是哪个服务器;最后看/etc/nsswitch.conf里hosts那行有没有包含dns。按这个顺序来,大多数"DNS有问题"都能定位到具体层。

4.4 磁盘调优:设置寻道算法的实际意义

"linux设置磁盘寻道算法"这个词有点硬核。磁盘寻道算法是I/O调度器决策"谁来先访问磁盘"的策略。原来的Linux有noop、deadline、cfq等调度器,现代内核里很多都被合并或者由mq-deadline、none替代了。

查当前调度器:

cat /sys/block/sda/queue/scheduler

临时切换:

echo mq-deadline > /sys/block/sda/queue/scheduler

永久生效要写udev规则或内核引导参数,比如在/etc/udev/rules.d/里加一条规则。我的实际建议是:如果你用的是SSD/NVMe,现代Linux默认的none基本就最优了,不需要专门改;如果是HDD跑数据库这类随机IO比较高,可以试mq-deadline,对延迟有改善。这块属于锦上添花的调优,先分清场景再动手,别盲目抄别人的参数。

5. 面试与求职:Linux相关岗位到底考什么

"linux面试题""linux面试题测试""linux常用命令大全运维"这些热搜词的背后,是大量准备跳槽的开发、运维人员在焦虑。我面过不少候选人,也经常帮别人做面试辅导,说说真实感受。

5.1 面试题的核心模块

根据我看到的面试题样本,Linux面试基本围绕六个模块展开:

模块高频考点
系统启动从BIOS到内核到init/systemd的启动流程
文件与权限权限位的计算、suid/sgid/sticky bit、软硬链接区别
命令与文本处理grep/sed/awk用法、查找大文件
进程与服务僵尸进程是什么、如何杀进程、systemd unit怎么写
网络端口排查、DNS解析流程、TCP握手状态
故障排查磁盘满了怎么办、CPU飙高怎么定位、服务起不来怎么办

启动流程这块,很多教程写得特别玄乎,其实记住主线就行:BIOS/UEFI加载引导程序→引导程序加载内核→内核挂载根文件系统→运行init进程(现在多是systemd)→systemd读取默认target并启动相应服务。面试时能把这条线说清楚,再结合systemd的unit概念展开,基本就能过关。

5.2 实操型面试的准备:把"背题"变成"演练"

我见过很多人简历上写着熟练使用Linux,实际上连top怎么按内存排序都不知道,这种在一道实操题面前就会露馅。所以准备面试时,不要只看题,要真的在虚拟机里把命令敲一遍。

建议准备一台测试机,自己给自己出题:比如故意把某个服务的配置文件写错,让服务起不来,再通过journalctl把问题找出来;模拟磁盘写满的场景,找出占用空间最大的目录并清理;写一个cron任务定时备份数据库。这些场景练习一次,比背五十道题有用得多。

另外,Linux安全这块要特别注意。热搜词里有"linux提权",我以安全加固的视角提醒大家:作为运维或开发,你需要了解的是提权的常见路径,目的是在服务器上做对应的防范,比如最小化sudo授权、定期更新内核补丁、SSH禁用root密码登录、不用弱口令。了解原理是为了防守,而不是为了攻击。面试时被问到安全问题,从"我如何防止被提权"的角度回答,比讲攻击细节要专业得多。

6. 常见问题速查与避坑实录

最后放一个我在日常实操里反复遇到、也常被问到的问题速查表。

现象原因解决办法
unzip解压zip文件中文乱码zip包是Windows创建的,编码为GBK用unzip -O CP936 file.zip,或安装7zip后使用7z x file.zip
apt update能同步但upgrade总是失败软件源配置不一致或网络问题检查/etc/apt/sources.list,换稳定的镜像源
端口被占用,服务起不来上一个进程没退干净ss -tlnp找到PID,确认无残留再启动
df显示磁盘快满了但du找不到大文件有文件被删除但仍被进程占用用lsof配合grep deleted找到占用进程后重启该进程
服务器时间不对,日志对不上时区或NTP同步问题timedatectl设置时区,systemctl enable chronyd开启同步
rm删错文件想恢复没有备份基本无解,这就是为什么强调先mv到临时目录
systemd服务启动失败unit文件语法或权限错误systemctl status 服务名加上journalctl -u 服务名 -n 50定位
虚拟机装Linux过程中蓝屏虚拟化层冲突检查Hyper-V、VT-x、内存分配和磁盘空间
中文输入法装了但无法切换缺少输入法框架安装fcitx5并设置环境变量GTK_IM_MODULE=fcitx

多解释几个。

解压乱码。Windows打包的zip默认GBK编码,Linux默认UTF-8,直接unzip就乱码。最直接的解法是安装p7zip-full后使用7z x file.zip,它对编码兼容性好一些;或者用unzip -O CP936指定编码。这也是为什么我给别人传压缩包前,都会顺手说一句"在Linux下解压注意编码"。

df和du对不上。这是运维新手最容易慌的场景。明明df显示磁盘100%,但du统计某个大目录才用了60%,中间差的40%去哪了?大概率是有文件被删除但还被进程占用,常见的例子是正在写日志的进程把日志文件删了。用lsof配合grep deleted查一下,找到进程ID,重启进程或者把文件清空,磁盘空间就会释放。这个坑我至少遇到过三次。

DNS配置。前面也讲了,关键是先搞清楚是谁在管理resolv.conf,不然改完等于白改。顺便说一句,公司内网如果出现"能上QQ不能开网页"这类问题,80%是DNS解析失败,直接拿nslookup测一下就知道。

最后再分享一个小技巧:每次解决一个自己卡了很久的问题,把排查过程和原因记录到自己的笔记里。这个习惯坚持一两年,你的"问题排查经验库"会比任何培训都值钱,面试的时候也会特别有底气。Linux这个东西,说到底是练出来的,不是背出来的,你每踩过一个坑,解决问题的能力就实实在在往上走一截。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询