ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Linux第一次作业全攻略:从环境搭建到常用命令实战

Linux第一次作业全攻略:从环境搭建到常用命令实战 1. 学习思路与整体破局1.1 你的第一次Linux作业到底在考察什么每年都有大批新人带着“Linux第一次作业”这个题目走进终端世界我见过太多人在这一步卡住。其实仔细拆开来看这个作业考察的核心就三件事能不能把Linux环境跑起来、会不会用命令行完成日常文件操作、懂不懂用户权限和进程这些基本概念。说白了就是看你有没有跨过“从图形界面思维切换到命令行思维”这道坎。很多初学者上来就背命令背了一堆参数却不知道这些命令到底解决什么问题结果作业做完脑子里还是一团浆糊。我给你的建议是先想清楚这套作业背后的逻辑链Linux以文件为核心一切皆文件进程是运行中的程序实例用户和权限决定了谁能碰哪些文件。这三条线捋顺了后面所有命令都是为它们服务的工具。针对这套“第一次作业”我最推荐的破局方式是在虚拟机里装一个最小化的Linux发行版然后通过终端SSH远程登录去操作。为什么非要强调虚拟机加SSH因为这样你就直接模拟了真实服务器的工作方式而且遇到问题随时能快照回滚容错率高。等你在虚拟机上把基础命令玩明白了再回头看物理机或者云服务器上的Linux思路是完全一致的。这节课我写给你看的东西不需要你有任何Linux基础只要会打开电脑就行。我会把环境搭建、常用命令、权限处理、进程管理这几大块拆开讲每一段都配上我自己踩过的坑和实操心得你照着走一遍第一次作业基本就是满分水平。1.2 为什么选择RHEL系而不选Debian系的底层逻辑选发行版这件事看起来只是口味问题但对你后续学习的影响比想象中大。拿RHEL系和Debian系来说前者用dnf/yum管包后者用apt配置文件路径、防火墙策略、SELinux状态全都不一样。很多教程混着讲今天让你跑apt安装明天让你用dnf装依赖新人直接精神分裂。第一次作业阶段我建议优先选RHEL系具体来说就是Rocky Linux或者AlmaLinux。原因很简单国内大部分企业生产环境、运维面试题、甚至各类认证考试都默认RHEL系语法。你学RHEL系的命令体系和systemd管理方式出去直接能用不需要二次转换。而Debian系更适合你后面搞嵌入式或者玩桌面化折腾时再补那是另一个方向的事。另外有个实用细节RHEL系默认开启SELinux很多新人第一次启动服务被权限拦住第一反应就是关SELinux这是不对的。第一次作业阶段你确实可以先临时setenforce 0避开问题但要意识到SELinux本身是安全机制作业过关后值得专门花时间弄懂它而不是一关了之。我后面会专门讲这个坑。2. 环境搭建从零到能敲命令2.1 虚拟机安装Linux的完整步骤与镜像选择我默认你已经装好了VMware Workstation或者VirtualBox没有的话随便选一个VirtualBox开源免费更省事。接下来第一步是搞镜像去Rocky Linux官网下载DVD版ISO或者Minimal版都行。对第一次作业来说Minimal版更合适它体积小、无图形界面逼着你去用命令行而且安装完内存占用非常低。新建虚拟机时有两个关键参数直接说结论内存给2048MB以上网络选NAT模式。NAT模式的好处是虚拟机可以通过宿主机上网但外部设备无法直接访问虚拟机这对初学者来说是一层天然保护。磁盘大小给20GB足够虚拟磁盘建议拆分成多个文件日后迁移方便。安装过程本身没什么难度选择最小化安装、把root密码设好、创建一个普通用户一路下一步就行。唯一要提醒的是分区方案用默认的LVM不用改新手不要去手动画分区LVM的好处是以后磁盘空间不够可以动态扩容这个特性等你工作后会更依赖。装完系统重启后登录界面黑底白字输入用户名和密码就进入了shell。这一步你就算正式进入了纯命令行环境。很多新人到这儿会慌因为看不到桌面了其实完全不用慌命令行才是Linux的主战场图形界面只是一个可选的壳。2.2 SSH远程登录为什么是关键一步我强烈建议你不要直接在虚拟机屏幕上操作而是通过SSH从宿主机远程登录。这样做的第一个好处是体验真实生产服务器都是远程维护的没有人抱着显示器去机房敲键盘。第二个好处是操作舒服你可以把终端窗口随意缩放、复制粘贴命令不用在虚拟机里手敲。先用ip addr查看虚拟机的IP地址找到ens33或者类似网卡名下面的inet地址记录下来。确保宿主机和虚拟机网络连通后在Windows的PowerShell或者macOS的终端里执行ssh 用户名IP地址输入密码就登录进去了。这一步如果失败九成是网络模式或者防火墙的问题排查思路我放在后面的常见问题章节。登录成功后你的操作界面已经变成了远程终端这时候我建议做第一件正经事给root用户设置SSH登录权限并且改用密钥登录。第一次作业用密码登录就行但你要知道有密钥这回事这是生产环境的标配。密钥登录的原理是用一对公钥和私钥做非对称加密把公钥放在服务器上登录时服务器用公钥验证你手里的私钥比密码安全得多。2.3 安装基础工具包与配置软件源Minimal版系统非常干净干净到连vim都没有。所以登录系统后的第一个命令往往就是安装基础工具。在RHEL系里包管理命令是dnf老一点的教程会让你用yum其实现在yum只是指向dnf的软链接你用哪个效果都一样。强烈建议先执行dnf update把系统所有软件包更新到最新。这一步会下载几百个软件包耗时看网速但必须做因为新装的系统源里的软件版本可能滞后更新后才能避免一些奇奇怪怪的依赖报错。然后按这个清单安装基础工具vim、wget、curl、tar、unzip、net-tools、bash-completion。其中net-tools提供了ifconfig命令虽然ip命令已经取代它了但老旧习惯一时难改装上不亏。包管理器的核心就是解决软件依赖问题相当于你去餐馆点菜服务员会帮你把菜品所需的所有配料都准备好。dnf会自动分析你要装的包依赖哪些其他包然后全部装上你不需要手动一个个去解决。理解这一点你后面装东西遇到依赖冲突时就不会抓瞎。3. 核心命令体系作业复习重点与实操案例3.1 文件和目录操作绕不开的日常第一次作业里出现频率最高的命令一定是ls、cd、cp、mv、rm、mkdir这些文件操作。表面看它们很简单但你得把每个命令的常用参数吃透才能写出高效的组合拳。ls不加参数只列出文件名但加上-l能看到权限、属主、大小、修改时间加上-a能看到隐藏文件加上-h能人性化显示文件大小。我习惯把它们组合成ll用其实就是ls -alh的别名。看命令帮助时不要硬背你只需要记住ls有-l、-a、-h这三个参数其他临时用man查就行。cd是切换目录新手最容易混淆的是相对路径和绝对路径。绝对路径从根/开始写比如cd /etc/nginx相对路径从当前位置开始写比如cd ../conf。我给你的记忆口诀是一横杠表示回到上一个目录也就是cd -两个点表示返回上一级目录即cd ..一个点是当前目录cd .。别笑这个细节面试还真爱考。rm -rf是新人第一杀手尤其当你在root权限下执行rm -rf /时系统不会问你“你确定吗”而是直接把整个文件系统给你删了。我的规矩是删除操作先ls确认路径再用rm命令而且能用rm -i交互确认就别用rm -rf。如果你实在心惊胆战可以给rm设置别名让它默认加-i参数在bashrc里写alias rmrm -i删文件时就会逐个确认。文件查看方面cat用来查看小文件less用来翻页查看大文件tail -f用来实时跟踪日志输出。这三个命令对应三种场景分别记住就行。tail -f在排障时特别好用你可以在一个终端窗口里tail -f应用的日志文件另一个窗口里触发操作日志实时滚动问题一目了然。3.2 用户与权限理解rwx和属主属组用户和权限是Linux安全体系的基石也是面试题的常客。你应该知道Linux是一个多用户操作系统每个文件都有三个权限位分别给属主、属组和其他人每个权限位由r读、w写、x执行组成。大写字母组合让你看权限数字化表示让你算权限r等于4w等于2x等于1三个权限位相加得到一个数字。比如rwx是7rw-是6r--是4。chmod 755 file的意思就是属主有rwx权限、属组和其他人只有r-x权限。掌握这个换算规律你设置权限时根本不用查表。新建用户用useradd和passwd的组合。useradd创建用户passwd设置密码。这里有个细节RHEL系里useradd默认会创建与用户名同名的用户组并且用户的home目录是/home/用户名shell是/bin/bash。如果你想要自定义的配置可以用useradd -u指定UID-g指定主组-s指定shell。用户管理还有一个高频命令是usermod它用来修改已有用户的属性。把用户加入某个组用usermod -aG 组名 用户名-a参数代表追加不加的话会把人从原组里踢掉很多人在这吃亏。第一次作业里如果要求你新建用户并赋予sudo权限标准做法就是usermod -aG wheel 用户名wheel组在RHEL系里是管理组拥有sudo权限。改密码有个常见误区普通用户修改自己的密码只需要执行passwd而root修改其他用户的密码则要用passwd 用户名。忘记密码的时候进入单用户模式重置这个操作我建议你要么不试要么在虚拟机快照的保护下试不会搞坏系统。3.3 进程查看与端口排查思路进程管理这块第一次作业大概率会让你列出当前系统有哪些进程或者杀掉某个进程。核心命令是ps和top杀进程用kill。ps -ef是最常用的全格式查看方式能显示PID进程号、PPID父进程号、CPU占用率、启动时间、运行命令等字段。如果你想精确查找某个进程使用ps -ef | grep 关键字比如查nginx进程就是ps -ef | grep nginx。注意grep会把自己也匹配进去输出结果里会有一条grep相关的行这是个老梗别被误导。top命令类似Windows的任务管理器每三秒刷新一次按CPU使用率排序展示所有进程。在top界面按P按CPU排序按M按内存排序按q退出。排查问题时首先看PID、%CPU、%MEM三列如果某个进程占用持续飙高就要引起警惕。kill命令默认发送TERM信号请求进程自己优雅退出而kill -9发送的是KILL信号强制杀死进程。新手解决问题图省事直接kill -9我劝你少用。先kill试试等几秒看进程还在不在不行再kill -9。有些程序被kill -9打断会留下脏数据得不偿失。查找端口占用时用ss -lntp或者netstat -tlnp能看到哪个端口被哪个进程监听这是排查“端口被占用”问题最直接的工具。3.4 文本处理三剑客grep、awk、sed作业里如果出现了“统计某文件里包含某个单词的行数”“按列提取某一段内容”“批量替换文本”这类需求你就需要grep、awk、sed出手了。这三个命令是文本处理的核心学会它们你的Linux操作水平就上一个档次。grep的本质是搜索匹配行基础用法是grep 关键词 文件加上-c统计行数加上-i忽略大小写加上-r递归目录。有个很实用的组合是grep -n输出匹配行时顺便把行号打出来定位代码问题时特别好用。awk是用来按列取数据的默认以空格为分隔符$1代表第一列$2代表第二列以此类推。我从日志文件里提取IP地址时就用awk {print $1}配合sort和uniq还能做统计比如单看某IP访问了多少次。sed用来做替换操作最顺手基础格式是sed s/旧内容/新内容/g 文件s代表替换g代表全部替换而不是只换第一处。注意sed默认只修改输出不直接改文件想真正写入文件得加-i参数。第一次用-i时一定要先备份原文件我见过把配置改错后找不到原始文件的悲剧。4. 系统管理基本功与常见配置实战4.1 systemd管理服务从SysV到现代Linux服务管理这一块早期SysV初始化用service和chkconfig命令现在主流的systemd则用systemctl。第一次作业里如果要求“启动某个服务并设置开机自启”答案必然是systemctl start和systemctl enable。service命令的时代服务脚本分散在/etc/init.d/目录里互相之间没有依赖关系管理启动顺序靠数字编号硬排非常麻烦。systemd把服务都做成unit文件放在/usr/lib/systemd/system/目录下unit之间可以声明依赖关系systemd会帮你自动排序启动效率高很多。理解这个变化你在看老教程时就不会被service和systemctl搞晕。systemctl的常用命令我列一个速查清单systemctl start 服务名启动服务systemctl stop停服务systemctl restart重启服务systemctl status看运行状态systemctl enable设开机自启systemctl disable取消开机自启。注意RHEL系的服务名后面不需要加.service后缀systemctl会自动补全但你加上也不会错。4.2 网卡配置与网络连通性排查网络这块第一次作业通常要求你手动配置IP地址或者排查网络不通的问题。RHEL系的网卡配置文件在/etc/NetworkManager/system-connections/目录下老版本是/etc/sysconfig/network-scripts/ifcfg-网卡名格式长这样[connection] idens33 typeethernet interface-nameens33 [ipv4] address1192.168.1.100/24,192.168.1.1 methodmanual [ipv6] methodignore看到这个格式你可能有点懵其实核心就三行methodmanual表示静态配置address1那一行前半部分是IP和掩码后半部分是网关。如果用DHCP自动获取把method改成auto就行。排查网络不通的思路我建议按层次来先ping 127.0.0.1看网卡协议栈本身通不通再ping网关看局域网通不通然后ping 8.8.8.8看外网通不通。哪一步不通问题就在哪一段。另外DNS要单独测用nslookup或者dig无法解析域名时多半是DNS配置问题而不是网络断了。4.3 Linux安装Docker第一次项目的重头戏你搜索热词里一定有“Linux安装Docker”这几乎已经成为第一次作业的标配扩展题。Docker是什么可以理解成一个超轻量级的虚拟机但它不模拟完整操作系统而是直接共享宿主机内核通过资源隔离技术管理进程和文件。安装Docker的步骤我直接给你走一遍。先更新系统然后安装依赖工具接着添加Docker官方仓库最后安装docker-ce。完整命令如下sudo dnf remove docker docker-client docker-common docker-engine sudo dnf install -y yum-utils sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install -y docker-ce docker-ce-cli containerd.io安装完成后启动Docker服务并设置开机自启sudo systemctl start docker sudo systemctl enable docker验证安装是否成功执行docker version能看到Client和Server两段版本信息就对了。如果只有Client没有Server说明docker engine没启动检查systemctl status docker的状态。再进一步用docker ps查看当前容器列表新建跑一个测试容器docker run hello-world这个镜像很小会打印一段欢迎信息代表Docker可以正常拉取和运行镜像。国内用户配置镜像加速器是一件不得不做的事因为默认的Docker Hub源在有些网络环境下极不稳定。在/etc/docker/daemon.json里写入镜像加速地址然后systemctl daemon-reload重启Docker。镜像加速的原理是Docker客户端会先从配置的镜像仓库拉取镜像而不是直接访问Docker Hub速度差异非常明显。daemon.json的格式长这样{ registry-mirrors: [https://docker.mirrors.example.com] }4.4 在Linux上安装Java与Python环境作业如果需要配置开发环境那Java JDK和Python就是最常见的两个。先说JDKRHEL系里最简单的安装方式是直接使用发行版自带的OpenJDKsudo dnf install -y java-1.8.0-openjdk-devel。安装后需要设置JAVA_HOME环境变量用update-alternatives --config java查到JDK的安装路径然后把下面几行写入/etc/profile或者当前用户的~/.bashrc里export JAVA_HOME/usr/lib/jvm/java-1.8.0-openjdk export CLASSPATH.:$JAVA_HOME/lib export PATH$JAVA_HOME/bin:$PATH环境变量这个知识点第一次作业很容易考。本质就是告诉操作系统“你找可执行程序时除了默认目录也去JAVA_HOME/bin下面找。”写完配置文件后source /etc/profile让环境变量立即生效再执行java -version验证。如果你需要的是Oracle JDK就去Oracle官网下tar包解压到/usr/local/java目录后手动配置环境变量原理和上面一样只是多了一步解压和移动。Python这边更简单CentOS/RHEL系自带的Python3版本可能偏旧但运行大部分脚本没问题。先用python3 --version确认当前版本如果需要新版用dnf install python3.11安装指定版本然后通过update-alternatives把python3命令切换到新版本。Python的包管理工具pip也要顺手确认一下没装的话dnf install python3-pip。5. 踩坑实录与问题排查技巧5.1 虚拟机安装Linux蓝屏和网络连不上的典型解法学生在第一次作业中最常问的就是两个坑虚拟机安装Linux时宿主机蓝屏以及安装完网络不通。蓝屏这个问题大概率出在VMware和Windows的Hyper-V功能冲突上或者虚拟机启用了嵌套虚拟化而CPU不支持。解决办法是检查Windows功能里有没有开启Hyper-V如果开了和VMware二选一保留一个就好。VirtualBox相对少冲突但新版在Secure Boot开启时也有驱动问题进BIOS关掉Secure Boot即可。网络不通的排查我之前提过思路这里再说一个细节安装系统时默认网卡可能处于未激活状态需要nmcli命令来启用。执行nmcli device status查看网卡状态如果显示unmanaged或者disconnected执行nmcli device connect ens33再测试ping网关。如果手动配置了静态IP确保和宿主机在同一个网段掩码和网关不要填错。5.2 包管理器报错和SELinux权限拦截包管理器报错多半是源的问题。执行dnf install报错提示Could not resolve host或者404时先ping通不通网络再确认仓库配置文件里有没有内容。RHEL系自带的源是AppStream和BaseOS如果它们没启用执行dnf repolist全是空这时候去/etc/yum.repos.d/目录下检查.repo文件确保baseurl指向的路径存在并且当前网络能访问。SELinux拦你服务的报错风格很隐蔽log里看不到明确错误但服务就是起不来。比如我配置Nginx监听8080端口systemctl status nginx明明显示active但从外部访问就是不通。查/var/log/audit/audit.log里的AVC denied记录如果有说明SELinux默认只允许Nginx监听80端口。临时办法是setenforce 0关闭SELinux认真一点的办法是用ausearch和sepolicy命令去看具体拦截规则然后用semanage port -a -t http_port_t -p tcp 8080放行端口。工作环境里这套流程是必备技能第一次作业阶段了解即可但方向要知道。5.3 命令没找到与输出看不懂高手的解决姿势新手执行命令提示command not found不要慌九成是命令没安装或者不在PATH里。比如ifconfig没找到就dnf install net-toolsvim没找到就dnf install vim。另一成可能是命令确实存在但路径不在PATH环境变量里这时候用find / -name 命令名 2/dev/null去找它。find命令很强大但记住要加2/dev/null把错误信息过滤掉否则一堆Permission denied会把屏幕刷满。输出看不懂的本质是信息密度太高你要学会抓重点。ps -ef输出里前面一堆列看着吓人真正关心的只有PID和最后面的命令路径。ip addr输出里有四行关键内容lo是回环地址ether是MAC地址inet后面的IP和掩码就是你的地址UP表示网卡已激活。任何长输出你都先找关键词别从头读到尾这是老手和新手在信息处理上的最大区别。6. 实战心得与手边技巧6.1 用alias和bashrc打造你的专属命令环境第一次作业过程中你会发现有些命令组合经常用比如log查看大文件用less但更常见的操作是tail -f。建议直接在~/.bashrc里加别名。我自己的bashrc里常年备着这些alias llls -alh alias lals -A alias lls -CF alias ggrep alias rmrm -i alias vivim加完配置后source ~/.bashrc生效。这个过程会培养你一个观念Linux环境是可以100%自定义的你日常用的命令组合、快捷键、提示符样式都可以按自己的习惯改造这也是为什么老工程师换一台新服务器第一件事就是配bashrc。bashrc再进阶一步就是写shell脚本。第一次作业如果要求“写一个脚本批量处理文件”本质就是把你平时在终端里手动敲的命令按顺序放进一个.sh文件头部加上#!/bin/bash声明然后chmod x 文件名给执行权限最后./文件名运行。脚本编程是Linux的核心能力有兴趣的话推荐看《Linux命令行与Shell脚本编程大全》配合作业练手进步飞快。6.2 从第一次作业到持续精进的行动路径做完了第一次作业你可能觉得Linux不过如此敲敲命令而已。更大的坑在后面权限体系怎么设计才安全服务怎么调优日志怎么分析甚至怎么排查内核问题。这些能力的成长路径我建议是从“会用命令”到“理解原理”再到“能排障”。第一阶段用命令解决具体问题比如文件操作、进程管理、安装软件第二阶段理解文件系统结构、运行级别、systemd unit之间的依赖关系、网络栈的工作方式第三阶段拿到一个故障现场能快速定位是应用问题、系统问题还是网络问题。对应到学习资源第一本书看鸟哥的Linux私房菜基础篇第二本看《Linux系统管理技术手册》第三阶段就可以刷一些线上故障排查案例了。我特别想叮嘱一句多折腾、多踩坑。我第一次用虚拟机时光配网络就折腾了一个晚上第二天发现只是防火墙没放行。这种教训很难从书上看出来但你亲手踩过一次这辈子都不会忘。后面遇到任何问题搜索时记住加“报错关键字操作系统版本”最容易一击命中。我自己的体会是第一次作业其实是一道分水岭跨过去的人会逐渐爱上命令行带来的掌控感跨不过去的人可能从此对Linux敬而远之。希望这篇内容能帮你稳稳跨过去也给你的后续学习留好台阶。后面记得抽空把systemd、权限管理、网络这三个大件的基础打好它们会伴随你整个Linux生涯。
返回列表