Linux系统入门:从发行版选择到核心命令与自动化实战
1. 项目概述:为什么Linux值得你投入时间?
如果你是一位开发者、运维工程师,或者仅仅是对计算机底层运作充满好奇的技术爱好者,那么“Linux系统下的安装与使用”这个标题,对你而言绝不仅仅是一个简单的操作指南。它更像是一张通往一个更广阔、更自由、更高效计算世界的门票。我接触Linux超过十年,从最初在虚拟机里战战兢兢地敲下第一个ls命令,到如今在生产环境的服务器集群上部署和管理复杂的分布式应用,Linux早已从一个“操作系统”变成了我思维和工作流的一部分。
简单来说,Linux是一个开源的、类Unix的操作系统内核。但它的魅力远不止于此。围绕这个内核,诞生了无数个发行版(Distribution),比如我们熟知的Ubuntu、CentOS、Debian、Fedora等。每个发行版都像是一个“全家桶”,将Linux内核、软件包管理工具、图形界面(可选)和各种应用软件打包在一起,形成了各具特色的操作系统。学习Linux,核心就是学习如何与这个系统高效地“对话”,通过命令行(Shell)来指挥它完成一切任务,从文件管理、软件安装、系统监控到网络配置和自动化脚本编写。
那么,学习Linux能解决什么问题?首先,掌控感。在图形界面(GUI)下,你只能使用软件设计者提供的有限功能。而在命令行界面(CLI)下,你几乎可以操控系统的每一个角落,通过组合简单的命令完成极其复杂的任务。其次,效率与自动化。批量处理文件、定时执行任务、一键部署环境,这些在Linux下通过脚本可以轻松实现,将你从重复劳动中解放出来。最后,职业竞争力。无论是后端开发、云计算、运维、网络安全还是大数据,Linux都是事实上的标准环境。熟练掌握Linux,是你技术栈中不可或缺的基石。
这篇文章,我将从一个资深使用者的角度,带你从零开始,完成Linux的安装,并深入核心的使用环节。我不会只告诉你“怎么做”,更会解释“为什么这么做”,并分享那些只有踩过坑才能获得的实战经验。无论你是完全的新手,还是有一定基础想查漏补缺,都能在这里找到有价值的内容。
2. 发行版选择与安装前的关键决策
在真正动手安装之前,选择一个合适的Linux发行版是至关重要的一步。这就像选择一辆车,家用轿车、越野车、跑车各有侧重,选错了会非常痛苦。网上有上百个发行版,但对我们大多数人来说,聚焦在几个主流且社区活跃的版本上就足够了。
2.1 主流发行版深度对比与选型建议
选择发行版主要看三个维度:易用性、稳定性、社区/生态。下面这个表格是我根据多年经验整理的几个最主流发行版的对比:
| 发行版 | 适合人群 | 软件包管理 | 特点与优势 | 潜在挑战 |
|---|---|---|---|---|
| Ubuntu | 绝对新手、桌面用户、开发者 | apt(.deb) | 用户基数最大,文档和社区支持无敌。桌面环境(如GNOME)友好,驱动支持好,开箱即用。有LTS(长期支持)版本,提供5年安全更新,兼顾新潮与稳定。 | 默认集成了一些你可能不需要的软件(如Snap)。较新的版本有时会引入一些有争议的改动。 |
| Debian | 追求极致稳定性的服务器、资深用户 | apt(.deb) | Ubuntu的“父亲”,以“坚如磐石”的稳定性著称。软件版本偏旧但经过充分测试,是生产环境服务器的绝佳选择。 | 对新手不够友好,安装过程可能需要手动配置更多项目。硬件驱动支持可能不如Ubuntu及时。 |
| CentOS / Rocky Linux | 企业级服务器运维、需要与RHEL兼容 | yum/dnf(.rpm) | 社区版的Red Hat Enterprise Linux (RHEL),完全免费且与RHEL二进制兼容。稳定性极强,生命周期长(通常10年),是企业后端服务的标准选择之一。 | 软件版本非常保守,桌面体验较弱。CentOS Stream改变了定位,Rocky Linux是其继任者。 |
| Fedora | 技术爱好者、追求最新技术的开发者 | dnf(.rpm) | Red Hat的“试验田”,总是率先集成最新的内核和开源技术(如Wayland、PipeWire)。是体验Linux前沿特性的好选择。 | 版本更新快(每半年),生命周期短(约13个月),不适合求稳的生产服务器。 |
| Arch Linux | 极客、希望完全掌控系统、学习Linux内部机制 | pacman | 滚动更新,永远用最新软件。安装过程是极佳的学习体验,需要从头手动配置系统。Wiki文档质量极高。 | 安装和使用门槛高,需要使用者有较强的排错能力和学习意愿。偶尔的滚动更新可能导致系统暂时不稳定。 |
我的个人建议:
- 如果你是第一次接触Linux,想用于日常学习和开发:无脑选择Ubuntu LTS版。它极大地降低了入门门槛,让你能把精力集中在学习Linux本身,而不是折腾系统。下载22.04 LTS或24.04 LTS版本。
- 如果你目标是从事运维,或搭建一个长期运行的服务器(如网站、数据库):选择Rocky Linux 9或AlmaLinux 9。它们继承了CentOS的衣钵,提供了企业级的稳定性和支持周期。
- 如果你已经有一定基础,喜欢折腾,想深入了解系统:可以尝试Fedora或挑战Arch Linux(建议先在虚拟机里尝试)。
注意:不要陷入“发行版鄙视链”的怪圈。工具是为人服务的,选择一个能让你快速上手并持续使用的发行版,远比选择一个“高大上”但让你寸步难行的发行版重要得多。
2.2 安装环境准备:物理机、虚拟机还是云服务器?
决定了发行版,接下来要决定在哪里安装。主要有三种方式:
物理机安装:直接将Linux安装在你的电脑硬盘上,替换或与Windows/macOS共存(双系统)。
- 优点:性能无损,可以完全利用硬件资源。
- 缺点:有风险(操作失误可能导致数据丢失),切换系统需要重启。
- 适合:打算将Linux作为主力系统,或拥有备用机器的用户。
- 关键准备:务必备份重要数据!准备一个8GB以上的U盘制作启动盘。
虚拟机安装:使用VirtualBox、VMware Workstation Player(免费)等软件,在你的现有系统(Windows/macOS)里模拟一台电脑来运行Linux。
- 优点:安全、无风险、可快照(随时回滚到之前状态)、方便测试。
- 缺点:性能有损耗(特别是图形和I/O),体验不完全原生。
- 适合:绝大多数初学者和测试场景的首选。学习、实验、尝试危险操作的最佳环境。
- 关键准备:确保主机内存足够(建议至少8GB,分2-4GB给虚拟机),开启CPU的虚拟化支持(VT-x/AMD-V,在BIOS/UEFI中设置)。
云服务器:直接在阿里云、腾讯云、AWS等云服务商购买一台虚拟服务器(ECS/EC2),通常已经预装了Linux。
- 优点:随时随地可访问,接近生产环境,无需关心硬件。
- 缺点:需要付费,网络操作有延迟(取决于你的网络)。
- 适合:部署对外服务,学习服务器管理,或需要一个永久在线的Linux环境。
对于新手,我强烈推荐从虚拟机开始。它能给你一个安全的沙箱,让你大胆尝试而无需担心搞坏主机。下面,我将以在VirtualBox中安装Ubuntu 22.04 LTS为例,详解安装过程,其他发行版和环境原理相通。
3. 从零开始:手把手完成Ubuntu安装
安装过程本身并不复杂,但其中的一些选项却决定了你后续使用的体验。我们一步步来。
3.1 制作安装介质与虚拟机配置
首先,从Ubuntu官网下载22.04 LTS的ISO镜像文件。然后,打开VirtualBox,点击“新建”。
- 名称和类型:名称随意,如“MyUbuntu”。类型选“Linux”,版本选“Ubuntu (64-bit)”。
- 内存大小:建议分配2048MB(2GB)或以上。如果你的主机内存有16GB,分配4GB会更流畅。
- 硬盘:选择“现在创建虚拟硬盘”。类型用默认的VDI即可。分配方式选择“动态分配”,这样虚拟机硬盘文件不会立刻占满你指定的全部大小,而是随着使用增长。大小建议至少25GB,如果你想在里面安装很多软件,可以给到40-50GB。
创建完成后,不要急着启动。选中新建的虚拟机,点击“设置”。
- 系统 -> 处理器:根据你主机CPU的核心数,分配2个或更多的处理器核心,能显著提升性能。
- 显示 -> 屏幕:将“显存大小”拉到128MB,并务必勾选“启用3D加速”,这对桌面流畅度影响巨大。
- 存储:点击“没有盘片”的光驱图标,在“分配光驱”右侧的光盘图标处选择“选择磁盘文件”,找到你下载的Ubuntu ISO文件。
- 网络:默认的“网络地址转换(NAT)”即可,它能让虚拟机共享主机的网络上网。
3.2 图形化安装过程详解与选项释义
启动虚拟机,它会从ISO镜像引导,进入Ubuntu安装界面。
- 选择语言:选择中文(简体),后续安装界面会变成中文。
- 键盘布局:保持“Chinese”即可。
- 安装类型:这是关键一步。
- 正常安装:会安装浏览器、办公套件等常用软件,适合桌面用户。
- 最小安装:只安装最基本的系统和核心工具,非常干净。我推荐选择“最小安装”,一来节省空间和时间,二来你需要什么软件可以后续用命令精准安装,避免一堆用不上的软件。
- 下方还有一个“安装Ubuntu时下载更新”和“为图形或无线硬件安装第三方软件”。建议都勾选上。前者能在安装过程中就打好安全补丁,后者会安装闭源的显卡驱动和Wi-Fi固件,对硬件兼容性更好。
- 安装类型(磁盘分区):在虚拟机中,我们选择最省事的“清除整个磁盘并安装Ubuntu”。VirtualBox会为我们创建好的虚拟硬盘上自动分区。如果在物理机上安装双系统,这里要万分小心,选择“其他选项”进行手动分区,避免误删Windows数据。
- 时区与用户:在地图上点击上海或输入“Shanghai”设置时区。然后创建你的第一个用户。这里注意:
- 你的姓名:可以填你的英文名或拼音,这会显示在登录界面和终端提示符里。
- 计算机名:给你的这台机器起个名字,会用于网络识别。
- 用户名:这是你登录和执行命令时使用的账户名,建议用小写字母和数字,不要用空格和特殊字符,例如
zhangsan。 - 密码:设置一个强密码。下方有一个“自动登录”选项,为了方便可以勾选,但出于安全考虑,服务器环境绝对不要勾选。
- 点击“继续”,安装程序就会开始复制文件。这个过程大概10-20分钟,取决于你的硬盘速度。完成后,提示重启,点击“现在重启”。重启时,VirtualBox可能会提示“请弹出安装介质后按回车”,你只需要在VirtualBox的菜单栏选择“设备 -> 光学驱动器 -> 移除虚拟盘”,然后按回车即可。
重启后,你就进入了全新的Ubuntu桌面环境!恭喜你,万里长征第一步已经完成。
4. 初入系统:必须掌握的终端与核心命令
安装完成后,面对干净的桌面,你可能有点茫然。别急,Linux的真正力量,藏在那个叫“终端”(Terminal)的黑框框里。你可以按Ctrl+Alt+T快捷键快速打开终端。
4.1 终端基础与Shell环境认知
打开终端,你会看到类似zhangsan@myubuntu:~$的提示符。它的结构是用户名@主机名:当前目录$。~符号代表你的家目录(Home Directory),即/home/zhangsan,这是你的个人领地,拥有完全权限。$表示当前是普通用户,如果是#则表示是超级管理员(root)用户。
在终端里,你通过输入命令来与系统交互。命令通常由三部分组成:命令名 [选项] [参数]。选项通常以-或--开头,用于修改命令的行为。例如ls -l /home,其中ls是命令名,-l是选项(表示长格式显示),/home是参数(要查看的目录)。
4.2 文件操作命令:从浏览到管理的全流程
文件系统是Linux的核心。以下命令你必须像呼吸一样自然:
pwd:打印当前工作目录。迷路时的第一反应。ls:列出目录内容。ls:简单列出。ls -l:以长格式列出,显示权限、所有者、大小、时间等详细信息。这个选项最常用。ls -a:列出所有文件,包括以.开头的隐藏文件。ls -lh:-h让文件大小以人类可读的方式(K, M, G)显示,结合-l使用非常方便。
cd:切换目录。cd /home:切换到绝对路径/home。cd Documents:切换到当前目录下的Documents子目录(相对路径)。cd ..:切换到上一级目录。cd ~或cd:直接回到家目录。cd -:切换到上一个所在的目录。
mkdir:创建目录。mkdir new_folder。想创建多级目录加-p选项:mkdir -p project/src/main。touch:创建一个空文件,或更新一个已有文件的时间戳。touch new_file.txt。cp:复制文件或目录。cp file1.txt file2.txt:复制文件。cp -r dir1 dir2:递归复制整个目录(-r选项是关键)。
mv:移动或重命名文件/目录。mv old_name.txt new_name.txt:重命名。mv file.txt /tmp/:移动到/tmp目录。
rm:删除。这是最危险的命令之一,Linux下删除很难恢复。rm file.txt:删除文件。rm -r dir_name:递归删除目录及其内容。- 强烈建议新手先使用
rm -i,它会在删除前询问你确认。你甚至可以设置一个别名:alias rm='rm -i'加入到~/.bashrc文件。
cat:查看文件全部内容。适合小文件。cat file.txt。less/more:分页查看大文件内容。按空格翻页,按q退出。less large_log.log。head/tail:查看文件开头或结尾几行。tail -f app.log是运维神器,-f可以实时追踪文件新增内容,常用于监控日志。
4.3 系统信息与进程管理命令
df -h:查看磁盘空间使用情况。-h同样是人类可读格式。free -h:查看内存使用情况。top或htop:动态查看系统进程和资源占用情况。htop是top的增强版,界面更友好,需要额外安装(sudo apt install htop)。ps:查看进程快照。常用组合ps aux或ps -ef查看所有进程。kill:终止进程。先用ps找到进程ID(PID),然后kill PID。如果普通kill无效,可以kill -9 PID(强制杀死),但这是最后手段。uname -a:查看系统内核版本等信息。history:查看你输入过的命令历史。可以用!编号来快速执行历史中的某条命令。
5. 权限、包管理与用户管理:系统的基石
5.1 理解Linux权限模型:rwx与数字表示
在ls -l的输出中,你会看到类似-rwxr-xr--的字符串,这代表了文件的权限。它分为四段:
- 第一个字符:文件类型(
-普通文件,d目录,l链接等)。 - 第2-4字符:**所有者(user)**的权限。
- 第5-7字符:**所属组(group)**的权限。
- 第8-10字符:**其他用户(others)**的权限。
权限字符r读,w写,x执行。对于目录,x表示可以进入(cd)该目录。
权限也可以用三位八进制数字表示,这是chmod命令常用的方式:
r= 4w= 2x= 1 将同一组权限的值相加。例如rwx= 4+2+1=7,r-x=4+0+1=5,r--=4+0+0=4。 所以rwxr-xr--对应的数字就是754。chmod:修改权限。chmod 755 script.sh将文件设为所有者可读可写可执行,组和其他用户可读可执行。chown:修改文件所有者和所属组。sudo chown zhangsan:developers file.txt将文件所有者改为zhangsan,组改为developers。修改这些属性通常需要sudo权限。
5.2 APT包管理器:软件的安装、更新与卸载
Ubuntu/Debian系列使用apt(Advanced Package Tool) 来管理软件包,这是你日后最常用的命令之一。
- 更新软件源列表:
sudo apt update。这不会更新任何软件,只是从服务器获取最新的软件包列表信息。在安装任何新软件前,都应该先执行此命令。 - 升级已安装的软件包:
sudo apt upgrade。根据上一步获取的列表,升级所有可以升级的软件。如果想连发行版本身一起升级(如从22.04升到24.04),用sudo apt dist-upgrade(需谨慎)。 - 搜索软件包:
apt search keyword。例如apt search python3。 - 安装软件:
sudo apt install package_name。例如sudo apt install vim git htop可以一次性安装多个软件。 - 卸载软件:
sudo apt remove package_name:卸载软件但保留配置文件。sudo apt purge package_name:彻底卸载,同时删除配置文件。
- 查看软件信息:
apt show package_name。 - 清理无用包:
sudo apt autoremove。卸载那些当初作为依赖被安装,但现在已不被任何程序需要的“孤儿”软件包,可以释放空间。
实操心得:
apt命令在下载软件时,有时会因为网络问题速度很慢。可以更换为国内的软件源镜像(如阿里云、清华、中科大源)。具体方法是备份/etc/apt/sources.list文件,然后将其中的archive.ubuntu.com等网址替换为镜像站地址。这是提升体验非常关键的一步。
5.3 用户与组管理:多用户环境下的隔离
Linux是多用户系统,良好的用户管理是安全的基础。
- 添加用户:
sudo adduser new_username。这个命令是交互式的,会提示设置密码等信息。更底层的命令是sudo useradd,但选项较多。 - 删除用户:
sudo deluser username。如果想同时删除其家目录,用sudo deluser --remove-home username。 - 修改密码:
passwd修改自己的密码。sudo passwd username修改其他用户的密码(需要root权限)。 - 切换用户:
su username:切换到指定用户,但环境变量可能不变。su - username或sudo -i -u username:完全切换到该用户的环境,推荐使用。sudo command:以root权限执行单条命令。系统会要求输入当前用户的密码(不是root密码)。这是Ubuntu默认的管理方式,避免了直接使用root账户的风险。
- 添加用户到组:
sudo usermod -aG groupname username。例如将用户加入sudo组,使其拥有管理员权限:sudo usermod -aG sudo username。-aG选项表示“追加到组”,非常重要,如果只用-G会覆盖用户原有的其他组。
6. 网络配置、服务管理与文本编辑
6.1 网络诊断与配置基础
ip addr或ifconfig:查看网络接口和IP地址信息。ifconfig是旧命令,新系统推荐用ip。ping:测试网络连通性。ping -c 4 baidu.com发送4个包后停止。curl和wget:命令行下载工具或测试HTTP服务。curl http://example.com会将网页内容输出到终端,wget则会下载文件。netstat或ss:查看网络连接、路由表、接口统计等。ss -tulnp可以查看所有监听的端口和对应的进程,是排查“端口被占用”问题的利器。systemd-resolve --status或cat /etc/resolv.conf:查看DNS配置。
在Ubuntu中,网络配置现在主要由netplan管理,配置文件在/etc/netplan/目录下,是YAML格式。修改后需用sudo netplan apply生效。
6.2 Systemd服务管理:启动、停止与自启
现代Linux发行版大多使用systemd作为初始化系统和服务管理器。服务(Service)是在后台运行的程序(如Web服务器、数据库)。
- 启动服务:
sudo systemctl start service_name。例如sudo systemctl start ssh。 - 停止服务:
sudo systemctl stop service_name。 - 重启服务:
sudo systemctl restart service_name。 - 查看服务状态:
sudo systemctl status service_name。这是最常用的命令,可以查看服务是否在运行、最近的日志以及可能的错误信息。 - 启用/禁用开机自启:
sudo systemctl enable service_name:启用开机自启。sudo systemctl disable service_name:禁用开机自启。
- 查看所有已启动的服务:
systemctl list-units --type=service --state=running。
6.3 文本编辑器的选择:Vim与Nano
在终端里编辑配置文件是家常便饭。你必须至少熟练掌握一个命令行文本编辑器。
- Nano:简单易用,对新手友好。打开文件:
nano filename。屏幕底部会显示常用的快捷键,如^O(Ctrl+O)保存,^X(Ctrl+X)退出。适合快速编辑小文件。 - Vim:功能极其强大,学习曲线陡峭,但一旦掌握,效率倍增。它是很多资深开发者和运维的标配。
- 打开文件:
vim filename。 - Vim有几种模式,最常搞混新手:
- 正常模式:刚进入Vim时的模式,可以移动光标、删除、复制粘贴文本块,但不能直接输入。按
i进入插入模式。 - 插入模式:可以像普通编辑器一样输入文字。按
Esc键返回正常模式。 - 命令行模式:在正常模式下按
:进入,可以执行保存、退出等命令。
- 正常模式:刚进入Vim时的模式,可以移动光标、删除、复制粘贴文本块,但不能直接输入。按
- 最基础的生存命令:
i-> 进入插入模式。Esc-> 返回正常模式。:w-> 保存文件。:q-> 退出Vim。:wq或ZZ-> 保存并退出。:q!-> 不保存强制退出。
- 打开文件:
踩坑实录:无数新手(包括当年的我)在Vim里编辑完文件后,发现不知道怎么保存退出,狂按键盘最后只能强制关闭终端。记住:先按
Esc确保回到正常模式,然后输入:wq回车。如果你不想保存,就输入:q!回车。
7. Shell脚本与自动化入门
当你需要重复执行一系列命令时,就该Shell脚本登场了。Shell脚本就是一系列命令的集合,保存为一个文本文件。
7.1 编写你的第一个脚本
- 创建一个新文件:
nano hello.sh - 在第一行写入Shebang,指定解释器:
#!/bin/bash - 写入你的命令:
#!/bin/bash # 这是一个注释 echo "Hello, World!" echo "当前时间是:$(date)" echo "当前用户是:$USER" - 保存并退出。
- 赋予脚本执行权限:
chmod +x hello.sh - 运行脚本:
./hello.sh
7.2 脚本核心语法元素
- 变量:
- 定义变量:
name="ZhangSan"(注意等号两边不能有空格)。 - 使用变量:
echo $name或echo ${name}。 - 命令输出赋值给变量:
current_dir=$(pwd)。
- 定义变量:
- 条件判断:
if [ -f "/etc/passwd" ]; then echo "文件存在。" elif [ -d "/tmp" ]; then echo "/tmp 是一个目录。" else echo "都不满足。" fi[ ]是test命令的简写,里面是条件表达式。-f判断是否为文件,-d判断是否为目录。 - 循环:
for循环:for i in {1..5}; do echo "数字:$i" donewhile循环:count=1 while [ $count -le 5 ]; do echo "计数:$count" ((count++)) done
- 函数:
function greet() { local name=$1 # local 声明局部变量 echo "Hello, $name!" } greet "Alice"
7.3 一个实用的自动化示例:备份脚本
假设你想每天备份指定目录到另一个位置,并保留最近7天的备份。
#!/bin/bash # 定义源目录和目标目录 SOURCE_DIR="/home/zhangsan/important_data" BACKUP_DIR="/backup" # 以日期命名备份文件 BACKUP_FILE="backup_$(date +%Y%m%d_%H%M%S).tar.gz" # 创建目标目录(如果不存在) mkdir -p $BACKUP_DIR # 执行备份(使用tar压缩) tar -czf $BACKUP_DIR/$BACKUP_FILE $SOURCE_DIR 2>/dev/null # 检查是否成功 if [ $? -eq 0 ]; then echo "[$(date)] 备份成功:$BACKUP_FILE" else echo "[$(date)] 备份失败!" >&2 exit 1 fi # 删除7天前的备份文件 find $BACKUP_DIR -name "backup_*.tar.gz" -mtime +7 -delete echo "[$(date)] 已清理旧备份。"你可以使用cron定时任务来让这个脚本每天自动运行:执行crontab -e,添加一行0 2 * * * /path/to/your/backup.sh,表示每天凌晨2点执行。
8. 常见问题排查与性能优化实战
8.1 磁盘空间告急?快速定位与清理
当df -h显示磁盘使用率超过90%时,你需要快速找到是哪些文件占用了空间。
- 使用
du命令:sudo du -sh /var/* | sort -rh | head -10。这条命令组合非常强大:du -sh:统计目录大小,以人类可读格式显示。sort -rh:按人类可读的数字逆序排序(最大的在前)。head -10:显示前10行。 这样你就能快速看到/var目录下哪个子目录最大。
- 常见清理目标:
- 日志文件:
/var/log/。可以使用sudo journalctl --vacuum-time=7d清理 systemd 日志(保留7天)。检查特定的应用日志,如nginx、docker的日志。 - APT缓存:
/var/cache/apt/archives/。运行sudo apt clean清理所有已下载的.deb安装包,或者sudo apt autoclean清理过时的包。 - Docker资源:如果用了Docker,
docker system prune -a可以清理无用的镜像、容器、网络等,但需谨慎。 - 用户缓存:
~/.cache/。可以安全删除,但某些程序缓存会重建。
- 日志文件:
8.2 进程卡死或资源占用过高
- 使用
top或htop:直接查看CPU和内存占用排序。按P(CPU)或M(内存)排序。 - 找到罪魁祸首的PID。
- 分析:
- CPU高:可能是程序陷入死循环或计算密集型任务。可以用
strace -p PID跟踪系统调用,或者用perf进行性能剖析。 - 内存高:可能是内存泄漏。观察
top中的RES(常驻内存)和VIRT(虚拟内存)字段。对于Java应用,可以用jstat等工具查看GC情况。
- CPU高:可能是程序陷入死循环或计算密集型任务。可以用
- 终止进程:如果确认需要终止,
kill PID。如果进程不响应,kill -9 PID(强制终止)。
8.3 网络连接故障排查
“我的服务怎么访问不了了?” 按照以下顺序排查:
- 服务是否在运行?
sudo systemctl status service_name。 - 服务是否在监听端口?
sudo ss -tulnp | grep :端口号。如果没输出,说明服务没监听,检查服务配置。 - 防火墙是否放行?Ubuntu默认的防火墙工具是
ufw。查看状态:sudo ufw status。放行端口:sudo ufw allow 端口号/tcp。 - 从本机能否访问?
curl http://localhost:端口号或telnet localhost 端口号。 - 从外部能否访问?检查云服务商的安全组/防火墙规则。在服务器内用
ip addr查看公网IP是否正确绑定。
8.4 系统性能优化点滴
- SSH连接优化:编辑
/etc/ssh/sshd_config,可以设置ClientAliveInterval 60和ClientAliveCountMax 3防止连接超时断开,修改Port为非22端口增加安全性(记得放行新端口)。 - 交换空间(Swap):如果内存不足,系统会使用硬盘作为交换空间,但速度很慢。用
free -h查看。如果物理内存经常用完且Swap使用率高,考虑增加物理内存或优化应用。可以使用swappiness参数(/proc/sys/vm/swappiness,值0-100)调整系统使用Swap的倾向,值越低越倾向于不使用Swap,对于数据库服务器,通常建议调低。 - 文件描述符限制:对于高并发服务(如Web服务器),可能需要增加系统同时打开文件的数量。编辑
/etc/security/limits.conf。
学习Linux是一个持续的过程,它就像一片深邃的海洋,你永远可以潜得更深。但最重要的是,不要被它的浩瀚吓倒。从安装一个虚拟机开始,从每天使用终端完成一件小事开始,从写一个简单的自动化脚本开始。每一次解决问题,每一次读懂一条命令的输出,你都在构建自己对这座庞大系统的理解。记住,遇到错误信息不要慌,把它复制到搜索引擎里,你遇到过的坑,世界上百分之九十九的开发者都踩过,并且很可能已经写下了解决方案。保持耐心,乐于动手,你终将能驾驭这个强大而优雅的系统。
