<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Linux归档 - 帝讯博客</title>
	<atom:link href="https://www.dixunblog.cn/collection/linux/feed" rel="self" type="application/rss+xml" />
	<link>https://www.dixunblog.cn/collection/linux</link>
	<description>致力于打造专业的互联网资讯平台</description>
	<lastBuildDate>Mon, 27 Apr 2026 03:19:55 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://cdn.hyclive.cn/dixunblog/2025/12/cropped-ico-32x32.png</url>
	<title>Linux归档 - 帝讯博客</title>
	<link>https://www.dixunblog.cn/collection/linux</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Linux 基础知识完全指南：从零开始理解 Linux 系统</title>
		<link>https://www.dixunblog.cn/1748.html</link>
					<comments>https://www.dixunblog.cn/1748.html#respond</comments>
		
		<dc:creator><![CDATA[老大]]></dc:creator>
		<pubDate>Mon, 27 Apr 2026 03:19:42 +0000</pubDate>
				<category><![CDATA[技术教程]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Linux 教程]]></category>
		<category><![CDATA[Linux系统]]></category>
		<guid isPermaLink="false">https://www.dixunblog.cn/?p=1748</guid>

					<description><![CDATA[<p>写在前面 很多人第一次听说 Linux，是因为想搭建网站、学习编程，或者工作上要用到服务器。但打开终端看到黑底白字的界面，就开始发懵：这玩意儿和 Windows 完全不一样啊。 其实 Linux 不难理解。它就是个操作系统，和 Windows、macOS 一样，只是设计理念不同。这篇文章把 Linux 的基础知识一次性讲清楚：什么是 Linux、为什么用它、文件系统怎么组织、权限怎么管理、软件怎么安装……看完这篇，你对 Linux 就有个整体认知了。 建议先收藏，以后遇到问题可以对照查阅。 一、什么是 Linux？</p>
<p><a href="https://www.dixunblog.cn/1748.html">Linux 基础知识完全指南：从零开始理解 Linux 系统</a>最先出现在<a href="https://www.dixunblog.cn">帝讯博客</a>。</p>
]]></description>
										<content:encoded><![CDATA[<h2>写在前面</h2>
<p>很多人第一次听说 Linux，是因为想搭建网站、学习编程，或者工作上要用到服务器。但打开终端看到黑底白字的界面，就开始发懵：这玩意儿和 Windows 完全不一样啊。</p>
<p>其实 Linux 不难理解。它就是个操作系统，和 Windows、macOS 一样，只是设计理念不同。这篇文章把 Linux 的基础知识一次性讲清楚：什么是 Linux、为什么用它、文件系统怎么组织、权限怎么管理、软件怎么安装……看完这篇，你对 Linux 就有个整体认知了。</p>
<p>建议先收藏，以后遇到问题可以对照查阅。</p>
<hr />
<h2>一、什么是 Linux？</h2>
<p><img fetchpriority="high" decoding="async" class="size-full wp-image-1749 aligncenter" src="http://cdn.hyclive.cn/dixunblog/2026/04/v2-6a22da24bf48ea75bbbd9bc258851cce_720w.jpg" alt="" width="532" height="300" /></p>
<h3>1.1 Linux 的本质</h3>
<p>Linux 是一个操作系统内核，加上各种软件工具，构成了完整的操作系统。</p>
<p>打个比方：</p>
<ul>
<li><strong>内核</strong>：相当于汽车的发动机，负责驱动硬件、管理资源</li>
<li><strong>外壳（Shell）</strong>：相当于方向盘和操控面板，让用户能操作系统</li>
<li><strong>应用程序</strong>：相当于车上的导航、音响，提供各种功能</li>
</ul>
<p>Linux 内核最早由 Linus Torvalds 在 1991 年开发，后来开源，全世界开发者都能贡献代码。现在 Linux 内核已经非常成熟，驱动了从手机到服务器到超级计算机的各种设备。</p>
<h3>1.2 Linux 和 Windows 的区别</h3>
<table>
<thead>
<tr>
<th>对比项</th>
<th>Windows</th>
<th>Linux</th>
</tr>
</thead>
<tbody>
<tr>
<td>设计理念</td>
<td>商业产品，用户友好</td>
<td>开源免费，技术导向</td>
</tr>
<tr>
<td>操作方式</td>
<td>图形界面为主</td>
<td>命令行为主（也有图形界面）</td>
</tr>
<tr>
<td>权限管理</td>
<td>管理员账户</td>
<td>root 和普通用户分离</td>
</tr>
<tr>
<td>软件安装</td>
<td>下载安装包或商店</td>
<td>包管理器（yum/apt等）</td>
</tr>
<tr>
<td>文件系统</td>
<td>C盘D盘分区</td>
<td>单一树状结构</td>
</tr>
<tr>
<td>配置方式</td>
<td>控制面板</td>
<td>配置文件</td>
</tr>
<tr>
<td>适用场景</td>
<td>个人电脑、办公</td>
<td>服务器、开发、嵌入式</td>
</tr>
</tbody>
</table>
<p>最大的区别：Windows 鼠标点几下就行，Linux 很多操作要敲命令。但命令的优势是效率高、可自动化、能远程操作。</p>
<h3>1.3 Linux 的应用场景</h3>
<p><strong>服务器领域：</strong></p>
<ul>
<li>网站服务器：全球 90% 以上的网站服务器运行 Linux</li>
<li>云计算：阿里云、腾讯云、AWS 的服务器都是 Linux</li>
<li>数据库服务器：MySQL、Redis 通常部署在 Linux</li>
</ul>
<p><strong>开发领域：</strong></p>
<ul>
<li>编程环境：Python、Go、Java 开发者偏好 Linux</li>
<li>容器技术：Docker、Kubernetes 基于 Linux</li>
<li>DevOps：自动化部署、持续集成</li>
</ul>
<p><strong>嵌入式设备：</strong></p>
<ul>
<li>手机：Android 基于 Linux 内核</li>
<li>路由器：家用路由器的系统</li>
<li>智能设备：智能家居、车载系统</li>
</ul>
<p><strong>个人使用：</strong></p>
<ul>
<li>开发者日常开发</li>
<li>系统运维工作</li>
<li>学习计算机原理</li>
</ul>
<p>简单说：服务器上 Linux 是主流，个人电脑上 Windows 是主流。</p>
<hr />
<h2>二、Linux 发行版：选择适合自己的版本</h2>
<h3>2.1 什么是发行版？</h3>
<p>Linux 内核只是核心部分，要变成能用的操作系统，需要加上：</p>
<ul>
<li>图形界面（可选）</li>
<li>常用软件（文本编辑器、浏览器等）</li>
<li>包管理器（安装软件的工具）</li>
<li>系统配置工具</li>
</ul>
<p>不同的组织把这些组合起来，打包成不同的&#8221;发行版&#8221;。</p>
<p>打个比方：内核是面粉，发行版是面条、面包、馒头——原料相同，形态不同。</p>
<h3>2.2 主要发行版介绍</h3>
<p><strong>（1）Ubuntu</strong></p>
<p>最适合新手入门的发行版。</p>
<p>特点：</p>
<ul>
<li>安装简单，图形界面友好</li>
<li>软件丰富，社区活跃</li>
<li>定期发布新版本（每6个月）</li>
<li>有 LTS 版本（长期支持，5年更新）</li>
</ul>
<p>适用人群：新手、个人用户、开发者</p>
<p>下载：ubuntu.com</p>
<hr />
<p><strong>（2）CentOS / Rocky Linux</strong></p>
<p>服务器最常用的发行版。</p>
<p>特点：</p>
<ul>
<li>稳定可靠，适合生产环境</li>
<li>软件版本保守（追求稳定，不求最新）</li>
<li>免费（CentOS 7 及之前）</li>
<li>CentOS 8 停止维护后，推荐用 Rocky Linux 或 AlmaLinux</li>
</ul>
<p>适用人群：运维工程师、服务器部署</p>
<p>注意：CentOS 7 在 2024 年 6 月停止维护，新项目建议用 Rocky Linux。</p>
<hr />
<p><strong>（3）Debian</strong></p>
<p>老牌发行版，Ubuntu 的上游。</p>
<p>特点：</p>
<ul>
<li>极其稳定，软件测试严格</li>
<li>完全社区驱动，非商业</li>
<li>更新周期较长</li>
</ul>
<p>适用人群：追求稳定的服务器用户、技术人员</p>
<hr />
<p><strong>（4）Fedora</strong></p>
<p>Red Hat 的社区版，新技术试验场。</p>
<p>特点：</p>
<ul>
<li>软件版本较新</li>
<li>半年发布一个版本</li>
<li>Red Hat Enterprise Linux（RHEL）的上游</li>
</ul>
<p>适用人群：想体验新技术的开发者</p>
<hr />
<p><strong>（5）Arch Linux</strong></p>
<p>极简主义发行版，高度自定义。</p>
<p>特点：</p>
<ul>
<li>滚动更新（没有版本概念，始终最新）</li>
<li>安装复杂（从零构建）</li>
<li>文档完善（Arch Wiki）</li>
</ul>
<p>适用人群：Linux 高手、追求极致自定义</p>
<hr />
<p><strong>（6）其他常见发行版</strong></p>
<table>
<thead>
<tr>
<th>发行版</th>
<th>特点</th>
<th>适用人群</th>
</tr>
</thead>
<tbody>
<tr>
<td>Mint</td>
<td>基于 Ubuntu，界面类似 Windows</td>
<td>从 Windows 转过来的用户</td>
</tr>
<tr>
<td>openSUSE</td>
<td>德国发行版，企业级稳定</td>
<td>企业用户</td>
</tr>
<tr>
<td>Kali</td>
<td>安全工具预装</td>
<td>安全测试、渗透测试</td>
</tr>
<tr>
<td>Gentoo</td>
<td>从源码编译安装</td>
<td>高级玩家</td>
</tr>
<tr>
<td>Alpine</td>
<td>极小体积（5MB）</td>
<td>容器、嵌入式</td>
</tr>
</tbody>
</table>
<h3>2.3 发行版选择建议</h3>
<p><strong>新手入门：</strong> Ubuntu 或 Mint<br />
<strong>服务器部署：</strong> Rocky Linux / AlmaLinux（替代 CentOS）<br />
<strong>开发环境：</strong> Ubuntu 或 Fedora<br />
<strong>运维学习：</strong> Rocky Linux（和 CentOS 7 用法一样）</p>
<hr />
<h2>三、Linux 文件系统：目录结构详解</h2>
<h3>3.1 单一树状结构</h3>
<p>Linux 没有 Windows 的 C盘D盘概念，所有文件都在一个树状结构里，根目录是 <code>/</code>。</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">/                     根目录
├── bin               可执行命令（所有用户都能用）
├── boot              启动相关文件
├── dev               设备文件（硬件设备在这里）
├── etc               系统配置文件
├── home              用户主目录
│   ├── user1         用户 user1 的主目录
│   └── user2         用户 user2 的主目录
├── lib               库文件
├── media             可移动设备挂载点（U盘等）
├── mnt               临时挂载点
├── opt               可选软件包安装位置
├── proc              进程信息（虚拟文件系统）
├── root              root 用户的主目录
├── run               运行时数据
├── sbin              系统管理命令（只有 root 能用）
├── srv               服务数据
├── sys               系统信息（虚拟文件系统）
├── tmp               临时文件
├── usr               用户程序和数据
│   ├── bin           用户安装的命令
│   ├── lib           用户安装的库
│   ├── local         本地安装的软件
│   └── share         共享数据
└── var               可变数据（日志、缓存等）
    ├── log           系统日志
    ├── cache         缓存数据
    └── lib           应用程序数据</code></pre>
<h3>3.2 重要目录详解</h3>
<p><strong><code>/</code> 根目录</strong></p>
<p>所有文件和目录的起点。不要在根目录放文件，这是系统区域。</p>
<hr />
<p><strong><code>/bin</code> 和 <code>/sbin</code></strong></p>
<p>存放系统命令：</p>
<ul>
<li><code>/bin</code>：所有用户都能执行的命令（ls、cp、cat 等）</li>
<li><code>/sbin</code>：只有 root 能执行的管理命令（reboot、fdisk 等）</li>
</ul>
<p>在 CentOS 7+ 中，这些目录是 <code>/usr/bin</code> 和 <code>/usr/sbin</code> 的软链接。</p>
<hr />
<p><strong><code>/etc</code> 配置文件</strong></p>
<p>系统大部分配置文件都在这里。</p>
<p>重要文件：</p>
<ul>
<li><code>/etc/passwd</code>：用户信息</li>
<li><code>/etc/shadow</code>：用户密码（加密存储）</li>
<li><code>/etc/group</code>：组信息</li>
<li><code>/etc/fstab</code>：磁盘挂载配置</li>
<li><code>/etc/hosts</code>：本地域名解析</li>
<li><code>/etc/resolv.conf</code>：DNS 配置</li>
<li><code>/etc/sysconfig/network-scripts/</code>：网络配置（CentOS）</li>
<li><code>/etc/ssh/sshd_config</code>：SSH 服务配置</li>
<li><code>/etc/nginx/nginx.conf</code>：Nginx 配置（如果安装了）</li>
<li><code>/etc/apt/sources.list</code>：软件源配置（Ubuntu）</li>
<li><code>/etc/yum.repos.d/</code>：软件源配置（CentOS）</li>
</ul>
<p>修改配置文件通常需要 root 权限。</p>
<hr />
<p><strong><code>/home</code> 用户主目录</strong></p>
<p>每个用户有一个专属目录，存放个人文件。</p>
<p>路径格式：<code>/home/用户名</code></p>
<p>比如用户 tom 的主目录是 <code>/home/tom</code>。</p>
<p>用户主目录可以简写为 <code>~</code>，比如：</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">cd ~              # 进入主目录
ls ~/Documents    # 查看主目录下的 Documents</code></pre>
<hr />
<p><strong><code>/root</code> root 用户主目录</strong></p>
<p>root 用户的主目录不在 <code>/home</code>，而是独立的 <code>/root</code>。</p>
<hr />
<p><strong><code>/var</code> 可变数据</strong></p>
<p>存放会经常变化的数据。</p>
<p>重要子目录：</p>
<ul>
<li><code>/var/log</code>：日志文件（查看系统运行情况）</li>
<li><code>/var/cache</code>：缓存数据</li>
<li><code>/var/lib</code>：应用程序数据（数据库文件等）</li>
<li><code>/var/spool</code>：队列数据（邮件队列等）</li>
<li><code>/var/tmp</code>：临时文件（比 <code>/tmp</code> 保留时间更长）</li>
</ul>
<hr />
<p><strong><code>/usr</code> 用户程序</strong></p>
<p>存放用户安装的软件和文档。</p>
<ul>
<li><code>/usr/bin</code>：用户安装的命令</li>
<li><code>/usr/lib</code>：库文件</li>
<li><code>/usr/local</code>：手动安装的软件（非包管理器安装）</li>
<li><code>/usr/share</code>：共享数据（文档、图标等）</li>
</ul>
<hr />
<p><strong><code>/tmp</code> 临时文件</strong></p>
<p>存放临时文件，重启后通常会清空。所有用户都能读写。</p>
<hr />
<p><strong><code>/proc</code> 进程信息</strong></p>
<p>这是一个虚拟文件系统，存放内核和进程信息。文件不是真实存在，而是内存数据的映射。</p>
<p>查看内存信息：</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">cat /proc/meminfo</code></pre>
<p>查看 CPU 信息：</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">cat /proc/cpuinfo</code></pre>
<p>查看某个进程的信息：</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">ls /proc/1234/     # 1234 是进程 PID</code></pre>
<hr />
<p><strong><code>/dev</code> 设备文件</strong></p>
<p>Linux 把硬件设备当作文件来管理，设备文件都在 <code>/dev</code>。</p>
<p>常见设备文件：</p>
<ul>
<li><code>/dev/sda</code>：第一块硬盘</li>
<li><code>/dev/sda1</code>：第一块硬盘的第一个分区</li>
<li><code>/dev/null</code>：黑洞，写入的东西都消失</li>
<li><code>/dev/zero</code>：无限输出 0</li>
<li><code>/dev/tty</code>：终端设备</li>
<li><code>/dev/urandom</code>：随机数生成器</li>
</ul>
<hr />
<p><strong><code>/boot</code> 启动文件</strong></p>
<p>存放系统启动需要的文件：</p>
<ul>
<li>内核文件（vmlinuz）</li>
<li>启动配置（grub）</li>
</ul>
<p>不要随意修改这个目录，否则可能导致系统无法启动。</p>
<hr />
<p><strong><code>/opt</code> 可选软件</strong></p>
<p>一些第三方软件安装在这里，比如 Oracle 数据库。</p>
<hr />
<p><strong><code>/mnt</code> 和 <code>/media</code> 挂载点</strong></p>
<p>挂载外部设备的目录：</p>
<ul>
<li><code>/mnt</code>：手动挂载的设备</li>
<li><code>/media</code>：自动挂载的设备（U盘、光盘）</li>
</ul>
<hr />
<h3>3.3 文件路径概念</h3>
<p><strong>绝对路径</strong></p>
<p>从根目录 <code>/</code> 开始的完整路径。</p>
<p>例子：</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">/etc/passwd
/home/user/Documents/file.txt
/var/log/nginx/error.log</code></pre>
<p><strong>相对路径</strong></p>
<p>从当前目录开始的路径。</p>
<p>例子：</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">Documents/file.txt      # 当前目录下的 Documents
../etc/passwd           # 上级目录下的 etc
./script.sh             # 当前目录下的 script.sh</code></pre>
<p><code>./</code> 表示当前目录，<code>../</code> 表示上级目录。</p>
<hr />
<h2>四、Linux 用户和权限管理</h2>
<h3>4.1 用户概念</h3>
<p>Linux 是多用户系统，可以同时有多个用户登录使用。</p>
<p><strong>用户类型：</strong></p>
<ol>
<li><strong>root 用户</strong>
<ul>
<li>超级管理员，拥有最高权限</li>
<li>能做任何操作（包括删系统）</li>
<li>UID 为 0</li>
</ul>
</li>
<li><strong>普通用户</strong>
<ul>
<li>权限受限，只能操作自己的文件</li>
<li>UID 从 1000 开始（CentOS 7+）</li>
<li>需要用 sudo 执行需要 root 权限的操作</li>
</ul>
</li>
<li><strong>系统用户</strong>
<ul>
<li>运行服务的用户（比如 nginx、mysql）</li>
<li>不能登录系统</li>
<li>UID 通常在 1-999</li>
</ul>
</li>
</ol>
<p><strong>用户信息文件：</strong></p>
<p><code>/etc/passwd</code> 存放用户基本信息：</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">root:x:0:0:root:/root:/bin/bash
user:x:1000:1000::/home/user:/bin/bash</code></pre>
<p>格式：用户名:密码占位:UID:GID:描述:主目录:Shell</p>
<p>密码实际存放在 <code>/etc/shadow</code>，加密存储。</p>
<hr />
<h3>4.2 用户组概念</h3>
<p>用户组是一组用户的集合，方便批量管理权限。</p>
<p>每个用户至少属于一个组（主组），还可以加入多个附加组。</p>
<p><strong>组信息文件：</strong></p>
<p><code>/etc/group</code> 存放组信息：</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">root:x:0:
wheel:x:10:user
user:x:1000:</code></pre>
<p>格式：组名:密码占位:GID:组成员列表</p>
<hr />
<h3>4.3 文件权限详解</h3>
<p>Linux 文件权限分三部分：用户、组、其他人。</p>
<p>每部分有三种权限：</p>
<ul>
<li><strong>r（读）</strong>：值 4，可以查看内容</li>
<li><strong>w（写）</strong>：值 2，可以修改内容</li>
<li><strong>x（执行）</strong>：值 1，可以执行（脚本、程序）</li>
</ul>
<p>权限用数字或字母表示：</p>
<table>
<thead>
<tr>
<th>权限组合</th>
<th>数字</th>
<th>含义</th>
</tr>
</thead>
<tbody>
<tr>
<td>rwx</td>
<td>7</td>
<td>读、写、执行</td>
</tr>
<tr>
<td>rw-</td>
<td>6</td>
<td>读、写</td>
</tr>
<tr>
<td>r-x</td>
<td>5</td>
<td>读、执行</td>
</tr>
<tr>
<td>r&#8211;</td>
<td>4</td>
<td>只读</td>
</tr>
<tr>
<td>-wx</td>
<td>3</td>
<td>写、执行</td>
</tr>
<tr>
<td>-w-</td>
<td>2</td>
<td>只写</td>
</tr>
<tr>
<td>&#8211;x</td>
<td>1</td>
<td>只执行</td>
</tr>
<tr>
<td>&#8212;</td>
<td>0</td>
<td>无权限</td>
</tr>
</tbody>
</table>
<p><strong>权限显示格式：</strong></p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">ls -l file.txt
# 输出：-rw-r--r-- 1 user group 1024 Jan 10 file.txt</code></pre>
<p>解析：</p>
<ul>
<li>第1位：文件类型（<code>-</code> 文件，<code>d</code> 目录，<code>l</code> 链接）</li>
<li>第2-4位：用户权限（rw- = 6）</li>
<li>第5-7位：组权限（r&#8211; = 4）</li>
<li>第8-10位：其他人权限（r&#8211; = 4）</li>
</ul>
<p>所以这个文件的权限是 644。</p>
<hr />
<h3>4.4 目录权限</h3>
<p>目录的权限含义和文件不同：</p>
<ul>
<li><strong>r（读）</strong>：可以查看目录内容（ls）</li>
<li><strong>w（写）</strong>：可以在目录里创建、删除文件</li>
<li><strong>x（执行）</strong>：可以进入目录（cd）</li>
</ul>
<p>要进入目录并查看内容，需要 rx 权限；要修改目录内容，需要 wx 权限。</p>
<hr />
<h3>4.5 特殊权限</h3>
<p>除了普通权限，Linux 还有三种特殊权限：</p>
<p><strong>SUID（4）</strong></p>
<p>设置在可执行文件上，执行时获得文件所有者的权限。</p>
<p>例子：<code>/usr/bin/passwd</code> 有 SUID，普通用户执行时暂时获得 root 权限修改密码。</p>
<p>显示：权限位变成 <code>rws</code></p>
<hr />
<p><strong>SGID（2）</strong></p>
<p>设置在目录上，目录里创建的文件自动继承目录的所属组。</p>
<p>显示：权限位变成 <code>rws</code></p>
<hr />
<p><strong>Sticky Bit（1）</strong></p>
<p>设置在目录上，只有文件所有者才能删除自己的文件。</p>
<p>例子：<code>/tmp</code> 有 Sticky Bit，用户不能删除别人的临时文件。</p>
<p>显示：权限位变成 <code>rwt</code></p>
<hr />
<h3>4.6 修改权限和所有权</h3>
<p><strong>chmod 修改权限：</strong></p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">chmod 755 file.sh          # 用户全权限，其他人 rx
chmod 644 file.txt         # 用户 rw，其他人 r
chmod +x script.sh         # 给所有人加执行权限
chmod -R 755 folder        # 递归修改目录</code></pre>
<hr />
<p><strong>chown 修改所有者：</strong></p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">chown user file.txt        # 改用户
chown user:group file.txt  # 改用户和组
chown -R user:group folder # 递归修改目录</code></pre>
<hr />
<p><strong>chgrp 修改所属组：</strong></p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">chgrp group file.txt       # 改组</code></pre>
<hr />
<h3>4.7 sudo 权限管理</h3>
<p>普通用户需要执行 root 权限命令时，用 sudo。</p>
<p><strong>配置 sudo 权限：</strong></p>
<p>编辑 <code>/etc/sudoers</code>（用 visudo 命令，会检查语法）：</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono "># 允许 user 执行所有命令
user ALL=(ALL) ALL

# 允许 wheel 组成员执行所有命令（CentOS 默认）
%wheel ALL=(ALL) ALL

# 只允许 user 执行特定命令
user ALL=(ALL) /usr/bin/reboot, /usr/bin/systemctl</code></pre>
<p><strong>使用 sudo：</strong></p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">sudo command               # 以 root 执行命令
sudo -u user command       # 以指定用户执行
sudo -l                    # 查看可用 sudo 执行哪些命令</code></pre>
<hr />
<h2>五、Shell 和终端基础</h2>
<h3>5.1 什么是 Shell？</h3>
<p>Shell 是用户和内核之间的桥梁，负责解释用户输入的命令，传给内核执行。</p>
<p>常见 Shell：</p>
<ul>
<li><strong>bash</strong>：最常用的 Shell，几乎所有 Linux 默认使用</li>
<li><strong>zsh</strong>：功能更强，插件丰富（Oh My Zsh）</li>
<li><strong>sh</strong>：最基础的 Shell</li>
<li><strong>dash</strong>：轻量级 Shell，Ubuntu 用它作为 /bin/sh</li>
<li><strong>fish</strong>：友好的交互式 Shell</li>
</ul>
<p>查看当前 Shell：</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">echo $SHELL
# 输出：/bin/bash</code></pre>
<p>查看可用 Shell：</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">cat /etc/shells</code></pre>
<p>切换 Shell：</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">chsh -s /bin/zsh           # 切换到 zsh</code></pre>
<hr />
<h3>5.2 终端和虚拟控制台</h3>
<p><strong>终端（Terminal）</strong></p>
<p>输入命令的界面，可以是：</p>
<ul>
<li>物理终端：以前的字符终端设备</li>
<li>软件终端：终端模拟软件（如 GNOME Terminal、iTerm2）</li>
<li>SSH 远程终端：通过 SSH 连接的终端</li>
</ul>
<p><strong>虚拟控制台</strong></p>
<p>Linux 有多个虚拟控制台（类似多个终端窗口），可以切换：</p>
<ul>
<li>按 Ctrl+Alt+F1~F6：切换到不同控制台</li>
<li>F1 通常是图形界面</li>
<li>F2~F6 是字符界面</li>
</ul>
<p>服务器没有图形界面时，用虚拟控制台登录。</p>
<hr />
<h3>5.3 Shell 基础操作</h3>
<p><strong>命令基本格式：</strong></p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">命令 [选项] [参数]</code></pre>
<p>例子：</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">ls -l /home               # 命令 ls，选项 -l，参数 /home
cp -r folder1 folder2     # 命令 cp，选项 -r，参数 folder1 和 folder2</code></pre>
<p><strong>选项格式：</strong></p>
<ul>
<li>短选项：<code>-l</code>、<code>-a</code>、<code>-h</code>（单个字母）</li>
<li>长选项：<code>--help</code>、<code>--version</code>（完整单词）</li>
<li>组合短选项：<code>-lah</code> 等于 <code>-l -a -h</code></li>
</ul>
<hr />
<p><strong>常用快捷键：</strong></p>
<table>
<thead>
<tr>
<th>快捷键</th>
<th>功能</th>
</tr>
</thead>
<tbody>
<tr>
<td>Ctrl+C</td>
<td>终止当前命令</td>
</tr>
<tr>
<td>Ctrl+D</td>
<td>退出当前 Shell（等于 exit）</td>
</tr>
<tr>
<td>Ctrl+L</td>
<td>清屏（等于 clear）</td>
</tr>
<tr>
<td>Ctrl+A</td>
<td>光标移到行首</td>
</tr>
<tr>
<td>Ctrl+E</td>
<td>光标移到行尾</td>
</tr>
<tr>
<td>Ctrl+U</td>
<td>删除光标前所有内容</td>
</tr>
<tr>
<td>Ctrl+K</td>
<td>删除光标后所有内容</td>
</tr>
<tr>
<td>Ctrl+R</td>
<td>搜索历史命令</td>
</tr>
<tr>
<td>Tab</td>
<td>自动补全</td>
</tr>
<tr>
<td>Tab Tab</td>
<td>显示所有匹配项</td>
</tr>
</tbody>
</table>
<hr />
<p><strong>命令历史：</strong></p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">history                    # 显示历史命令
history 20                 # 显示最近 20 条
!10                        # 执行第 10 条历史命令
!ls                        # 执行最近的 ls 命令
!!                         # 执行上一条命令
Ctrl+R                     # 搜索历史命令</code></pre>
<p>历史命令保存在 <code>~/.bash_history</code>。</p>
<hr />
<p><strong>命令别名：</strong></p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">alias                      # 显示所有别名
alias ll='ls -lah'         # 设置别名
unalias ll                 # 删除别名</code></pre>
<p>永久生效：写入 <code>~/.bashrc</code>。</p>
<hr />
<p><strong>管道和重定向：</strong></p>
<p>管道 <code>|</code>：把前一个命令的输出传给后一个命令：</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">ls | grep txt              # ls 结果传给 grep 搜索
ps aux | grep nginx        # 进程列表传给 grep
cat file.txt | sort | uniq # 文件内容排序去重</code></pre>
<p>重定向：把输出写入文件：</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">command &gt; file.txt         # 输出到文件（覆盖）
command &gt;&gt; file.txt        # 输出到文件（追加）
command 2&gt; error.txt       # 错误输出到文件
command &gt; file.txt 2&gt;&amp;1    # 标准输出和错误输出都写入文件
command &lt; input.txt        # 从文件读取输入</code></pre>
<hr />
<h3>5.4 通配符</h3>
<p>匹配文件名：</p>
<table>
<thead>
<tr>
<th>通配符</th>
<th>含义</th>
<th>例子</th>
</tr>
</thead>
<tbody>
<tr>
<td>*</td>
<td>匹配任意字符</td>
<td><code>*.txt</code> 匹配所有 txt 文件</td>
</tr>
<tr>
<td>?</td>
<td>匹配单个字符</td>
<td><code>file?.txt</code> 匹配 file1.txt、fileA.txt</td>
</tr>
<tr>
<td>[]</td>
<td>匹配指定字符</td>
<td><code>file[1-3].txt</code> 匹配 file1.txt、file2.txt、file3.txt</td>
</tr>
<tr>
<td>{}</td>
<td>匹配多个选项</td>
<td><code>file{1,2,3}.txt</code> 匹配三个文件</td>
</tr>
</tbody>
</table>
<p>例子：</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">ls *.txt                   # 查看所有 txt 文件
rm file[1-5].txt           # 删除 file1 到 file5
cp *.jpg /home/backup/     # 复制所有 jpg 文件</code></pre>
<hr />
<h3>5.5 环境变量</h3>
<p>环境变量是 Shell 运行时的参数，影响程序行为。</p>
<p><strong>常用环境变量：</strong></p>
<table>
<thead>
<tr>
<th>变量</th>
<th>含义</th>
</tr>
</thead>
<tbody>
<tr>
<td>PATH</td>
<td>命令搜索路径</td>
</tr>
<tr>
<td>HOME</td>
<td>用户主目录</td>
</tr>
<tr>
<td>USER</td>
<td>当前用户名</td>
</tr>
<tr>
<td>SHELL</td>
<td>当前 Shell</td>
</tr>
<tr>
<td>PWD</td>
<td>当前目录</td>
</tr>
<tr>
<td>LANG</td>
<td>语言设置</td>
</tr>
<tr>
<td>PS1</td>
<td>命令提示符格式</td>
</tr>
</tbody>
</table>
<p><strong>查看环境变量：</strong></p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">echo $PATH                 # 显示 PATH
env                        # 显示所有环境变量
printenv PATH              # 显示指定变量</code></pre>
<p><strong>设置环境变量：</strong></p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">export VAR=value           # 设置临时环境变量
VAR=value                  # 设置 Shell 变量（不导出）
export PATH=$PATH:/new/path    # 添加路径到 PATH</code></pre>
<p><strong>永久设置：</strong></p>
<p>写入配置文件：</p>
<ul>
<li><code>~/.bashrc</code>：用户级别，登录时加载</li>
<li><code>~/.bash_profile</code>：用户级别，登录时加载（优先）</li>
<li><code>/etc/profile</code>：系统级别，所有用户</li>
<li><code>/etc/environment</code>：系统环境变量</li>
</ul>
<p>例子（写入 ~/.bashrc）：</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">export JAVA_HOME=/usr/lib/jvm/java-11
export PATH=$PATH:$JAVA_HOME/bin</code></pre>
<p>加载配置：</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">source ~/.bashrc           # 立即生效</code></pre>
<hr />
<h2>六、软件安装和管理</h2>
<h3>6.1 Linux 软件安装方式</h3>
<p>Linux 安装软件主要有三种方式：</p>
<p><strong>（1）包管理器安装</strong></p>
<p>最推荐的方式，自动处理依赖关系。</p>
<ul>
<li>CentOS/RHEL：yum、dnf</li>
<li>Ubuntu/Debian：apt</li>
<li>Arch：pacman</li>
</ul>
<hr />
<p><strong>（2）源码编译安装</strong></p>
<p>下载源码，自己编译。</p>
<p>流程：</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">tar -xzvf source.tar.gz    # 解压
cd source                  # 进入目录
./configure                # 配置（检查依赖）
make                       # 编译
make install               # 安装</code></pre>
<p>优点：可以自定义编译选项。<br />
缺点：麻烦，依赖要自己解决。</p>
<hr />
<p><strong>（3）二进制文件安装</strong></p>
<p>下载编译好的可执行文件，直接运行。</p>
<p>例子：下载 Go 语言官方二进制包，解压后就能用。</p>
<hr />
<p><strong>（4）容器化部署</strong></p>
<p>用 Docker 等容器技术，不直接安装软件，而是运行容器。</p>
<hr />
<h3>6.2 包管理器详解</h3>
<p><strong>yum（CentOS 7）</strong></p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">yum install package        # 安装
yum remove package         # 删除
yum update                 # 更新所有
yum update package         # 更新指定包
yum search keyword         # 搜索
yum list installed         # 已安装列表
yum info package           # 包信息
yum clean all              # 清理缓存</code></pre>
<p>软件源配置：<code>/etc/yum.repos.d/*.repo</code></p>
<hr />
<p><strong>dnf（CentOS 8+/Fedora）</strong></p>
<p>dnf 是 yum 的升级版，命令基本一样：</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">dnf install package
dnf remove package
dnf update
dnf search keyword</code></pre>
<hr />
<p><strong>apt（Ubuntu/Debian）</strong></p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">apt update                 # 更新软件源索引
apt install package        # 安装
apt remove package         # 删除（保留配置）
apt purge package          # 删除（包括配置）
apt upgrade                # 升级所有包
apt search keyword         # 搜索
apt show package           # 包信息
apt list --installed       # 已安装列表
apt autoremove             # 清理无用依赖
apt clean                  # 清理缓存</code></pre>
<p>软件源配置：<code>/etc/apt/sources.list</code></p>
<hr />
<h3>6.3 rpm 和 dpkg（底层包工具）</h3>
<p>直接安装 rpm/deb 文件，不自动解决依赖。</p>
<p><strong>rpm：</strong></p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">rpm -ivh package.rpm       # 安装
rpm -e package             # 删除
rpm -qa                    # 所有已安装包
rpm -qi package            # 包信息
rpm -ql package            # 包安装的文件列表</code></pre>
<hr />
<p><strong>dpkg：</strong></p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">dpkg -i package.deb        # 安装
dpkg -r package            # 删除（保留配置）
dpkg -P package            # 删除（包括配置）
dpkg -l                    # 已安装列表
dpkg -L package            # 包安装的文件列表</code></pre>
<hr />
<h3>6.4 源码安装详解</h3>
<p><strong>下载源码：</strong></p>
<p>通常从官网或 GitHub 下载 <code>.tar.gz</code> 或 <code>.tar.bz2</code> 文件。</p>
<hr />
<p><strong>解压：</strong></p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">tar -xzvf package-1.0.tar.gz     # gzip 格式
tar -xjvf package-1.0.tar.bz2    # bzip2 格式</code></pre>
<hr />
<p><strong>进入目录：</strong></p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">cd package-1.0</code></pre>
<hr />
<p><strong>配置：</strong></p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">./configure</code></pre>
<p>configure 脚本检查系统环境、依赖库，生成 Makefile。</p>
<p>常用选项：</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">./configure --prefix=/usr/local/package    # 指定安装路径
./configure --help                         # 查看可用选项</code></pre>
<p>如果 configure 报错缺少依赖，先安装依赖再重来。</p>
<hr />
<p><strong>编译：</strong></p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">make</code></pre>
<p>make 根据 Makefile 编译源码。这一步可能比较慢。</p>
<hr />
<p><strong>安装：</strong></p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">make install</code></pre>
<p>把编译好的文件复制到系统目录（需要 root 权限）。</p>
<hr />
<p><strong>清理：</strong></p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">make clean                 # 清理编译文件
make distclean             # 清理所有生成的文件</code></pre>
<hr />
<h3>6.5 软件安装位置</h3>
<p>不同安装方式，软件位置不同：</p>
<table>
<thead>
<tr>
<th>安装方式</th>
<th>通常位置</th>
</tr>
</thead>
<tbody>
<tr>
<td>包管理器</td>
<td><code>/usr/bin</code>、<code>/usr/lib</code>、<code>/usr/share</code></td>
</tr>
<tr>
<td>源码安装</td>
<td><code>/usr/local/bin</code>、<code>/usr/local/lib</code></td>
</tr>
<tr>
<td>用户安装</td>
<td><code>~/bin</code>、<code>~/.local/bin</code></td>
</tr>
</tbody>
</table>
<hr />
<h2>七、进程和服务管理</h2>
<h3>7.1 进程概念</h3>
<p>进程是程序的运行实例。一个程序可以有多个进程（比如多个 nginx worker 进程）。</p>
<p><strong>进程属性：</strong></p>
<ul>
<li>PID：进程 ID，唯一标识</li>
<li>PPID：父进程 ID</li>
<li>User：运行进程的用户</li>
<li>State：进程状态（运行、睡眠、停止等）</li>
<li>CPU：CPU 使用率</li>
<li>Memory：内存使用量</li>
</ul>
<p><strong>进程状态：</strong></p>
<table>
<thead>
<tr>
<th>状态</th>
<th>含义</th>
</tr>
</thead>
<tbody>
<tr>
<td>R</td>
<td>运行或就绪</td>
</tr>
<tr>
<td>S</td>
<td>睡眠（等待事件）</td>
</tr>
<tr>
<td>D</td>
<td>不可中断睡眠（等待 IO）</td>
</tr>
<tr>
<td>Z</td>
<td>僵尸进程（已结束但未被回收）</td>
</tr>
<tr>
<td>T</td>
<td>停止（被暂停）</td>
</tr>
</tbody>
</table>
<hr />
<h3>7.2 查看进程</h3>
<p><strong>ps 命令：</strong></p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">ps                         # 当前用户进程
ps aux                     # 所有进程详细信息
ps -ef                     # 另一种格式
ps aux | grep nginx        # 搜索进程</code></pre>
<p>输出解释：</p>
<ul>
<li>USER：用户</li>
<li>PID：进程 ID</li>
<li>%CPU：CPU 使用率</li>
<li>%MEM：内存使用率</li>
<li>STAT：进程状态</li>
<li>COMMAND：命令</li>
</ul>
<hr />
<p><strong>top 命令：</strong></p>
<p>实时监控进程：</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">top</code></pre>
<p>进入 top 后：</p>
<ul>
<li>按 P：按 CPU 排序</li>
<li>按 M：按内存排序</li>
<li>按 k：杀进程</li>
<li>按 q：退出</li>
</ul>
<hr />
<p><strong>htop 命令：</strong></p>
<p>更友好的进程监控：</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">htop</code></pre>
<p>能鼠标操作，支持横向滚动，比 top 好用。</p>
<hr />
<p><strong>pgrep 命令：</strong></p>
<p>查找进程 PID：</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">pgrep nginx                # 查找 nginx 进程
pgrep -u root nginx        # root 用户运行的 nginx</code></pre>
<hr />
<h3>7.3 进程管理</h3>
<p><strong>启动进程：</strong></p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">./program                  # 前台运行
./program &amp;                # 后台运行
nohup ./program &amp;          # 后台运行，不因终端关闭而终止</code></pre>
<hr />
<p><strong>终止进程：</strong></p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">kill PID                   # 正常终止
kill -9 PID                # 强制终止
killall name               # 按名字杀死
pkill name                 # 按名字杀死</code></pre>
<hr />
<p><strong>进程前后台切换：</strong></p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">Ctrl+Z                     # 暂停前台进程（放入后台）
jobs                       # 查看后台作业
bg %1                      # 让作业 1 在后台继续
fg %1                      # 把作业 1 调到前台</code></pre>
<hr />
<h3>7.4 服务概念</h3>
<p>服务是长期运行的进程，通常在后台，响应请求。</p>
<p>比如：</p>
<ul>
<li>nginx：Web 服务</li>
<li>mysql：数据库服务</li>
<li>sshd：SSH 服务</li>
</ul>
<hr />
<h3>7.5 服务管理（systemd）</h3>
<p>现代 Linux 用 systemd 管理服务。</p>
<p><strong>常用命令：</strong></p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">systemctl start service    # 启动服务
systemctl stop service     # 停止服务
systemctl restart service  # 重启服务
systemctl status service   # 查看状态
systemctl enable service   # 设置开机自启
systemctl disable service  # 关闭开机自启
systemctl is-enabled service   # 查看是否开机自启
systemctl list-units --type=service   # 所有服务列表
systemctl daemon-reload    # 重载配置（修改配置后）</code></pre>
<hr />
<p><strong>服务配置文件：</strong></p>
<p>服务配置文件在 <code>/etc/systemd/system/</code> 或 <code>/usr/lib/systemd/system/</code>。</p>
<p>格式示例（nginx.service）：</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">[Unit]
Description=The nginx HTTP and reverse proxy server
After=network.target

[Service]
Type=forking
ExecStart=/usr/sbin/nginx
ExecReload=/usr/sbin/nginx -s reload
ExecStop=/usr/sbin/nginx -s stop

[Install]
WantedBy=multi-user.target</code></pre>
<hr />
<h3>7.6 传统服务管理（CentOS 6）</h3>
<p>老版本用 service 和 chkconfig：</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">service nginx start        # 启动
service nginx stop         # 停止
service nginx restart      # 重启
service nginx status       # 状态

chkconfig nginx on         # 开机自启
chkconfig nginx off        # 关闭自启
chkconfig --list           # 查看所有服务状态</code></pre>
<hr />
<h3>7.7 日志查看</h3>
<p><strong>journalctl（systemd 日志）：</strong></p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">journalctl                 # 所有日志
journalctl -u nginx        # nginx 服务日志
journalctl -f              # 实时查看
journalctl --since today   # 今天日志
journalctl -p err          # 只看错误级别</code></pre>
<hr />
<p><strong>传统日志文件：</strong></p>
<p>日志在 <code>/var/log/</code>：</p>
<ul>
<li><code>/var/log/messages</code>：系统主日志（CentOS）</li>
<li><code>/var/log/syslog</code>：系统主日志（Ubuntu）</li>
<li><code>/var/log/auth.log</code>：认证日志（登录记录）</li>
<li><code>/var/log/nginx/error.log</code>：Nginx 错误日志</li>
<li><code>/var/log/mysql/error.log</code>：MySQL 错误日志</li>
</ul>
<hr />
<h2>八、网络基础知识</h2>
<h3>8.1 网络接口</h3>
<p>Linux 网络接口命名：</p>
<ul>
<li>eth0、eth1：以太网卡（传统命名）</li>
<li>ens33、ens192：新命名规则</li>
<li>lo：本地回环（127.0.0.1）</li>
<li>wlan0：无线网卡</li>
</ul>
<hr />
<h3>8.2 IP 地址配置</h3>
<p><strong>查看 IP：</strong></p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">ip addr                    # 显示所有 IP
ip addr show eth0          # 显示指定接口
ifconfig                   # 传统命令</code></pre>
<hr />
<p><strong>配置 IP：</strong></p>
<p>临时配置：</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">ip addr add 192.168.1.100/24 dev eth0    # 添加 IP
ip link set eth0 up                      # 启用网卡</code></pre>
<p>永久配置：</p>
<p>CentOS：编辑 <code>/etc/sysconfig/network-scripts/ifcfg-eth0</code></p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
ONBOOT=yes</code></pre>
<p>Ubuntu：编辑 <code>/etc/netplan/*.yaml</code>（Ubuntu 18+）</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-yaml">network:
  ethernets:
    eth0:
      addresses: [192.168.1.100/24]
      gateway4: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8]
  version: 2</code></pre>
<hr />
<h3>8.3 DNS 配置</h3>
<p>DNS 配置文件：<code>/etc/resolv.conf</code></p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">nameserver 8.8.8.8
nameserver 114.114.114.114</code></pre>
<hr />
<h3>8.4 网络测试</h3>
<p><strong>ping 测试连通性：</strong></p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">ping 192.168.1.1           # ping IP
ping www.baidu.com         # ping 域名
ping -c 5 192.168.1.1      # ping 5 次</code></pre>
<hr />
<p><strong>traceroute 查看路径：</strong></p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">traceroute www.baidu.com   # 查看路由路径</code></pre>
<hr />
<p><strong>netstat/ss 查看端口：</strong></p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">netstat -tunlp             # 查看 TCP/UDP 端口
ss -tunlp                  # 新命令</code></pre>
<hr />
<p><strong>curl 测试 HTTP：</strong></p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">curl http://www.baidu.com  # 请求网页
curl -I http://www.baidu.com  # 只看响应头</code></pre>
<hr />
<h3>8.5 端口概念</h3>
<p>端口是网络通信的逻辑端点。常用端口：</p>
<table>
<thead>
<tr>
<th>端口</th>
<th>服务</th>
</tr>
</thead>
<tbody>
<tr>
<td>22</td>
<td>SSH</td>
</tr>
<tr>
<td>80</td>
<td>HTTP</td>
</tr>
<tr>
<td>443</td>
<td>HTTPS</td>
</tr>
<tr>
<td>21</td>
<td>FTP</td>
</tr>
<tr>
<td>3306</td>
<td>MySQL</td>
</tr>
<tr>
<td>6379</td>
<td>Redis</td>
</tr>
<tr>
<td>8080</td>
<td>Tomcat/备用HTTP</td>
</tr>
</tbody>
</table>
<hr />
<h2>九、系统启动和关机</h2>
<h3>9.1 启动过程</h3>
<p>Linux 启动流程：</p>
<ol>
<li><strong>BIOS/UEFI</strong>：硬件自检，选择启动设备</li>
<li><strong>MBR/GPT</strong>：读取启动分区</li>
<li><strong>GRUB</strong>：引导加载器，选择启动内核</li>
<li><strong>内核</strong>：加载内核，初始化硬件</li>
<li><strong>systemd</strong>：启动第一个进程（PID 1），管理服务</li>
<li><strong>用户登录</strong>：进入登录界面</li>
</ol>
<hr />
<h3>9.2 运行级别</h3>
<p>运行级别定义系统运行模式：</p>
<table>
<thead>
<tr>
<th>级别</th>
<th>含义</th>
</tr>
</thead>
<tbody>
<tr>
<td>0</td>
<td>关机</td>
</tr>
<tr>
<td>1</td>
<td>单用户模式（维护）</td>
</tr>
<tr>
<td>2</td>
<td>多用户（无网络）</td>
</tr>
<tr>
<td>3</td>
<td>多用户（有网络，无图形）</td>
</tr>
<tr>
<td>4</td>
<td>未定义</td>
</tr>
<tr>
<td>5</td>
<td>多用户（有图形）</td>
</tr>
<tr>
<td>6</td>
<td>重启</td>
</tr>
</tbody>
</table>
<p>systemd 用 target 替代：</p>
<ul>
<li><code>multi-user.target</code>：等于级别 3</li>
<li><code>graphical.target</code>：等于级别 5</li>
</ul>
<p>查看：</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">systemctl get-default      # 查看默认 target
systemctl set-default multi-user.target    # 设置默认</code></pre>
<hr />
<h3>9.3 关机和重启</h3>
<p><strong>关机：</strong></p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">shutdown -h now            # 立即关机
shutdown -h +10            # 10分钟后关机
shutdown -c                # 取消关机
poweroff                   # 立即关机</code></pre>
<p><strong>重启：</strong></p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">reboot                     # 重启
shutdown -r now            # 立即重启</code></pre>
<hr />
<h2>十、常用配置文件详解</h2>
<h3>10.1 用户相关</h3>
<p><strong><code>/etc/passwd</code></strong>：用户信息</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">root:x:0:0:root:/root:/bin/bash</code></pre>
<p>格式：用户名:密码占位:UID:GID:描述:主目录:Shell</p>
<hr />
<p><strong><code>/etc/shadow</code></strong>：密码信息</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">root:$6$xxx:18000:0:99999:7:::</code></pre>
<p>格式：用户名:加密密码:上次修改天数:最小天数:最大天数:警告天数: inactive天数:过期天数:保留</p>
<hr />
<p><strong><code>/etc/group</code></strong>：组信息</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">root:x:0:user1,user2</code></pre>
<p>格式：组名:密码占位:GID:成员列表</p>
<hr />
<h3>10.2 网络相关</h3>
<p><strong><code>/etc/hosts</code></strong>：本地域名解析</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">127.0.0.1       localhost
192.168.1.100   myserver</code></pre>
<hr />
<p><strong><code>/etc/resolv.conf</code></strong>：DNS 配置</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">nameserver 8.8.8.8
nameserver 114.114.114.114</code></pre>
<hr />
<p><strong><code>/etc/sysconfig/network-scripts/ifcfg-eth0</code></strong>：网络接口配置（CentOS）</p>
<hr />
<h3>10.3 系统相关</h3>
<p><strong><code>/etc/fstab</code></strong>：磁盘挂载配置</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">/dev/sda1   /       ext4    defaults    0 1
/dev/sda2   /home   ext4    defaults    0 2</code></pre>
<p>格式：设备 挂载点 类型 选项 dump pass</p>
<hr />
<p><strong><code>/etc/crontab</code></strong>：系统定时任务配置</p>
<hr />
<p><strong><code>/etc/profile</code></strong>：系统环境变量</p>
<hr />
<h3>10.4 服务相关</h3>
<p><strong><code>/etc/ssh/sshd_config</code></strong>：SSH 服务配置</p>
<p>重要配置：</p>
<ul>
<li>Port 22：SSH 端口</li>
<li>PermitRootLogin yes/no：是否允许 root 登录</li>
<li>PasswordAuthentication yes/no：是否允许密码登录</li>
</ul>
<hr />
<p><strong><code>/etc/sudoers</code></strong>：sudo 权限配置</p>
<hr />
<h2>十一、常见问题和解决思路</h2>
<h3>11.1 权限问题</h3>
<p><strong>症状：</strong> 操作提示 Permission denied</p>
<p><strong>原因：</strong> 当前用户没有权限</p>
<p><strong>解决：</strong></p>
<ol>
<li>检查文件权限：<code>ls -l file</code></li>
<li>用 sudo 执行：<code>sudo command</code></li>
<li>修改权限：<code>chmod</code></li>
<li>修改所有者：<code>chown</code></li>
</ol>
<hr />
<h3>11.2 命令找不到</h3>
<p><strong>症状：</strong> Command not found</p>
<p><strong>原因：</strong> 命令未安装或不在 PATH</p>
<p><strong>解决：</strong></p>
<ol>
<li>检查命令是否存在：<code>which command</code></li>
<li>安装命令：<code>yum install package</code> 或 <code>apt install package</code></li>
<li>检查 PATH：<code>echo $PATH</code></li>
<li>添加路径到 PATH：<code>export PATH=$PATH:/new/path</code></li>
</ol>
<hr />
<h3>11.3 端口被占用</h3>
<p><strong>症状：</strong> 服务启动失败，提示端口被占用</p>
<p><strong>解决：</strong></p>
<ol>
<li>查看端口占用：<code>netstat -tunlp | grep 端口</code></li>
<li>杀掉占用进程：<code>kill PID</code></li>
<li>更换服务端口</li>
</ol>
<hr />
<h3>11.4 磁盘空间不足</h3>
<p><strong>症状：</strong> 无法创建文件，提示 No space left</p>
<p><strong>解决：</strong></p>
<ol>
<li>查看磁盘使用：<code>df -h</code></li>
<li>查找大文件：<code>du -sh * | sort -rh | head -10</code></li>
<li>清理日志：<code>rm /var/log/*.log</code>（谨慎）</li>
<li>清理缓存：<code>yum clean all</code> 或 <code>apt clean</code></li>
<li>检查 inode：<code>df -i</code></li>
</ol>
<hr />
<h3>11.5 服务无法启动</h3>
<p><strong>解决：</strong></p>
<ol>
<li>查看状态：<code>systemctl status service</code></li>
<li>查看日志：<code>journalctl -u service</code></li>
<li>检查配置文件语法</li>
<li>检查依赖服务是否启动</li>
</ol>
<hr />
<h3>11.6 SSH 无法登录</h3>
<p><strong>解决：</strong></p>
<ol>
<li>检查 SSH 服务：<code>systemctl status sshd</code></li>
<li>检查端口：<code>netstat -tunlp | grep 22</code></li>
<li>检查防火墙：<code>firewall-cmd --list-all</code></li>
<li>检查配置：<code>/etc/ssh/sshd_config</code></li>
<li>查看日志：<code>journalctl -u sshd</code> 或 <code>/var/log/auth.log</code></li>
</ol>
<hr />
<h2>十二、学习建议</h2>
<h3>12.1 入门路径</h3>
<p>建议学习顺序：</p>
<ol>
<li><strong>安装一个 Linux 系统</strong>：Ubuntu 或 Rocky Linux</li>
<li><strong>熟悉终端操作</strong>：cd、ls、mkdir、rm、cp、mv</li>
<li><strong>理解文件系统</strong>：目录结构和文件路径</li>
<li><strong>学习权限管理</strong>：chmod、chown、sudo</li>
<li><strong>掌握常用命令</strong>：grep、find、tar、vim</li>
<li><strong>了解服务管理</strong>：systemctl</li>
<li><strong>学习 Shell 脚本</strong>：编写自动化脚本</li>
</ol>
<hr />
<h3>12.2 实践建议</h3>
<ol>
<li><strong>不要怕出错</strong>：Linux 错误提示很明确，看错误信息就能知道问题</li>
<li><strong>多用命令手册</strong>：<code>man command</code> 查看详细说明</li>
<li><strong>记录常用命令</strong>：建立自己的命令速查表</li>
<li><strong>搭建实验环境</strong>：用虚拟机或云服务器练习</li>
<li><strong>遇到问题先查日志</strong>：日志能告诉你发生了什么</li>
</ol>
<hr />
<h3>12.3 进阶方向</h3>
<p>掌握基础后，可以学习：</p>
<ul>
<li>Shell 脚本编程</li>
<li>系统运维（监控、备份、安全）</li>
<li>服务部署（Web、数据库、容器）</li>
<li>自动化工具（Ansible、Docker）</li>
</ul>
<hr />
<h2>结语</h2>
<p>这篇把 Linux 的基础知识梳理了一遍：什么是 Linux、发行版怎么选、文件系统结构、用户权限管理、Shell 操作、软件安装、进程服务、网络配置……理解了这些，对 Linux 就有了整体认知。</p>
<p>Linux 不难，难的是一开始的不习惯。多练多用，很快就能上手。遇到问题先看错误信息，再查手册或搜索，大部分问题都能解决。</p>
<p>建议先收藏这篇，以后遇到问题可以对照查阅。</p>
<p><a href="https://www.dixunblog.cn/1748.html">Linux 基础知识完全指南：从零开始理解 Linux 系统</a>最先出现在<a href="https://www.dixunblog.cn">帝讯博客</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dixunblog.cn/1748.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
