<?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>技术分享归档 - 帝讯博客</title>
	<atom:link href="https://www.dixunblog.cn/category/jishushare/feed" rel="self" type="application/rss+xml" />
	<link>https://www.dixunblog.cn/category/jishushare</link>
	<description>致力于打造专业的互联网资讯平台</description>
	<lastBuildDate>Thu, 18 Jun 2026 07:16:54 +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>技术分享归档 - 帝讯博客</title>
	<link>https://www.dixunblog.cn/category/jishushare</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>VLAN划分及二层隔离配置</title>
		<link>https://www.dixunblog.cn/2011.html</link>
					<comments>https://www.dixunblog.cn/2011.html#respond</comments>
		
		<dc:creator><![CDATA[老大]]></dc:creator>
		<pubDate>Thu, 18 Jun 2026 07:16:54 +0000</pubDate>
				<category><![CDATA[技术教程]]></category>
		<category><![CDATA[Vlan]]></category>
		<category><![CDATA[二层隔离]]></category>
		<category><![CDATA[虚拟局域网]]></category>
		<category><![CDATA[路由交换技术]]></category>
		<guid isPermaLink="false">https://www.dixunblog.cn/?p=2011</guid>

					<description><![CDATA[<p>一、VLAN 配置核心逻辑与误区纠正 针对学员在 VLAN 配置中常见的错误认知，讲师从底层原理与配置逻辑两个维度进行了澄清： 1. IP 地址配置的误区澄清 交换机无需配置 IP：明确二层隔离仅依赖端口隔离实现，无需为交换机配置 IP 地址，学员常因配置 IP 导致操作卡顿。 PC 端必须配置 IP：PC 端必须正确配置 IP 地址与子网掩码，但网关（Gateway）在此次二层隔离实验中非必需，可省略。 2. VLAN 配置的核心三步骤 端口类型判定：首要任务是确定交换机端口类型，区分 Access（连接终端）与</p>
<p><a href="https://www.dixunblog.cn/2011.html">VLAN划分及二层隔离配置</a>最先出现在<a href="https://www.dixunblog.cn">帝讯博客</a>。</p>
]]></description>
										<content:encoded><![CDATA[<p data-pm-slice="0 0 []"><img fetchpriority="high" decoding="async" class="size-full wp-image-2012 aligncenter" title="cb0531a91f17ce95b23a5a82ba486994" src="http://cdn.hyclive.cn/dixunblog/2026/06/cb0531a91f17ce95b23a5a82ba486994.png" alt="cb0531a91f17ce95b23a5a82ba486994" width="1827" height="1246" />一、VLAN 配置核心逻辑与误区纠正</p>
<p>针对学员在 VLAN 配置中常见的错误认知，讲师从底层原理与配置逻辑两个维度进行了澄清：</p>
<p>1. IP 地址配置的误区澄清</p>
<p>交换机无需配置 IP：明确二层隔离仅依赖端口隔离实现，无需为交换机配置 IP 地址，学员常因配置 IP 导致操作卡顿。</p>
<p>PC 端必须配置 IP：PC 端必须正确配置 IP 地址与子网掩码，但网关（Gateway）在此次二层隔离实验中非必需，可省略。</p>
<p>2. VLAN 配置的核心三步骤</p>
<p>端口类型判定：首要任务是确定交换机端口类型，区分 Access（连接终端）与 Trunk（连接交换机）链路。</p>
<p>VLAN 成员划分：将 Access 端口加入对应的 VLAN，实现端口与 VLAN 的绑定。</p>
<p>VLAN 放行策略：Trunk 链路必须放行所有需跨交换机通信的 VLAN，否则数据无法通过，这是实现跨交换机通信的关键。</p>
<p>二、实战配置演示与验证</p>
<p>讲师通过现场演示，完成了三台交换机及五台 PC 的 VLAN 配置，并进行了连通性测试：</p>
<p>1. 具体配置指令与技巧</p>
<p>Access 端口配置：连接 PC 的端口需设置为 Access 类型，并加入对应 VLAN（如 `port default vlan 10`）。</p>
<p>Trunk 端口配置：交换机互联端口需设置为 Trunk 类型，并放行 VLAN 10 和 20（如 `port trunk allow-pass vlan 10 20`）。</p>
<p>命令输入效率优化：建议使用 Tab 键自动补全命令，避免逐字输入导致效率低下及拼写错误。</p>
<p>2. 连通性测试结果</p>
<p>同 VLAN 互通验证：PC1、PC2、PC3 同属 VLAN 10，三者之间可正常 Ping 通，证明跨交换机同 VLAN 通信成功。</p>
<p>跨 VLAN 隔离验证：PC3（VLAN 10）无法 Ping 通 PC4（VLAN 20），证明二层隔离生效。</p>
<p>三、视频演示</p>
<div id="player-1" class="b2-player" data-video='{"url":"https:\/\/cdn.hyclive.cn\/dixunblog\/luyoujiaohuanjishu\/Vlan%E4%B8%93%E9%A2%98%E9%85%8D%E7%BD%AE%EF%BC%88%E4%BA%8C%E5%B1%82%E7%AB%AF%E5%8F%A3%E9%9A%94%E7%A6%BB%EF%BC%89.mp4","poster":"https:\/\/cdn.hyclive.cn\/dixunblog\/2026\/06\/\u5c4f\u5e55\u622a\u56fe-2026-06-18-151616.png","logo":"https:\/\/www.dixunblog.cn\/wp-content\/uploads\/2024\/11\/logo_white.png"}'></div>
<p><a href="https://www.dixunblog.cn/2011.html">VLAN划分及二层隔离配置</a>最先出现在<a href="https://www.dixunblog.cn">帝讯博客</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dixunblog.cn/2011.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://cdn.hyclive.cn/dixunblog/luyoujiaohuanjishu/Vlan%E4%B8%93%E9%A2%98%E9%85%8D%E7%BD%AE%EF%BC%88%E4%BA%8C%E5%B1%82%E7%AB%AF%E5%8F%A3%E9%9A%94%E7%A6%BB%EF%BC%89.mp4" length="37598102" type="video/mp4" />

			</item>
		<item>
		<title>《路由交换技术》实现OSPF多区域配置</title>
		<link>https://www.dixunblog.cn/1987.html</link>
					<comments>https://www.dixunblog.cn/1987.html#respond</comments>
		
		<dc:creator><![CDATA[老大]]></dc:creator>
		<pubDate>Mon, 08 Jun 2026 03:15:52 +0000</pubDate>
				<category><![CDATA[技术教程]]></category>
		<category><![CDATA[OSPF]]></category>
		<category><![CDATA[OSPF多区域]]></category>
		<category><![CDATA[动态路由协议]]></category>
		<guid isPermaLink="false">https://www.dixunblog.cn/?p=1987</guid>

					<description><![CDATA[<p>一、基础网络环境搭建 首先完成了底层网络的基础配置，包括终端设备与路由器的IP地址规划及接口配置： 1. 终端设备与基础网络配置 &#8211; PC 终端配置：配置 PC1 地址为 192.168.1.1/24，网关为 192.168.1.254；PC2 地址为 192.168.2.1/24，网关为 192.168.2.254。 &#8211; 路由器接口配置：依次配置 AR1、AR2、AR3 的物理接口 IP 地址，其中 AR1 连接 PC1 网段，AR3 连接 PC2 网段，AR2 作为中间节点连接两个网段。</p>
<p><a href="https://www.dixunblog.cn/1987.html">《路由交换技术》实现OSPF多区域配置</a>最先出现在<a href="https://www.dixunblog.cn">帝讯博客</a>。</p>
]]></description>
										<content:encoded><![CDATA[<p><img decoding="async" class="size-full wp-image-1988 aligncenter" src="http://cdn.hyclive.cn/dixunblog/2026/06/屏幕截图-2026-06-08-111424.png" alt="" width="1443" height="847" /></p>
<p>一、基础网络环境搭建</p>
<p>首先完成了底层网络的基础配置，包括终端设备与路由器的IP地址规划及接口配置：</p>
<p>1. 终端设备与基础网络配置</p>
<p>&#8211; PC 终端配置：配置 PC1 地址为 192.168.1.1/24，网关为 192.168.1.254；PC2 地址为 192.168.2.1/24，网关为 192.168.2.254。</p>
<p>&#8211; 路由器接口配置：依次配置 AR1、AR2、AR3 的物理接口 IP 地址，其中 AR1 连接 PC1 网段，AR3 连接 PC2 网段，AR2 作为中间节点连接两个网段。</p>
<p>2. 配置过程中的纠错与规范</p>
<p>&#8211; 配置纠错演示：在配置 AR1 的 G0/0/0 接口时，讲师演示了因网段配置错误（误配为 .1.254）而进行的删除与重新配置过程，强调了配置前核对接口标签的重要性。</p>
<p>二、OSPF 多区域协议配置</p>
<p>针对多区域 OSPF 的部署，会议详细讲解了区域划分、Router ID 设定及网络宣告的具体操作：</p>
<p>1. 区域划分与 Router ID 设定</p>
<p>&#8211; 区域规划：将 AR1 所在区域划分为 Area 0（骨干区域），AR3 所在区域划分为 Area 1，AR2 作为边界路由器连接两个区域。</p>
<p>&#8211; Router ID 配置：三台路由器均采用 Loopback 接口地址作为 Router ID，分别为 1.1.1.1、2.2.2.2 和 3.3.3.3。</p>
<p>2. 核心网络宣告操作</p>
<p>&#8211; AR1 与 AR3 配置：在 AR1 的 Area 0 内宣告 192.168.12.0 和 192.168.1.0 网段；在 AR3 的 Area 1 内宣告 192.168.23.0 和 192.168.2.0 网段。</p>
<p>&#8211; 边界路由器 AR2 的特殊配置：在 Area 0 内宣告连接 AR1 的 192.168.12.0 网段，在 Area 1 内宣告连接 AR3 的 192.168.23.0 网段。</p>
<p>三、连通性验证与核心要点总结</p>
<p>配置完成后，讲师通过查看路由表及 Ping 测试验证了配置的正确性，并总结了多区域配置的关键注意事项：</p>
<p>1. 路由表分析与连通性测试</p>
<p>&#8211; 路由表检查：在 AR2 上查看路由表，确认学习到了来自 Area 0 的 192.168.1.0 网段和来自 Area 1 的 192.168.2.0 网段，证明 OSPF 路由学习成功。</p>
<p>&#8211; 端到端连通性验证：使用 PC1 Ping PC2 地址 192.168.2.1，测试结果显示网络可达，证明 OSPF 多区域配置成功。</p>
<p>2. 多区域配置的核心要点</p>
<p>&#8211; 边界路由器（ABR）的关键作用：强调边界路由器是连接不同 OSPF 区域的枢纽，一旦故障将导致跨区域通信中断。</p>
<p>&#8211; 网络宣告的区域匹配：必须将接口 IP 地址宣告在正确的区域中，错误的区域宣告将导致网络不通。</p>
<p>&#8211; 直连路由与 OSPF 路由的区别：解释了路由表中直连路由（Direct）与 OSPF 路由（O_ASE）的显示差异，强调直连设备无需通过 OSPF 学习路由。</p>
<p>&nbsp;</p>
<p>实验视频：</p>
<div id="player-2" class="b2-player" data-video='{"url":"https:\/\/cdn.hyclive.cn\/dixunblog\/luyoujiaohuanjishu\/%E5%AE%9E%E7%8E%B0OSPF%E5%A4%9A%E5%8C%BA%E5%9F%9F%E9%85%8D%E7%BD%AE.mp4","poster":"https:\/\/cdn.hyclive.cn\/dixunblog\/2026\/06\/\u5c4f\u5e55\u622a\u56fe-2026-06-08-111424.png","logo":"https:\/\/www.dixunblog.cn\/wp-content\/uploads\/2024\/11\/logo_white.png"}'></div>
<p>&nbsp;</p>
<p>PS：如果想了解单区域配置请查看下方文章</p>
<div class="insert-post b2-radius post">
        <span class="insert-post-bg">
        <picture class="picture" ><source type="image/webp" data-srcset="https://cdn.hyclive.cn/dixunblog/2026/06/640.webp" srcset="https://www.dixunblog.cn/wp-content/themes/b2/Assets/fontend/images/default-img.jpg" /><img decoding="async"  class="b2-radius lazy" data-src="https://cdn.hyclive.cn/dixunblog/2026/06/640.webp"   alt="" src="https://www.dixunblog.cn/wp-content/themes/b2/Assets/fontend/images/default-img.jpg"/></picture>
        </span><div class="insert-post-thumb">
            <a href="https://www.dixunblog.cn/1982.html" target="_blank">
            <picture class="picture" ><source type="image/webp" data-srcset="https://cdn.hyclive.cn/dixunblog/2026/06/640.webp" srcset="https://www.dixunblog.cn/wp-content/themes/b2/Assets/fontend/images/default-img.jpg" /><img decoding="async"  class="b2-radius lazy" data-src="https://cdn.hyclive.cn/dixunblog/2026/06/640.webp"   alt="" src="https://www.dixunblog.cn/wp-content/themes/b2/Assets/fontend/images/default-img.jpg"/></picture>
            </a>
        </div><a href="https://www.dixunblog.cn/1982.html" class="mp-hidden" data-type="post" data-id="1982"></a><a href="javascript:void(0)" class="mp-show" data-type="post" data-id="1982"></a><div class="insert-post-content">
                <h2><a href="https://www.dixunblog.cn/1982.html" target="_blank">《路由交换技术》实现OSPF单区域配置</a></h2>
                <div class="insert-post-meta">
                    <div class="insert-post-meta-avatar mp-hidden-all"><img decoding="async" class="avatar" src="https://www.dixunblog.cn/wp-content/themes/b2/Assets/fontend/images/default-avatar.png" /><a href="https://www.dixunblog.cn/users/1">老大</a></div>
                    <ul class="post-meta">
                        <li class="single-date">
                            <time class="b2timeago" datetime="2026-06-02 09:21:19" itemprop="datePublished">6月2日</time>
                        </li>
                        <li class="single-like">
                            <i class="b2font b2-heart-fill "></i><span class="mp-show">喜欢：</span>0
                        </li>
                        <li class="single-eye">
                            <i class="b2font b2-eye-fill "></i><span class="mp-show">浏览：</span>11
                        </li>
                    </ul>
                </div>
            </div></div>
<p><a href="https://www.dixunblog.cn/1987.html">《路由交换技术》实现OSPF多区域配置</a>最先出现在<a href="https://www.dixunblog.cn">帝讯博客</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dixunblog.cn/1987.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://cdn.hyclive.cn/dixunblog/luyoujiaohuanjishu/%E5%AE%9E%E7%8E%B0OSPF%E5%A4%9A%E5%8C%BA%E5%9F%9F%E9%85%8D%E7%BD%AE.mp4" length="31599363" type="video/mp4" />

			</item>
		<item>
		<title>《路由交换技术》实现OSPF单区域配置</title>
		<link>https://www.dixunblog.cn/1982.html</link>
					<comments>https://www.dixunblog.cn/1982.html#comments</comments>
		
		<dc:creator><![CDATA[老大]]></dc:creator>
		<pubDate>Tue, 02 Jun 2026 01:21:19 +0000</pubDate>
				<category><![CDATA[技术教程]]></category>
		<category><![CDATA[OSPF]]></category>
		<category><![CDATA[OSPF单区域]]></category>
		<category><![CDATA[动态路由协议]]></category>
		<guid isPermaLink="false">https://www.dixunblog.cn/?p=1982</guid>

					<description><![CDATA[<p>实验要求： 根据下方任务需求完成网络拓扑图配置，要求运行OSPF协议，完成IP地址规划和接口互联，使用OSPF单区域进行配置。 实验过程：</p>
<p><a href="https://www.dixunblog.cn/1982.html">《路由交换技术》实现OSPF单区域配置</a>最先出现在<a href="https://www.dixunblog.cn">帝讯博客</a>。</p>
]]></description>
										<content:encoded><![CDATA[<section>实验要求：</section>
<section><span data-pm-slice="0 0 []">根据下方任务需求完成网络拓扑图配置，要求运行OSPF协议，完成IP地址规划和接口互联，使用OSPF单区域进行配置。</span></section>
<section><img decoding="async" class="size-medium wp-image-1983 aligncenter" src="http://cdn.hyclive.cn/dixunblog/2026/06/640.webp" alt="" /></section>
<section>实验过程：</section>
<section><div id="player-3" class="b2-player" data-video='{"url":"https:\/\/cdn.hyclive.cn\/dixunblog\/luyoujiaohuanjishu\/OSPF%E5%8D%95%E5%8C%BA%E5%9F%9F%E9%85%8D%E7%BD%AE%E6%95%99%E7%A8%8B.mp4","poster":"https:\/\/cdn.hyclive.cn\/dixunblog\/2026\/06\/640.webp","logo":"https:\/\/www.dixunblog.cn\/wp-content\/uploads\/2024\/11\/logo_white.png"}'></div></section>
<p><a href="https://www.dixunblog.cn/1982.html">《路由交换技术》实现OSPF单区域配置</a>最先出现在<a href="https://www.dixunblog.cn">帝讯博客</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dixunblog.cn/1982.html/feed</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		<enclosure url="https://cdn.hyclive.cn/dixunblog/luyoujiaohuanjishu/OSPF%E5%8D%95%E5%8C%BA%E5%9F%9F%E9%85%8D%E7%BD%AE%E6%95%99%E7%A8%8B.mp4" length="34306164" type="video/mp4" />

			</item>
		<item>
		<title>《路由交换技术》实现静态路由和默认路由的汇总配置</title>
		<link>https://www.dixunblog.cn/1975.html</link>
					<comments>https://www.dixunblog.cn/1975.html#respond</comments>
		
		<dc:creator><![CDATA[老大]]></dc:creator>
		<pubDate>Thu, 28 May 2026 03:04:25 +0000</pubDate>
				<category><![CDATA[工作]]></category>
		<category><![CDATA[技术教程]]></category>
		<category><![CDATA[路由交换技术]]></category>
		<category><![CDATA[静态路由协议]]></category>
		<category><![CDATA[默认路由]]></category>
		<guid isPermaLink="false">https://www.dixunblog.cn/?p=1975</guid>

					<description><![CDATA[<p>实验要求： 根据下方任务需求完成网络拓扑图配置，要求使用静态路由和默认路由汇总实现配置，使左边两台PC能够和右边三台模拟外网服务器的PC实现互通。 实验过程：</p>
<p><a href="https://www.dixunblog.cn/1975.html">《路由交换技术》实现静态路由和默认路由的汇总配置</a>最先出现在<a href="https://www.dixunblog.cn">帝讯博客</a>。</p>
]]></description>
										<content:encoded><![CDATA[<section data-pm-slice="2 2 []">实验要求：</section>
<section data-pm-slice="2 2 []">根据下方任务需求完成网络拓扑图配置，要求使用静态路由和默认路由汇总实现配置，使左边两台PC能够和右边三台模拟外网服务器的PC实现互通。</section>
<section><img decoding="async" class="size-full wp-image-1976 aligncenter" src="http://cdn.hyclive.cn/dixunblog/2026/05/989f9c25050f102d6604c77a893d87ac.jpg" alt="" width="2127" height="1250" /></section>
<section></section>
<section>实验过程：</section>
<section><div id="player-4" class="b2-player" data-video='{"url":"https:\/\/cdn.hyclive.cn\/dixunblog\/luyoujiaohuanjishu\/%E3%80%8A%E8%B7%AF%E7%94%B1%E4%BA%A4%E6%8D%A2%E6%8A%80%E6%9C%AF%E3%80%8B%E5%AE%9E%E7%8E%B0%E9%9D%99%E6%80%81%E8%B7%AF%E7%94%B1%E5%92%8C%E9%BB%98%E8%AE%A4%E8%B7%AF%E7%94%B1%E7%9A%84%E6%B1%87%E6%80%BB%E9%85%8D%E7%BD%AE.mp4","poster":"https:\/\/cdn.hyclive.cn\/dixunblog\/2026\/05\/989f9c25050f102d6604c77a893d87ac.jpg","logo":"https:\/\/www.dixunblog.cn\/wp-content\/uploads\/2024\/11\/logo_white.png"}'></div></section>
<p><a href="https://www.dixunblog.cn/1975.html">《路由交换技术》实现静态路由和默认路由的汇总配置</a>最先出现在<a href="https://www.dixunblog.cn">帝讯博客</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dixunblog.cn/1975.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://cdn.hyclive.cn/dixunblog/luyoujiaohuanjishu/%E3%80%8A%E8%B7%AF%E7%94%B1%E4%BA%A4%E6%8D%A2%E6%8A%80%E6%9C%AF%E3%80%8B%E5%AE%9E%E7%8E%B0%E9%9D%99%E6%80%81%E8%B7%AF%E7%94%B1%E5%92%8C%E9%BB%98%E8%AE%A4%E8%B7%AF%E7%94%B1%E7%9A%84%E6%B1%87%E6%80%BB%E9%85%8D%E7%BD%AE.mp4" length="36007539" type="video/mp4" />

			</item>
		<item>
		<title>《路由交换技术》分析静态路由配置原理</title>
		<link>https://www.dixunblog.cn/1970.html</link>
					<comments>https://www.dixunblog.cn/1970.html#respond</comments>
		
		<dc:creator><![CDATA[老大]]></dc:creator>
		<pubDate>Thu, 28 May 2026 01:18:02 +0000</pubDate>
				<category><![CDATA[工作]]></category>
		<category><![CDATA[技术教程]]></category>
		<category><![CDATA[路由交换技术]]></category>
		<category><![CDATA[静态路由协议]]></category>
		<guid isPermaLink="false">https://www.dixunblog.cn/?p=1970</guid>

					<description><![CDATA[<p>实验需求： 实验过程：</p>
<p><a href="https://www.dixunblog.cn/1970.html">《路由交换技术》分析静态路由配置原理</a>最先出现在<a href="https://www.dixunblog.cn">帝讯博客</a>。</p>
]]></description>
										<content:encoded><![CDATA[<p>实验需求：</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1971" src="http://cdn.hyclive.cn/dixunblog/2026/05/59e4e9d53306258e29d355708dc3bde3.jpg" alt="" width="1279" height="1312" /></p>
<p>实验过程：</p>
<div id="player-5" class="b2-player" data-video='{"url":"https:\/\/cdn.hyclive.cn\/dixunblog\/luyoujiaohuanjishu\/%E3%80%8A%E8%B7%AF%E7%94%B1%E4%BA%A4%E6%8D%A2%E6%8A%80%E6%9C%AF%E3%80%8B%E5%88%86%E6%9E%90%E9%9D%99%E6%80%81%E8%B7%AF%E7%94%B1%E9%85%8D%E7%BD%AE%E5%8E%9F%E7%90%86.mp4","poster":"https:\/\/cdn.hyclive.cn\/dixunblog\/2026\/05\/59e4e9d53306258e29d355708dc3bde3.jpg","logo":"https:\/\/www.dixunblog.cn\/wp-content\/uploads\/2024\/11\/logo_white.png"}'></div>
<p><a href="https://www.dixunblog.cn/1970.html">《路由交换技术》分析静态路由配置原理</a>最先出现在<a href="https://www.dixunblog.cn">帝讯博客</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dixunblog.cn/1970.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://cdn.hyclive.cn/dixunblog/luyoujiaohuanjishu/%E3%80%8A%E8%B7%AF%E7%94%B1%E4%BA%A4%E6%8D%A2%E6%8A%80%E6%9C%AF%E3%80%8B%E5%88%86%E6%9E%90%E9%9D%99%E6%80%81%E8%B7%AF%E7%94%B1%E9%85%8D%E7%BD%AE%E5%8E%9F%E7%90%86.mp4" length="34290167" type="video/mp4" />

			</item>
		<item>
		<title>《路由交换技术》RIP动态协议改成静态路由协议配置</title>
		<link>https://www.dixunblog.cn/1960.html</link>
					<comments>https://www.dixunblog.cn/1960.html#respond</comments>
		
		<dc:creator><![CDATA[老大]]></dc:creator>
		<pubDate>Wed, 27 May 2026 03:42:36 +0000</pubDate>
				<category><![CDATA[工作]]></category>
		<category><![CDATA[技术教程]]></category>
		<category><![CDATA[RIP动态协议]]></category>
		<category><![CDATA[路由交换技术]]></category>
		<category><![CDATA[静态路由协议]]></category>
		<guid isPermaLink="false">https://www.dixunblog.cn/?p=1960</guid>

					<description><![CDATA[<p>任务要求：将四台路由器由一开始的RIP动态路由协议转换成静态路由协议，要求最终效果不变！</p>
<p><a href="https://www.dixunblog.cn/1960.html">《路由交换技术》RIP动态协议改成静态路由协议配置</a>最先出现在<a href="https://www.dixunblog.cn">帝讯博客</a>。</p>
]]></description>
										<content:encoded><![CDATA[<p><img decoding="async" class="size-medium wp-image-1964 aligncenter" src="http://cdn.hyclive.cn/dixunblog/2026/05/640.webp" alt="" /></p>
<p>任务要求：将四台路由器由一开始的RIP动态路由协议转换成静态路由协议，要求最终效果不变！</p>
<div id="player-6" class="b2-player" data-video='{"url":"https:\/\/cdn.hyclive.cn\/dixunblog\/luyoujiaohuanjishu\/RIP%E5%8A%A8%E6%80%81%E5%8D%8F%E8%AE%AE%E6%94%B9%E6%88%90%E9%9D%99%E6%80%81%E8%B7%AF%E7%94%B1%E5%8D%8F%E8%AE%AE.mp4","poster":"https:\/\/cdn.hyclive.cn\/dixunblog\/2026\/05\/\u6355\u83b7.png","logo":"https:\/\/www.dixunblog.cn\/wp-content\/uploads\/2024\/11\/logo_white.png"}'></div>
<p><a href="https://www.dixunblog.cn/1960.html">《路由交换技术》RIP动态协议改成静态路由协议配置</a>最先出现在<a href="https://www.dixunblog.cn">帝讯博客</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dixunblog.cn/1960.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://cdn.hyclive.cn/dixunblog/luyoujiaohuanjishu/RIP%E5%8A%A8%E6%80%81%E5%8D%8F%E8%AE%AE%E6%94%B9%E6%88%90%E9%9D%99%E6%80%81%E8%B7%AF%E7%94%B1%E5%8D%8F%E8%AE%AE.mp4" length="28540011" type="video/mp4" />

			</item>
		<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 loading="lazy" 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>
		<item>
		<title>Linux 命令大全：新手入门必看的 80+ 实用命令详解</title>
		<link>https://www.dixunblog.cn/1742.html</link>
					<comments>https://www.dixunblog.cn/1742.html#respond</comments>
		
		<dc:creator><![CDATA[老大]]></dc:creator>
		<pubDate>Sun, 26 Apr 2026 12:04:09 +0000</pubDate>
				<category><![CDATA[技术教程]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Linux 教程]]></category>
		<guid isPermaLink="false">https://www.dixunblog.cn/?p=1742</guid>

					<description><![CDATA[<p>写在前面 刚接触 Linux 的时候，面对黑乎乎的终端窗口，很多人都会懵：这玩意儿怎么用？命令敲错了会不会把系统搞崩？ 别慌，Linux 命令其实没那么难。日常工作中真正高频使用的命令也就几十个，掌握了这些，90% 的场景都能应付。这篇文章把这些命令按功能分好类，每个都配上实际例子，照着敲一遍就能学会。 建议先收藏，以后遇到问题直接查对应分类，比百度搜半天快多了。 一、文件和目录操作（最常用的） 1. ls &#8211; 查看目录内容 这是用得最多的命令，查看当前目录有什么文件和文件夹。 ls # 查看当前目录</p>
<p><a href="https://www.dixunblog.cn/1742.html">Linux 命令大全：新手入门必看的 80+ 实用命令详解</a>最先出现在<a href="https://www.dixunblog.cn">帝讯博客</a>。</p>
]]></description>
										<content:encoded><![CDATA[<h2>写在前面</h2>
<p>刚接触 Linux 的时候，面对黑乎乎的终端窗口，很多人都会懵：这玩意儿怎么用？命令敲错了会不会把系统搞崩？</p>
<p>别慌，Linux 命令其实没那么难。日常工作中真正高频使用的命令也就几十个，掌握了这些，90% 的场景都能应付。这篇文章把这些命令按功能分好类，每个都配上实际例子，照着敲一遍就能学会。</p>
<p>建议先收藏，以后遇到问题直接查对应分类，比百度搜半天快多了。</p>
<p><img loading="lazy" decoding="async" class="size-full wp-image-1743 aligncenter" title="19715cbbdb215d2f11e6801cb35b4494" src="http://cdn.hyclive.cn/dixunblog/2026/04/19715cbbdb215d2f11e6801cb35b4494.png" alt="19715cbbdb215d2f11e6801cb35b4494" width="2730" height="1535" /></p>
<hr />
<h2>一、文件和目录操作（最常用的）</h2>
<h3>1. ls &#8211; 查看目录内容</h3>
<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                  # 查看当前目录
ls -l               # 详细列表，显示文件大小、权限、时间
ls -a               # 显示隐藏文件（以.开头的）
ls -lh              # 文件大小用 K/M/G 显示，更直观
ls /home            # 查看指定目录</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">ls -lh
# 输出类似：
# drwxr-xr-x 2 root root 4.0K Jan 10 10:00 Documents
# -rw-r--r-- 1 root root 2.5M Jan 10 09:30 photo.jpg</code></pre>
<p>d 开头的是目录，- 开头的是文件，4.0K 和 2.5M 是大小。</p>
<hr />
<h3>2. cd &#8211; 切换目录</h3>
<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">cd /home            # 进入 home 目录
cd Documents        # 进入当前目录下的 Documents
cd ..               # 返回上一级目录
cd ~                # 回到用户主目录（比如 /root 或 /home/用户名）
cd -                # 返回上一次所在的目录</code></pre>
<p><strong>小技巧：</strong> cd 后面不写路径，默认回到主目录，等于 cd ~。</p>
<hr />
<h3>3. pwd &#8211; 显示当前路径</h3>
<p>有时候转了好几层目录，忘了自己在哪，pwd 告诉你当前位置。</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">pwd
# 输出：/home/user/Documents/Projects</code></pre>
<hr />
<h3>4. mkdir &#8211; 创建目录</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">mkdir test              # 创建一个叫 test 的目录
mkdir -p a/b/c          # 创建多层目录，a 下面有 b，b 下面有 c
mkdir test1 test2       # 同时创建多个目录</code></pre>
<p>-p 参数很好用，一次性建多层目录，不用一层一层建。</p>
<hr />
<h3>5. rm &#8211; 删除文件和目录</h3>
<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">rm file.txt             # 删除文件
rm -r folder            # 删除目录（必须加 -r）
rm -rf folder           # 删除目录且不提示确认（f 是强制）
rm -i file.txt          # 删除前询问确认</code></pre>
<p><strong>注意事项：</strong></p>
<ul>
<li>删目录必须加 -r，否则报错</li>
<li>rm -rf 没有确认提示，慎用，尤其是 rm -rf /（这会删掉整个系统）</li>
<li>建议习惯用 rm -i，删前多确认一次</li>
</ul>
<hr />
<h3>6. cp &#8211; 复制文件和目录</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">cp file1.txt file2.txt          # 把 file1 复制一份叫 file2
cp file.txt /home/backup/       # 复制到指定目录
cp -r folder1 folder2           # 复制目录（必须加 -r）
cp -p file.txt backup.txt       # 复制时保留原文件的权限和时间</code></pre>
<hr />
<h3>7. mv &#8211; 移动或重命名</h3>
<p>mv 有两个功能：移动文件到其他目录，或者给文件改名字。</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">mv old.txt new.txt              # 重命名文件
mv file.txt /home/docs/         # 移动文件到其他目录
mv folder1 /home/backup/        # 移动目录
mv *.txt /home/docs/            # 把所有 txt 文件移到 docs 目录</code></pre>
<hr />
<h3>8. touch &#8211; 创建空文件或更新时间戳</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">touch newfile.txt       # 创建一个空文件
touch existing.txt      # 更新文件的时间戳（访问和修改时间）
touch a.txt b.txt       # 同时创建多个文件</code></pre>
<p>创建空文件干嘛用？有时候脚本需要判断文件是否存在，先 touch 一个占位。</p>
<hr />
<h3>9. cat &#8211; 查看文件内容</h3>
<p>小文件直接 cat，大文件别用，会刷屏。</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 file.txt               # 显示文件全部内容
cat -n file.txt            # 显示内容并带行号
cat a.txt b.txt &gt; c.txt    # 把 a 和 b 合并写入 c</code></pre>
<hr />
<h3>10. more 和 less &#8211; 分页查看大文件</h3>
<p>文件太大，cat 会刷屏，用 more 或 less 分页看。</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">more largefile.txt     # 分页查看，按空格翻页，按 q 退出
less largefile.txt     # 比 more 更好用，可以上下翻页，按 q 退出</code></pre>
<p>less 功能更强，可以搜索（按 / 输入关键词），建议大文件都用 less。</p>
<hr />
<h3>11. head 和 tail &#8211; 查看文件开头或结尾</h3>
<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">head file.txt             # 显示前 10 行
head -n 20 file.txt       # 显示前 20 行
tail file.txt             # 显示后 10 行
tail -n 50 file.txt       # 显示后 50 行
tail -f logfile.txt       # 实时查看文件尾部（日志监控常用）</code></pre>
<p>tail -f 监控日志特别有用，日志文件不断更新，你能实时看到新内容。</p>
<hr />
<h3>12. find &#8211; 查找文件</h3>
<p>不知道文件在哪，find 帮你找。</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">find /home -name "*.txt"          # 在 home 目录找所有 txt 文件
find . -name "test*"              # 在当前目录找以 test 开头的文件
find / -size +100M                # 找大于 100M 的文件
find /home -type d                # 只找目录
find . -mtime -7                  # 找最近 7 天修改过的文件</code></pre>
<p>find 功能很强，可以按名字、大小、类型、时间等多种条件搜索。</p>
<hr />
<h3>13. grep &#8211; 搜索文件内容</h3>
<p>在文件里找关键词，grep 是神器。</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">grep "error" logfile.txt          # 在文件里找 error这个词
grep -i "error" logfile.txt       # 忽略大小写，Error、ERROR都能匹配
grep -n "error" logfile.txt       # 显示行号
grep -r "error" /home/logs/       # 递归搜索整个目录
grep -c "error" logfile.txt       # 只显示匹配了多少行
grep -v "error" logfile.txt       # 显示不包含 error 的行</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">cat logfile.txt | grep "error"    # 先 cat 再 grep
ps aux | grep nginx               # 查找 nginx 进程</code></pre>
<hr />
<h3>14. ln &#8211; 创建链接</h3>
<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">ln -s /home/file.txt link.txt     # 创建软链接（最常用）
ln /home/file.txt hardlink.txt    # 创建硬链接</code></pre>
<p>软链接更常用，删了原文件，软链接会失效；硬链接相当于文件的另一个入口，删了原文件，硬链接还能访问。</p>
<hr />
<h3>15. tree &#8211; 树状显示目录结构</h3>
<p>比 ls 更直观，能看到目录的层级结构。</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">tree                # 显示当前目录的树状结构
tree -L 2           # 只显示 2 层深度
tree /home          # 显示指定目录
tree -d             # 只显示目录，不显示文件</code></pre>
<p>如果系统没有 tree，需要先安装：<code>yum install tree</code> 或 <code>apt install tree</code>。</p>
<hr />
<h3>16. file &#8211; 查看文件类型</h3>
<p>有时候文件没后缀名，不知道是什么类型，file 命令告诉你。</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">file photo.jpg
# 输出：photo.jpg: JPEG image data, JFIF standard 1.01

file document.pdf
# 输出：document.pdf: PDF document, version 1.4

file script.sh
# 输出：script.sh: Bourne-Again shell script, ASCII text executable</code></pre>
<hr />
<h3>17. stat &#8211; 查看文件详细信息</h3>
<p>比 ls -l 更详细，能看到访问时间、修改时间、状态改变时间。</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">stat file.txt
# 输出包含：
# Size: 1024        # 文件大小
# Access: 2025-01-10 10:00:00   # 访问时间
# Modify: 2025-01-09 15:30:00   # 修改时间
# Change: 2025-01-09 15:30:00   # 状态改变时间</code></pre>
<hr />
<h2>二、文件内容编辑和处理</h2>
<h3>18. echo &#8211; 输出文本</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">echo "Hello World"              # 输出文字
echo "Hello" &gt; file.txt         # 把文字写入文件（覆盖原有内容）
echo "Hello" &gt;&gt; file.txt        # 追加到文件末尾
echo -n "Hello"                 # 输出不换行
echo $PATH                      # 输出环境变量的值</code></pre>
<p>写脚本时经常用 echo 输出提示信息或者写入文件。</p>
<hr />
<h3>19. wc &#8211; 统计文件行数、字数、字节数</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">wc file.txt             # 显示行数、字数、字节数
wc -l file.txt          # 只显示行数
wc -w file.txt          # 只显示字数
wc -c file.txt          # 只显示字节数
wc -l *.txt             # 统计所有 txt 文件的行数</code></pre>
<hr />
<h3>20. sort &#8211; 排序文件内容</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">sort file.txt               # 按字母顺序排序
sort -n file.txt            # 按数字排序
sort -r file.txt            # 反向排序
sort -u file.txt            # 排序并去重
sort -k 2 file.txt          # 按第 2 列排序</code></pre>
<hr />
<h3>21. uniq &#8211; 去除重复行</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">uniq file.txt               # 去除连续重复的行
uniq -c file.txt            # 显示每行出现的次数
sort file.txt | uniq        # 先排序再去重（更彻底）</code></pre>
<p>uniq 只去除连续重复的行，配合 sort 用效果更好。</p>
<hr />
<h3>22. cut &#8211; 提取文件中的列</h3>
<p>文件是按列排列的（比如 CSV），提取某一列用 cut。</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">cut -d ',' -f 1 file.csv         # 用逗号分隔，取第 1 列
cut -d ':' -f 1,3 /etc/passwd    # 用冒号分隔，取第 1 和第 3 列
cut -c 1-5 file.txt              # 取每行的第 1-5 个字符</code></pre>
<hr />
<h3>23. diff &#8211; 比较两个文件的差异</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">diff file1.txt file2.txt         # 显示差异
diff -u file1.txt file2.txt      # 用 unified 格式显示（更易读）
diff -r folder1 folder2          # 比较两个目录的差异</code></pre>
<hr />
<h3>24. sed &#8211; 流编辑器（替换文本）</h3>
<p>sed 功能很强大，最常用的是替换文本。</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">sed 's/old/new/' file.txt            # 把每行第一个 old 替换为 new
sed 's/old/new/g' file.txt           # 把所有 old 替换为 new（g 表示全局）
sed -i 's/old/new/g' file.txt        # 直接修改文件（-i 表示修改原文件）
sed '/^$/d' file.txt                 # 删除空行
sed '5d' file.txt                    # 删除第 5 行</code></pre>
<p>sed 还能做很多复杂操作，但这几个是最常用的。</p>
<hr />
<h3>25. awk &#8211; 文本处理工具</h3>
<p>awk 比 sed 更强大，可以按列处理数据，还能做计算。</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">awk '{print $1}' file.txt            # 打印每行的第 1 列（默认空格分隔）
awk -F ',' '{print $1,$3}' file.csv  # 用逗号分隔，打印第 1 和第 3 列
awk '{sum += $1} END {print sum}' numbers.txt   # 计算第 1 列的总和
awk '$3 &gt; 100' file.txt              # 打印第 3 列大于 100 的行
awk 'NR==5' file.txt                 # 只打印第 5 行</code></pre>
<p>awk 适合处理结构化文本，比如日志分析、数据提取。</p>
<hr />
<h3>26. tr &#8211; 字符转换</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">tr 'a-z' 'A-Z' file.txt          # 小写转大写
tr 'A-Z' 'a-z' file.txt          # 大写转小写
tr -d '0-9' file.txt             # 删除所有数字
tr -s ' ' file.txt               # 把多个空格压缩成一个</code></pre>
<hr />
<h3>27. tee &#8211; 同时输出到屏幕和文件</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">tee output.txt               # 输出到屏幕并写入文件
tee -a output.txt            # 追加写入文件
ls | tee list.txt            # ls 结果显示在屏幕并写入 list.txt</code></pre>
<p>配合管道使用，既能看到结果又能保存记录。</p>
<hr />
<h2>三、压缩和解压</h2>
<h3>28. tar &#8211; 打包和压缩（最常用）</h3>
<p>tar 是 Linux 最常用的打包工具，配合 gzip 或 bzip2 压缩。</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 -cvf archive.tar folder          # 打包文件夹（不压缩）
tar -czvf archive.tar.gz folder      # 打包并用 gzip 压缩
tar -cjvf archive.tar.bz2 folder     # 打包并用 bzip2 压缩
tar -xvf archive.tar                 # 解包
tar -xzvf archive.tar.gz             # 解包 gzip 压缩的文件
tar -xjvf archive.tar.bz2            # 解包 bzip2 压缩的文件
tar -xzvf archive.tar.gz -C /home/   # 解包到指定目录</code></pre>
<p>参数解释：</p>
<ul>
<li>c：创建（打包）</li>
<li>x：解包</li>
<li>v：显示过程</li>
<li>f：指定文件名</li>
<li>z：gzip 压缩/解压</li>
<li>j：bzip2 压缩/解压</li>
<li>C：指定目标目录</li>
</ul>
<p>记住这几个组合就够了：打包用 czvf，解压用 xzvf。</p>
<hr />
<h3>29. gzip 和 gunzip &#8211; gzip 压缩解压</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">gzip file.txt                # 压缩文件，生成 file.txt.gz（原文件消失）
gzip -k file.txt             # 压缩但保留原文件
gunzip file.txt.gz           # 解压
gzip -d file.txt.gz          # 解压（等于 gunzip）
gzip -r folder               # 递归压缩目录里的所有文件</code></pre>
<p>gzip 只能压缩单个文件，要压缩多个文件先用 tar 打包。</p>
<hr />
<h3>30. zip 和 unzip &#8211; zip 格式压缩解压</h3>
<p>zip 格式在 Windows 上很常见，Linux 也能用。</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">zip archive.zip file1 file2          # 压缩多个文件
zip -r archive.zip folder            # 压缩目录
unzip archive.zip                    # 解压
unzip archive.zip -d /home/          # 解压到指定目录
unzip -l archive.zip                 # 查看压缩包内容（不解压）</code></pre>
<hr />
<h3>31. xz 和 unxz &#8211; xz 格式压缩解压</h3>
<p>xz 压缩率比 gzip 更高，但速度慢一些。</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">xz file.txt                  # 压缩文件，生成 file.txt.xz
xz -k file.txt               # 压缩但保留原文件
xz -d file.txt.xz            # 解压
unxz file.txt.xz             # 解压（等于 xz -d）</code></pre>
<hr />
<h2>四、系统信息查看</h2>
<h3>32. uname &#8211; 查看系统信息</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">uname -a                     # 显示所有系统信息
uname -r                     # 只显示内核版本
uname -m                     # 显示系统架构（x86_64 等）
uname -n                     # 显示主机名</code></pre>
<hr />
<h3>33. hostname &#8211; 查看和设置主机名</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">hostname                     # 显示主机名
hostname newname             # 设置新主机名（临时生效）
hostnamectl set-hostname newname    # 永久设置主机名（CentOS 7+）</code></pre>
<hr />
<h3>34. uptime &#8211; 查看系统运行时间和负载</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">uptime
# 输出类似：
# 10:30:00 up 5 days, 2:15, 3 users, load average: 0.5, 0.3, 0.1</code></pre>
<p>up 5 days：系统运行了 5 天<br />
load average：系统负载，三个数值分别是 1 分钟、5 分钟、15 分钟的平均负载。一般超过 CPU 核心数就说明负载较高。</p>
<hr />
<h3>35. date &#8211; 显示和设置时间</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">date                         # 显示当前时间
date +%Y-%m-%d               # 只显示日期（格式：2025-01-10）
date +%H:%M:%S               # 只显示时间
date -s "2025-01-10 10:00:00"    # 设置时间</code></pre>
<hr />
<h3>36. cal &#8211; 显示日历</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">cal                          # 显示当月日历
cal 2025                     # 显示 2025 年全年日历
cal 1 2025                   # 显示 2025 年 1 月</code></pre>
<hr />
<h3>37. free &#8211; 查看内存使用情况</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">free                         # 显示内存使用（单位 KB）
free -h                      # 用 MB/GB 显示，更直观
free -m                      # 单位 MB</code></pre>
<p>输出解释：</p>
<ul>
<li>total：总内存</li>
<li>used：已使用</li>
<li>free：空闲</li>
<li>available：可用（包括可回收的缓存）</li>
<li>buff/cache：缓冲和缓存</li>
</ul>
<p>看内存够不够，主要看 available。</p>
<hr />
<h3>38. df &#8211; 查看磁盘使用情况</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">df                           # 显示磁盘使用
df -h                        # 用 MB/GB 显示
df -T                        # 显示文件系统类型
df -i                        # 显示 inode 使用情况</code></pre>
<p>inode 是什么？Linux 系统中，文件存储需要两个东西：数据块（存内容）和 inode（存元信息，比如权限、时间）。有时候磁盘空间还有很多，但 inode 满了，也无法创建新文件。</p>
<hr />
<h3>39. du &#8211; 查看目录占用空间</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">du folder                    # 显示目录占用
du -h folder                 # 用 MB/GB 显示
du -sh folder                # 只显示总大小（不显示子目录）
du -h --max-depth=1 folder   # 只显示 1 层深度
du -ah | sort -rh | head -10 # 找出占用最大的 10 个文件/目录</code></pre>
<hr />
<h3>40. top &#8211; 实时查看系统状态</h3>
<p>top 是查看系统状态的&#8221;神器&#8221;，能看到 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">top                          # 打开 top 监控界面</code></pre>
<p>进入 top 后：</p>
<ul>
<li>按 P：按 CPU 使用率排序</li>
<li>按 M：按内存使用率排序</li>
<li>按 T：按运行时间排序</li>
<li>按 k：输入 PID 可以杀进程</li>
<li>按 q：退出</li>
</ul>
<p>常用看几项：</p>
<ul>
<li>CPU 使用率：us（用户）、sy（系统）、id（空闲）</li>
<li>内存：看 free 和 available</li>
<li>进程列表：看哪个进程占用高</li>
</ul>
<hr />
<h3>41. htop &#8211; 更友好的系统监控</h3>
<p>htop 比 top 界面更美观，操作更方便。</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                         # 打开 htop</code></pre>
<p>需要先安装：<code>yum install htop</code> 或 <code>apt install htop</code>。</p>
<p>htop 可以鼠标点击操作，支持横向滚动，比 top 好用很多。</p>
<hr />
<h3>42. vmstat &#8211; 查看系统性能统计</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">vmstat                       # 显示一次统计
vmstat 1 5                   # 每秒刷新，共刷新 5 次
vmstat -s                    # 显示详细统计</code></pre>
<hr />
<h3>43. iostat &#8211; 查看 IO 状态</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">iostat                       # 显示 IO 统计
iostat -x                    # 更详细的信息
iostat 1 5                   # 每秒刷新，共 5 次</code></pre>
<hr />
<h3>44. lsblk &#8211; 查看块设备信息</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">lsblk                        # 显示块设备（硬盘、分区等）
lsblk -f                     # 显示文件系统类型和挂载点</code></pre>
<hr />
<h3>45. lspci &#8211; 查看 PCI 设备</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">lspci                        # 显示 PCI 设备列表
lspci -v                     # 详细信息</code></pre>
<p>看网卡、显卡等硬件信息用这个。</p>
<hr />
<h3>46. lsusb &#8211; 查看 USB 设备</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">lsusb                        # 显示 USB 设备列表
lsusb -v                     # 详细信息</code></pre>
<hr />
<h3>47. dmidecode &#8211; 查看硬件信息</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">dmidecode -t system          # 查看系统信息（制造商、型号等）
dmidecode -t memory          # 查看内存信息
dmidecode -t processor       # 查看处理器信息</code></pre>
<p>需要 root 权限。</p>
<hr />
<h2>五、进程管理</h2>
<h3>48. ps &#8211; 查看进程</h3>
<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          # 查找 nginx 进程</code></pre>
<p>输出解释（aux 格式）：</p>
<ul>
<li>USER：运行进程的用户</li>
<li>PID：进程 ID</li>
<li>%CPU：CPU 使用率</li>
<li>%MEM：内存使用率</li>
<li>COMMAND：进程命令</li>
</ul>
<hr />
<h3>49. pgrep 和 pkill &#8211; 查找和杀死进程</h3>
<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 进程的 PID
pgrep -u root nginx          # 查找 root 用户运行的 nginx 进程
pkill nginx                  # 杀死所有 nginx 进程
pkill -9 nginx               # 强制杀死（-9 是强制信号）
pkill -u root                # 杀死 root 用户的所有进程</code></pre>
<p>比 ps | grep 再 kill 方便多了。</p>
<hr />
<h3>50. kill &#8211; 杀死进程</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">kill 1234                    # 杀死 PID 为 1234 的进程
kill -9 1234                 # 强制杀死
kill -l                      # 列出所有信号</code></pre>
<p>常用信号：</p>
<ul>
<li>15（默认）：正常终止，进程可以清理资源</li>
<li>9：强制终止，进程立即结束</li>
<li>2：中断（Ctrl+C）</li>
<li>1：重启进程</li>
</ul>
<hr />
<h3>51. killall &#8211; 按名字杀死进程</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">killall nginx                # 杀死所有 nginx 进程
killall -9 nginx             # 强制杀死
killall -u root nginx        # 只杀死 root 用户运行的</code></pre>
<hr />
<h3>52. nice 和 renice &#8211; 设置进程优先级</h3>
<p>优先级范围：-20（最高）到 19（最低）。默认是 0。</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">nice -n 10 ./script.sh       # 以优先级 10 运行脚本（较低）
nice -n -5 ./script.sh       # 以优先级 -5 运行（较高）
renice -n 5 -p 1234          # 把 PID 1234 的优先级改为 5
renice -n -10 -u root        # 把 root 用户所有进程优先级改为 -10</code></pre>
<hr />
<h3>53. nohup &#8211; 后台运行不中断</h3>
<p>SSH 断开后，前台进程会被杀掉。nohup 让进程在后台持续运行。</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">nohup ./script.sh &amp;          # 后台运行，输出写到 nohup.out
nohup ./script.sh &gt; output.log 2&gt;&amp;1 &amp;   # 输出到指定文件</code></pre>
<p>&amp; 表示后台运行，2&gt;&amp;1 表示把错误输出也写到文件里。</p>
<hr />
<h3>54. jobs、fg、bg &#8211; 作业控制</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">jobs                         # 查看后台作业
fg %1                        # 把作业 1 调到前台
bg %1                        # 把作业 1 放到后台继续运行
Ctrl+Z                       # 暂停当前前台进程（放入后台）
Ctrl+C                       # 终止当前前台进程</code></pre>
<hr />
<h3>55. watch &#8211; 定时执行命令</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">watch -n 1 free -h           # 每秒刷新内存使用情况
watch -n 5 "ps aux | grep nginx"   # 每 5 秒查看 nginx 进程
watch -d free -h             # 高亮显示变化的部分</code></pre>
<hr />
<h2>六、网络相关</h2>
<h3>56. ifconfig &#8211; 查看和配置网络接口</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">ifconfig                     # 显示所有网络接口
ifconfig eth0                # 只显示 eth0
ifconfig eth0 192.168.1.100  # 设置 IP 地址（临时）
ifconfig eth0 up             # 启用网卡
ifconfig eth0 down           # 禁用网卡</code></pre>
<p>CentOS 7+ 可能没有 ifconfig，用 ip 命令替代。</p>
<hr />
<h3>57. ip &#8211; 新一代网络配置命令</h3>
<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            # 显示 eth0 的 IP
ip link                      # 显示网络接口
ip link set eth0 up          # 启用网卡
ip link set eth0 down        # 禁用网卡
ip addr add 192.168.1.100/24 dev eth0   # 设置 IP 地址
ip route                     # 显示路由表
ip route add default via 192.168.1.1    # 设置默认路由</code></pre>
<hr />
<h3>58. ping &#8211; 测试网络连通性</h3>
<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 次后停止
ping -i 2 192.168.1.1        # 每次间隔 2 秒
ping -s 1000 192.168.1.1     # 发送 1000 字节的包</code></pre>
<p>ping 不通不一定是网络问题，可能是对方禁 ping 或防火墙拦截。</p>
<hr />
<h3>59. traceroute &#8211; 查看网络路径</h3>
<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     # 查看到达百度经过的路由
traceroute -n 192.168.1.100  # 不解析域名，只显示 IP</code></pre>
<p>能看到网络包经过哪些路由器，哪一段慢。</p>
<hr />
<h3>60. nslookup 和 dig &#8211; DNS 查询</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">nslookup www.baidu.com       # 查询域名解析
nslookup www.baidu.com 8.8.8.8   # 用指定 DNS 服务器查询
dig www.baidu.com            # 更详细的 DNS 信息
dig @8.8.8.8 www.baidu.com   # 用指定 DNS 查询
dig +short www.baidu.com     # 只显示解析结果</code></pre>
<hr />
<h3>61. netstat &#8211; 查看网络连接和端口</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">netstat                      # 显示所有网络连接
netstat -tunlp               # 显示 TCP/UDP 端口和对应进程
netstat -an                  # 显示所有连接（包括监听）
netstat -rn                  # 显示路由表
netstat -i                   # 显示网络接口统计</code></pre>
<p>看端口占用常用：<code>netstat -tunlp | grep 80</code></p>
<hr />
<h3>62. ss &#8211; 新一代网络统计工具</h3>
<p>ss 比 netstat 更快，功能更强。</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">ss                           # 显示所有 socket
ss -tunlp                    # 显示 TCP/UDP 端口和进程
ss -s                        # 显示统计摘要
ss -l                        # 只显示监听的 socket
ss -tan | grep :80           # 查看端口 80 的连接</code></pre>
<hr />
<h3>63. curl &#8211; 发送 HTTP 请求</h3>
<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 # 只获取响应头
curl -o file.html http://www.baidu.com   # 保存到文件
curl -X POST -d "data=test" http://example.com/api   # POST 请求
curl -H "Content-Type: application/json" http://example.com   # 自定义请求头
curl -u user:pass http://example.com    # 带认证
curl --proxy http://proxy.example.com:8080 http://www.baidu.com   # 使用代理</code></pre>
<p>curl 功能很强，测试 API、下载文件、模拟请求都能用。</p>
<hr />
<h3>64. wget &#8211; 下载文件</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">wget http://example.com/file.zip     # 下载文件
wget -O newname.zip http://example.com/file.zip   # 重命名保存
wget -c http://example.com/file.zip  # 断点续传
wget -b http://example.com/file.zip  # 后台下载
wget -r http://example.com/          # 递归下载整个网站
wget --limit-rate=1m http://example.com/file.zip   # 限速下载</code></pre>
<hr />
<h3>65. ssh &#8211; 远程连接</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">ssh user@192.168.1.100       # 连接远程服务器
ssh -p 2222 user@192.168.1.100   # 指定端口
ssh -i key.pem user@192.168.1.100   # 使用密钥登录
ssh -L 8080:localhost:80 user@192.168.1.100   # 本地端口转发
ssh -R 80:localhost:8080 user@192.168.1.100   # 远程端口转发</code></pre>
<hr />
<h3>66. scp &#8211; 远程复制文件</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">scp file.txt user@192.168.1.100:/home/   # 上传文件到远程
scp user@192.168.1.100:/home/file.txt ./   # 从远程下载文件
scp -r folder user@192.168.1.100:/home/    # 上传目录
scp -P 2222 file.txt user@192.168.1.100:/home/   # 指定端口</code></pre>
<hr />
<h3>67. sftp &#8211; 安全文件传输</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">sftp user@192.168.1.100      # 连接远程</code></pre>
<p>进入 sftp 后可用命令：</p>
<ul>
<li>put file.txt：上传文件</li>
<li>get file.txt：下载文件</li>
<li>ls：查看远程目录</li>
<li>cd：切换远程目录</li>
<li>lcd：切换本地目录</li>
<li>quit：退出</li>
</ul>
<hr />
<h3>68. nmap &#8211; 网络扫描工具</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">nmap 192.168.1.100           # 扫描主机开放的端口
nmap -p 80,443 192.168.1.100 # 只扫描指定端口
nmap -sV 192.168.1.100       # 检测端口服务版本
nmap -A 192.168.1.100        # 全面扫描
nmap 192.168.1.0/24          # 扫描整个网段</code></pre>
<p>需要先安装：<code>yum install nmap</code> 或 <code>apt install nmap</code>。</p>
<hr />
<h2>七、用户和权限管理</h2>
<h3>69. useradd &#8211; 创建用户</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">useradd username             # 创建用户
useradd -m username          # 创建用户并创建主目录
useradd -s /bin/bash username    # 指定 shell
useradd -g groupname username    # 指定主组
useradd -G group1,group2 username    # 指定附加组</code></pre>
<hr />
<h3>70. userdel &#8211; 删除用户</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">userdel username             # 删除用户
userdel -r username          # 删除用户和主目录</code></pre>
<hr />
<h3>71. usermod &#8211; 修改用户</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">usermod -l newname oldname   # 改用户名
usermod -s /bin/zsh username # 修改 shell
usermod -G group1,group2 username   # 修改附加组
usermod -aG group username   # 添加到附加组（不覆盖原有组）
usermod -L username          # 锁定用户
usermod -U username          # 解锁用户</code></pre>
<hr />
<h3>72. passwd &#8211; 设置密码</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">passwd                       # 修改自己的密码
passwd username              # 修改指定用户密码（需要 root）
passwd -l username           # 锁定用户密码
passwd -u username           # 解锁用户密码
passwd -d username           # 删除用户密码（不能登录）
passwd -e username           # 强制用户下次登录时改密码</code></pre>
<hr />
<h3>73. groupadd &#8211; 创建组</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">groupadd groupname           # 创建组
groupadd -g 1000 groupname   # 指定 GID</code></pre>
<hr />
<h3>74. groupdel &#8211; 删除组</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">groupdel groupname           # 删除组</code></pre>
<hr />
<h3>75. groups &#8211; 查看用户所属组</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">groups                       # 查看自己所属组
groups username              # 查看指定用户所属组</code></pre>
<hr />
<h3>76. id &#8211; 查看用户信息</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">id                           # 查看自己的 UID、GID、组
id username                  # 查看指定用户信息
id -u username               # 只显示 UID
id -g username               # 只显示主 GID</code></pre>
<hr />
<h3>77. who &#8211; 查看登录用户</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">who                          # 显示所有登录用户
who -b                       # 显示系统启动时间
who -r                       # 显示运行级别</code></pre>
<hr />
<h3>78. w &#8211; 显示登录用户和活动</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">w                            # 显示登录用户和正在做的事</code></pre>
<p>比 who 更详细，能看到用户正在运行的命令。</p>
<hr />
<h3>79. last &#8211; 查看登录历史</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">last                         # 显示所有登录历史
last -n 10                   # 只显示最近 10 次
last username                # 只显示指定用户的登录历史
last -x                      # 显示系统重启和关机记录</code></pre>
<hr />
<h3>80. su &#8211; 切换用户</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">su                           # 切换到 root
su username                  # 切换到指定用户
su - username                # 切换用户并加载其环境变量
su -c "command" username     # 以指定用户执行命令</code></pre>
<p>su &#8211; 会切换到新用户的环境，su 只切换用户但不切换环境。</p>
<hr />
<h3>81. sudo &#8211; 以 root 权限执行命令</h3>
<p>普通用户需要 root 权限执行某些命令，用 sudo。</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 username command     # 以指定用户执行命令
sudo -l                      # 查看自己可以用 sudo 执行哪些命令
sudo -k                      # 清除 sudo 密码缓存（下次执行要重新输入密码）
sudo -b command              # 后台执行命令</code></pre>
<p>需要先配置 sudo 权限：<code>visudo</code> 编辑 /etc/sudoers 文件，添加：</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">username ALL=(ALL) ALL</code></pre>
<hr />
<h3>82. chmod &#8211; 修改文件权限</h3>
<p>Linux 文件权限分三部分：用户（u）、组（g）、其他人（o）。每部分有读（r=4）、写（w=2）、执行（x=1）三种权限。</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            # 用户：7=4+2+1（读写执行），组：5=4+1（读执行），其他人：5（读执行）
chmod 644 file.txt           # 用户读写，组和他人只读
chmod +x file.sh             # 给所有人添加执行权限
chmod u+w file.txt           # 给用户添加写权限
chmod g-r file.txt           # 移除组的读权限
chmod -R 755 folder          # 递归修改目录权限</code></pre>
<p>常用权限组合：</p>
<ul>
<li>755：脚本、程序（用户全权限，其他人可读可执行）</li>
<li>644：普通文件（用户读写，其他人只读）</li>
<li>600：私密文件（只有用户能读写）</li>
<li>777：所有人全权限（慎用）</li>
</ul>
<hr />
<h3>83. chown &#8211; 修改文件所有者</h3>
<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 :group file.txt        # 只改组
chown -R user:group folder   # 递归修改目录
chown --reference=ref.txt file.txt   # 复制参考文件的权限</code></pre>
<hr />
<h3>84. chgrp &#8211; 修改文件所属组</h3>
<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         # 改组
chgrp -R group folder        # 递归修改</code></pre>
<p>等于 chown :group file.txt。</p>
<hr />
<h3>85. umask &#8211; 设置默认权限</h3>
<p>新创建的文件默认权限是多少？umask 决定的。</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">umask                        # 显示当前 umask 值（比如 0022）
umask 022                    # 设置 umask（新文件默认 755，目录 644）
umask 077                    # 设置 umask（新文件只有用户有权限）</code></pre>
<p>umask 是权限的&#8221;补码&#8221;，实际权限 = 777 &#8211; umask。</p>
<hr />
<h3>86. lsattr 和 chattr &#8211; 查看和设置文件属性</h3>
<p>除了普通权限，Linux 还有特殊属性。</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">lsattr file.txt              # 查看属性
chattr +i file.txt           # 设置不可修改属性（连 root 都不能改）
chattr -i file.txt           # 移除不可修改属性
chattr +a file.txt           # 只能追加内容，不能修改或删除
chattr -a file.txt           # 移除追加属性</code></pre>
<p>+i 很有用，保护重要配置文件不被误改。</p>
<hr />
<h2>八、磁盘和文件系统管理</h2>
<h3>87. fdisk &#8211; 磁盘分区工具</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">fdisk -l                     # 查看所有磁盘分区
fdisk /dev/sdb               # 对 sdb 磁盘分区</code></pre>
<p>进入 fdisk 后可用命令：</p>
<ul>
<li>n：新建分区</li>
<li>d：删除分区</li>
<li>p：查看分区表</li>
<li>w：保存退出</li>
<li>q：不保存退出</li>
</ul>
<hr />
<h3>88. mkfs &#8211; 格式化分区</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">mkfs.ext4 /dev/sdb1          # 格式化为 ext4
mkfs.xfs /dev/sdb1           # 格式化为 xfs
mkfs -t ext4 /dev/sdb1       # 指定类型格式化</code></pre>
<hr />
<h3>89. mount 和 umount &#8211; 挂载和卸载</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">mount /dev/sdb1 /mnt         # 挂载分区到 /mnt 目录
mount -t ext4 /dev/sdb1 /mnt # 指定文件系统类型挂载
mount -o ro /dev/sdb1 /mnt   # 只读挂载
mount /dev/cdrom /mnt        # 挂载光驱
umount /mnt                  # 卸载
umount -l /mnt               # 强制卸载（忙碌时）</code></pre>
<p>永久挂载要写入 /etc/fstab 文件：</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">/dev/sdb1    /mnt    ext4    defaults    0 0</code></pre>
<hr />
<h3>90. blkid &#8211; 查看块设备 UUID</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">blkid                        # 显示所有块设备的 UUID 和类型
blkid /dev/sdb1              # 显示指定设备的 UUID</code></pre>
<p>写 /etc/fstab 用 UUID 更稳定，比设备名可靠。</p>
<hr />
<h3>91. e2fsck &#8211; 检查和修复 ext 文件系统</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">e2fsck /dev/sdb1             # 检查文件系统
e2fsck -p /dev/sdb1          # 自动修复
e2fsck -f /dev/sdb1          # 强制检查</code></pre>
<p>检查前要先卸载分区。</p>
<hr />
<h3>92. xfs_repair &#8211; 检查和修复 xfs 文件系统</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">xfs_repair /dev/sdb1         # 检查和修复 xfs 文件系统
xfs_repair -n /dev/sdb1      # 只检查不修复</code></pre>
<hr />
<h2>九、软件包管理</h2>
<h3>93. yum &#8211; CentOS/RHEL 软件包管理</h3>
<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                # 清理缓存
yum history                  # 查看安装历史
yum reinstall package        # 重新安装</code></pre>
<hr />
<h3>94. dnf &#8211; CentOS 8+/Fedora 软件包管理</h3>
<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
dnf list installed
dnf info package
dnf clean all</code></pre>
<hr />
<h3>95. apt &#8211; Debian/Ubuntu 软件包管理</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">apt install package          # 安装软件包
apt remove package           # 删除软件包
apt purge package            # 删除软件包和配置文件
apt update                   # 更新软件源
apt upgrade                  # 升级所有软件包
apt search keyword           # 搜索软件包
apt show package             # 显示软件包信息
apt list --installed         # 列出已安装软件包
apt autoremove               # 清理不需要的依赖包
apt clean                   # 清理下载缓存</code></pre>
<p>apt-get 和 apt 命令差不多，apt 是 apt-get 的简化版，推荐用 apt。</p>
<hr />
<h3>96. rpm &#8211; RPM 包管理（低层）</h3>
<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 包
rpm -e package               # 删除软件包
rpm -qa                      # 列出所有已安装包
rpm -qi package              # 显示软件包信息
rpm -ql package              # 显示软件包安装的文件列表
rpm -qf /path/file           # 查看文件属于哪个包
rpm -V package               # 检查软件包文件是否被修改</code></pre>
<p>rpm 直接安装 rpm 文件，不自动解决依赖，建议用 yum/dnf。</p>
<hr />
<h3>97. dpkg &#8211; Debian 包管理（低层）</h3>
<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          # 安装 deb 包
dpkg -r package              # 删除软件包
dpkg -P package              # 删除软件包和配置文件
dpkg -l                      # 列出所有已安装包
dpkg -L package              # 显示软件包安装的文件列表
dpkg -S /path/file           # 查看文件属于哪个包</code></pre>
<p>dpkg 直接安装 deb 文件，不自动解决依赖，建议用 apt。</p>
<hr />
<h3>98. pip &#8211; Python 包管理</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">pip install package          # 安装 Python 包
pip uninstall package        # 删除 Python 包
pip list                     # 列出已安装包
pip show package             # 显示包信息
pip freeze                   # 输出已安装包列表（用于导出依赖）
pip install -r requirements.txt    # 从文件安装依赖
pip search keyword           # 搜索包（已禁用）
pip --version                # 显示 pip 版本
pip install --upgrade package    # 升级包</code></pre>
<hr />
<h3>99. npm &#8211; Node.js 包管理</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">npm install package          # 安装包
npm install -g package       # 全局安装
npm uninstall package        # 删除包
npm list                     # 列出已安装包
npm update package           # 更新包
npm run script               # 运行脚本
npm init                     # 创建 package.json
npm search keyword           # 搜索包</code></pre>
<hr />
<h2>十、服务管理</h2>
<h3>100. systemctl &#8211; CentOS 7+/Ubuntu 16+ 服务管理</h3>
<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 list-unit-files --type=service   # 列出所有服务配置文件
systemctl daemon-reload      # 重载配置文件（修改配置后）</code></pre>
<hr />
<h3>101. service &#8211; 传统服务管理</h3>
<p>CentOS 6 和老版本用 service 命令。</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 service_name start    # 启动服务
service service_name stop     # 停止服务
service service_name restart  # 重启服务
service service_name status   # 查看状态
service --status-all          # 查看所有服务状态</code></pre>
<hr />
<h3>102. journalctl &#8211; 查看系统日志</h3>
<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 --since "2025-01-10"   # 查看指定日期后的日志
journalctl -p err             # 只看错误级别日志
journalctl -b                 # 只看本次启动的日志
journalctl -k                 # 只看内核日志</code></pre>
<hr />
<h3>103. chkconfig &#8211; 设置服务开机自启（老版本）</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">chkconfig --list              # 查看所有服务开机自启状态
chkconfig service on          # 设置开机自启
chkconfig service off         # 关闭开机自启
chkconfig --add service       # 添加服务到管理列表
chkconfig --del service       # 从管理列表删除服务</code></pre>
<p>CentOS 7+ 用 systemctl enable/disable 替代。</p>
<hr />
<h2>十一、系统关机和重启</h2>
<h3>104. shutdown &#8211; 关机</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">shutdown                     # 一分钟后关机
shutdown -h now              # 立即关机
shutdown -h +10              # 10 分钟后关机
shutdown -h 20:00            # 20:00 关机
shutdown -c                  # 取消关机
shutdown -k now              # 只发送警告不关机</code></pre>
<hr />
<h3>105. reboot &#8211; 重启</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">reboot                       # 重启
reboot -f                    # 强制重启（不调用 shutdown）</code></pre>
<hr />
<h3>106. poweroff &#8211; 关机</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">poweroff                     # 关机
poweroff -f                  # 强制关机</code></pre>
<p>等于 shutdown -h now。</p>
<hr />
<h3>107. halt &#8211; 停机</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">halt                         # 停机
halt -p                      # 停机并关闭电源
halt -f                      # 强制停机</code></pre>
<hr />
<h3>108. init &#8211; 切换运行级别</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">init 0                       # 关机
init 6                       # 重启
init 3                       # 切换到多用户模式（无图形界面）
init 5                       # 切换到图形界面模式</code></pre>
<hr />
<h2>十二、其他实用命令</h2>
<h3>109. history &#8211; 查看命令历史</h3>
<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 10                   # 显示最近 10 条
history -c                   # 清空历史
!10                          # 执行第 10 条历史命令
!ls                          # 执行最近的 ls 命令
!!                           # 执行上一条命令</code></pre>
<hr />
<h3>110. alias &#8211; 设置命令别名</h3>
<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 -l'             # 设置 ll 别名
alias l='ls -lah'            # 设置 l 别名
unalias ll                   # 删除别名</code></pre>
<p>写进 ~/.bashrc 永久生效。</p>
<hr />
<h3>111. source &#8211; 执行脚本文件</h3>
<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             # 执行配置文件（重新加载）
source script.sh             # 执行脚本（在当前 shell）</code></pre>
<p>等于 . ~/.bashrc。</p>
<hr />
<h3>112. export &#8211; 设置环境变量</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">export                       # 显示所有环境变量
export VAR=value             # 设置环境变量
export PATH=$PATH:/new/path  # 添加路径到 PATH</code></pre>
<p>写进 ~/.bashrc 或 /etc/profile 永久生效。</p>
<hr />
<h3>113. env &#8211; 显示环境变量</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">env                          # 显示所有环境变量
env -i command               # 清空环境变量执行命令
env VAR=value command        # 设置临时环境变量执行命令</code></pre>
<hr />
<h3>114. set &#8211; 显示 shell 变量</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">set                          # 显示所有变量（包括环境变量和 shell 变量）
set -o                       # 显示 shell 选项
set -e                       # 脚本出错立即退出
set -x                       # 显示执行的命令</code></pre>
<hr />
<h3>115. unset &#8211; 删除变量</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">unset VAR                    # 删除变量
unset -f func                # 删除函数</code></pre>
<hr />
<h3>116. crontab &#8211; 定时任务管理</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">crontab -l                   # 查看定时任务
crontab -e                   # 编辑定时任务
crontab -r                   # 删除所有定时任务
crontab -u user -l           # 查看指定用户的定时任务</code></pre>
<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"># 每分钟执行
* * * * * /path/script.sh

# 每小时执行
0 * * * * /path/script.sh

# 每天 8 点执行
0 8 * * * /path/script.sh

# 每周一 8 点执行
0 8 * * 1 /path/script.sh

# 每月 1 号 0 点执行
0 0 1 * * /path/script.sh</code></pre>
<hr />
<h3>117. at &#8211; 执行一次性定时任务</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">at now + 5 minutes           # 5 分钟后执行
at 10:00                     # 10 点执行
at 10:00 tomorrow            # 明天 10 点执行
atq                          # 查看待执行任务
atrm job_number              # 删除任务</code></pre>
<p>输入命令后 Ctrl+D 保存。</p>
<hr />
<h3>118. time &#8211; 测量命令执行时间</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">time command                 # 测量命令执行时间
time -v command              # 详细输出</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 ">real    0m1.234s    # 实际时间
user    0m0.500s    # 用户态时间
sys     0m0.100s    # 内核态时间</code></pre>
<hr />
<h3>119. man &#8211; 查看命令手册</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">man ls                       # 查看 ls 命令手册
man -k keyword               # 搜索包含关键词的手册
man 5 passwd                 # 查看第 5 章手册（配置文件）</code></pre>
<p>手册章节：</p>
<ul>
<li>1：用户命令</li>
<li>2：系统调用</li>
<li>3：库函数</li>
<li>4：特殊文件</li>
<li>5：配置文件</li>
<li>6：游戏</li>
<li>7：杂项</li>
<li>8：管理命令</li>
</ul>
<hr />
<h3>120. info &#8211; 查看信息文档</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">info ls                      # 查看 ls 信息文档
info coreutils               # 查看 coreutils 信息</code></pre>
<p>比 man 更详细，有超链接。</p>
<hr />
<h3>121. help &#8211; 查看内置命令帮助</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">help                         # 显示所有内置命令
help cd                      # 查看 cd 命令帮助</code></pre>
<p>shell 内置命令（cd、echo 等）没有 man 手册，用 help。</p>
<hr />
<h3>122. whereis &#8211; 查找命令位置</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">whereis ls                   # 查找 ls 的位置
whereis -b ls                # 只查找二进制文件
whereis -m ls                # 只查找手册文件</code></pre>
<hr />
<h3>123. which &#8211; 查找命令路径</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">which ls                     # 显示 ls 命令的完整路径
which -a ls                  # 显示所有匹配的路径</code></pre>
<hr />
<h3>124. type &#8211; 查看命令类型</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">type ls                      # 查看 ls 是什么类型
type cd                      # 查看 cd 是什么类型</code></pre>
<p>输出可能是：</p>
<ul>
<li>alias：别名</li>
<li>builtin：内置命令</li>
<li>file：外部命令文件</li>
</ul>
<hr />
<h3>125. locate &#8211; 快速查找文件</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">locate file.txt              # 快速查找文件
locate -i file.txt           # 忽略大小写
locate -r "\.txt$"           # 使用正则表达式</code></pre>
<p>locate 比 find 快，因为它搜索预先建立的数据库。数据库需要定期更新：<code>updatedb</code>。</p>
<hr />
<h3>126. updatedb &#8211; 更新 locate 数据库</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">updatedb                     # 更新 locate 数据库</code></pre>
<hr />
<h3>127. xargs &#8211; 构建命令行参数</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">find . -name "*.txt" | xargs rm      # 找出所有 txt 文件并删除
find . -name "*.txt" | xargs -I {} mv {} backup/    # 移动到 backup 目录
cat urls.txt | xargs -n 1 curl       # 每行一个参数执行 curl
ls | xargs -n 3 echo                 # 每次传递 3 个参数</code></pre>
<p>管道传递的结果，有些命令不能直接接收（比如 rm），需要 xargs 转换。</p>
<hr />
<h3>128. banner &#8211; 打印大字标题</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">banner "HELLO"               # 打印大字 HELLO</code></pre>
<p>需要安装：<code>yum install banner</code> 或 <code>apt install sysvbanner</code>。</p>
<hr />
<h3>129. yes &#8211; 持续输出</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">yes                          # 持续输出 y
yes "hello"                  # 持续输出 hello
yes | rm -r folder           # 删除时自动回答 y</code></pre>
<hr />
<h3>130. seq &#8211; 生成数字序列</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">seq 10                       # 输出 1 到 10
seq 5 10                     # 输出 5 到 10
seq 1 2 10                   # 输出 1,3,5,7,9（步长 2）
seq -s ',' 1 10              # 输出 1,2,3,4,5,6,7,8,9,10（分隔符）
seq -w 1 10                  # 输出 01,02,...,10（等宽）</code></pre>
<hr />
<h3>131. sleep &#8211; 延迟</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">sleep 5                      # 廜迟 5 秒
sleep 1m                     # 廜迟 1 分钟
sleep 1h                     # 廜迟 1 小时
sleep 0.5                    # 廜迟 0.5 秒</code></pre>
<hr />
<h3>132. clear &#8211; 清屏</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">clear                        # 清屏</code></pre>
<p>等于 Ctrl+L。</p>
<hr />
<h3>133. reset &#8211; 重置终端</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">reset                        # 重置终端</code></pre>
<p>终端显示乱码时用这个重置。</p>
<hr />
<h3>134. script &#8211; 记录终端会话</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">script session.log           # 开始记录会话到 session.log
script -a session.log        # 追加记录
exit                         # 结束记录（或 Ctrl+D）</code></pre>
<hr />
<h3>135. sha256sum &#8211; 计算文件 SHA256 哈希</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">sha256sum file.txt           # 计算哈希值
sha256sum -c checksum.txt    # 验证哈希值</code></pre>
<p>类似的还有 sha1sum、sha512sum、md5sum。</p>
<hr />
<h3>136. base64 &#8211; 编码解码</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">base64 file.txt              # 编码文件内容
base64 -d encoded.txt        # 解码
echo "hello" | base64        # 编码字符串
echo "aGVsbG8=" | base64 -d  # 解码字符串</code></pre>
<hr />
<h3>137. hexdump &#8211; 查看文件十六进制内容</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">hexdump file.txt             # 显示十六进制
hexdump -C file.txt          # 显示十六进制和 ASCII
hexdump -n 100 file.txt      # 只显示前 100 字节</code></pre>
<hr />
<h3>138. dd &#8211; 复制和转换文件</h3>
<p>dd 功能很强大，常用于磁盘操作。</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">dd if=/dev/sda of=disk.img   # 复制磁盘到文件
dd if=disk.img of=/dev/sdb   # 从文件复制到磁盘
dd if=/dev/zero of=test.bin bs=1M count=100   # 创建 100M 文件
dd if=file.txt of=new.txt bs=512 count=10     # 只复制前 512*10 字节</code></pre>
<p>参数：</p>
<ul>
<li>if：输入文件</li>
<li>of：输出文件</li>
<li>bs：块大小</li>
<li>count：块数量</li>
</ul>
<hr />
<h3>139. split &#8211; 分割文件</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">split -b 100M largefile.bin  # 按 100M 分割
split -l 1000 largefile.txt  # 按 1000 行分割
split -b 100M largefile.bin part_   # 分割文件命名为 part_aa, part_ab...</code></pre>
<hr />
<h3>140. paste &#8211; 合并文件行</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono language-bash">paste file1.txt file2.txt    # 逐行合并两个文件
paste -d ',' file1.txt file2.txt    # 用逗号分隔合并
paste -s file.txt            # 把所有行合并成一行</code></pre>
<hr />
<h2>写在最后</h2>
<p>这篇文章整理了 140 多个 Linux 常用命令，覆盖了文件操作、内容处理、压缩解压、系统信息、进程管理、网络、用户权限、磁盘管理、软件包、服务管理、关机重启、定时任务等方面。</p>
<p>实际工作中，经常用的也就 30-40 个，把这些练熟了，大部分场景都能搞定。遇到问题先查对应的分类，比到处百度省事得多。</p>
<p>建议：</p>
<ol>
<li>先把文件操作（ls、cd、mkdir、rm、cp、mv）练熟，这是基本功</li>
<li>grep、find、tar 这三个是高频命令，务必掌握</li>
<li>遇到不会的命令，先 man 一下看看手册</li>
<li>建个自己的命令速查表，常用的记下来</li>
</ol>
<p>有问题欢迎留言讨论，我会持续更新这篇文章。</p>
<p><a href="https://www.dixunblog.cn/1742.html">Linux 命令大全：新手入门必看的 80+ 实用命令详解</a>最先出现在<a href="https://www.dixunblog.cn">帝讯博客</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dixunblog.cn/1742.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>eNSP常用配置命令实战：跟着做就能学会</title>
		<link>https://www.dixunblog.cn/1733.html</link>
					<comments>https://www.dixunblog.cn/1733.html#respond</comments>
		
		<dc:creator><![CDATA[老大]]></dc:creator>
		<pubDate>Fri, 24 Apr 2026 14:05:49 +0000</pubDate>
				<category><![CDATA[技术教程]]></category>
		<category><![CDATA[eNSP]]></category>
		<category><![CDATA[网络路由]]></category>
		<guid isPermaLink="false">https://www.dixunblog.cn/?p=1733</guid>

					<description><![CDATA[<p>学网络最大的痛点是什么？看了一大堆理论，命令背了一堆，但实际操作还是不会。 这篇文章换个方式：不讲理论，直接做实验。每个命令都配合一个具体场景，你跟着拓扑搭建、输入命令、验证效果，做完就学会了。 我们用eNSP模拟器，从最简单的开始，一步步做6个实战案例： 实验一：给路由器改名、配IP地址 这是最基础的配置，任何设备第一步都是改名和配IP。 实验场景 一台路由器，命名为R1，给接口配IP地址192.168.1.1/24。 拓扑搭建 打开eNSP，新建拓扑 拖入一台路由器（AR2220） 启动路由器 双击路由器，进入</p>
<p><a href="https://www.dixunblog.cn/1733.html">eNSP常用配置命令实战：跟着做就能学会</a>最先出现在<a href="https://www.dixunblog.cn">帝讯博客</a>。</p>
]]></description>
										<content:encoded><![CDATA[<p>学网络最大的痛点是什么？看了一大堆理论，命令背了一堆，但实际操作还是不会。</p>
<p>这篇文章换个方式：不讲理论，直接做实验。每个命令都配合一个具体场景，你跟着拓扑搭建、输入命令、验证效果，做完就学会了。</p>
<p>我们用eNSP模拟器，从最简单的开始，一步步做6个实战案例：</p>
<p><img loading="lazy" decoding="async" class="size-full wp-image-1734 aligncenter" title="c53dbaf39287c7001496dbe13f84ce5b" src="http://cdn.hyclive.cn/dixunblog/2026/04/c53dbaf39287c7001496dbe13f84ce5b.png" alt="c53dbaf39287c7001496dbe13f84ce5b" width="2730" height="1535" /></p>
<hr />
<h2>实验一：给路由器改名、配IP地址</h2>
<p>这是最基础的配置，任何设备第一步都是改名和配IP。</p>
<h3>实验场景</h3>
<p>一台路由器，命名为R1，给接口配IP地址192.168.1.1/24。</p>
<h3>拓扑搭建</h3>
<ol>
<li>打开eNSP，新建拓扑</li>
<li>拖入一台路由器（AR2220）</li>
<li>启动路由器</li>
<li>双击路由器，进入命令行界面</li>
</ol>
<h3>配置步骤</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 ">&lt;Huawei&gt;system-view
Enter system view, return user view with Ctrl+Z.
[Huawei]</code></pre>
<p>命令解释：</p>
<ul>
<li><code>system-view</code>：从用户视图进入系统视图（配置模式）</li>
<li>提示符从 <code>&lt;Huawei&gt;</code> 变成 <code>[Huawei]</code>，表示进入配置模式</li>
</ul>
<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 ">[Huawei]sysname R1
[R1]</code></pre>
<p>命令解释：</p>
<ul>
<li><code>sysname R1</code>：把设备名字改成R1</li>
<li>提示符变成 <code>[R1]</code>，说明改名成功</li>
</ul>
<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 ">[R1]interface GigabitEthernet 0/0/0
[R1-GigabitEthernet0/0/0]</code></pre>
<p>命令解释：</p>
<ul>
<li><code>interface GigabitEthernet 0/0/0</code>：进入GE0/0/0接口（路由器的第一个网口）</li>
<li>提示符变成 <code>[R1-GigabitEthernet0/0/0]</code>，表示在接口配置模式</li>
</ul>
<p>华为路由器的接口命名规则：</p>
<ul>
<li>GigabitEthernet = GE（千兆网口）</li>
<li>0/0/0 = 第0号槽位/第0号子卡/第0号接口</li>
</ul>
<hr />
<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 ">[R1-GigabitEthernet0/0/0]ip address 192.168.1.1 24
[R1-GigabitEthernet0/0/0]</code></pre>
<p>命令解释：</p>
<ul>
<li><code>ip address 192.168.1.1 24</code>：设置IP地址和子网掩码</li>
<li>24表示掩码位数（相当于255.255.255.0）</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 ">[R1-GigabitEthernet0/0/0]ip address 192.168.1.1 255.255.255.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 ">[R1-GigabitEthernet0/0/0]display this
#
interface GigabitEthernet0/0/0
 ip address 192.168.1.1 255.255.255.0
#
return</code></pre>
<p>命令解释：</p>
<ul>
<li><code>display this</code>：查看当前视图的配置</li>
<li>显示GE0/0/0接口的配置，IP地址已经配置成功</li>
</ul>
<hr />
<h3>实验验证：查看接口状态</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">[R1]display ip interface brief
*down: administratively down
!down: FIB overload down
...
Interface                   IP Address      Physical   Protocol  
GigabitEthernet0/0/0        192.168.1.1     up         up      </code></pre>
<p>命令解释：</p>
<ul>
<li><code>display ip interface brief</code>：查看所有接口的IP地址和状态</li>
<li>Physical = up（物理层正常）</li>
<li>Protocol = up（协议层正常）</li>
</ul>
<p>接口状态显示 <code>up up</code>，说明配置成功，接口正常工作。</p>
<hr />
<h2>实验二：两台路由器互通（静态路由）</h2>
<p>现在做个稍微复杂点的：两台路由器，配置静态路由让它们互通。</p>
<h3>实验场景</h3>
<p>两台路由器R1和R2，通过网线连接。R1的GE0/0/0接R2的GE0/0/0。</p>
<ul>
<li>R1：IP地址 192.168.1.1/24</li>
<li>R2：IP地址 192.168.1.2/24</li>
<li>目标：R1能ping通R2</li>
</ul>
<h3>拓扑搭建</h3>
<ol>
<li>拖入两台路由器（AR2220）</li>
<li>用Copper线连接R1的GE0/0/0和R2的GE0/0/0</li>
<li>启动两台路由器</li>
</ol>
<h3>R1配置</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">&lt;Huawei&gt;system-view
[Huawei]sysname R1
[R1]interface GigabitEthernet 0/0/0
[R1-GigabitEthernet0/0/0]ip address 192.168.1.1 24
[R1-GigabitEthernet0/0/0]quit</code></pre>
<hr />
<h3>R2配置</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">&lt;Huawei&gt;system-view
[Huawei]sysname R2
[R2]interface GigabitEthernet 0/0/0
[R2-GigabitEthernet0/0/0]ip address 192.168.1.2 24
[R2-GigabitEthernet0/0/0]quit</code></pre>
<hr />
<h3>实验验证：互相ping</h3>
<p><strong>在R1上pingR2：</strong></p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">[R1]ping 192.168.1.2
PING 192.168.1.2: 56  data bytes, press CTRL_C to break
    Reply from 192.168.1.2: bytes=56 Sequence=1 ttl=255 time=30 ms
    Reply from 192.168.1.2: bytes=56 Sequence=2 ttl=255 time=20 ms
    Reply from 192.168.1.2: bytes=56 Sequence=3 ttl=255 time=20 ms
    Reply from 192.168.1.2: bytes=56 Sequence=4 ttl=255 time=30 ms
    Reply from 192.168.1.2: bytes=56 Sequence=5 ttl=255 time=20 ms

  --- 192.168.1.2 ping statistics ---
  5 packet(s) transmitted
  5 packet(s) received
  0.00% packet loss
  round-trip min/avg/max = 20/24/30 ms</code></pre>
<p>命令解释：</p>
<ul>
<li><code>ping 192.168.1.2</code>：测试连通性</li>
<li>显示5个Reply，说明ping成功</li>
<li>packet loss = 0.00%，没有丢包</li>
</ul>
<p><strong>在R2上ping R1：</strong></p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">[R2]ping 192.168.1.1
PING 192.168.1.1: 56  data bytes, press CTRL_C to break
    Reply from 192.168.1.1: bytes=56 Sequence=1 ttl=255 time=20 ms
    ...
  --- 192.168.1.1 ping statistics ---
  5 packet(s) transmitted
  5 packet(s) received
  0.00% packet loss</code></pre>
<p>两边都能ping通，实验成功。</p>
<hr />
<h3>添加第三台路由器（需要静态路由）</h3>
<p>现在加一台R3，测试静态路由。</p>
<p>拓扑：</p>
<ul>
<li>R1（GE0/0/0） &#8212; （GE0/0/0）R2（GE0/0/1） &#8212; （GE0/0/0）R3</li>
<li>R1-GE0/0/0：192.168.1.1/24</li>
<li>R2-GE0/0/0：192.168.1.2/24</li>
<li>R2-GE0/0/1：192.168.2.1/24</li>
<li>R3-GE0/0/0：192.168.2.2/24</li>
</ul>
<p>问题：R1和R3不在同一个网段，直接ping不通，需要配置静态路由。</p>
<hr />
<h3>R3配置</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">&lt;Huawei&gt;system-view
[Huawei]sysname R3
[R3]interface GigabitEthernet 0/0/0
[R3-GigabitEthernet0/0/0]ip address 192.168.2.2 24</code></pre>
<hr />
<h3>R1配置静态路由</h3>
<p>R1要访问192.168.2.0网段（R3），需要告诉R1&#8243;去192.168.2.0找R2&#8243;。</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">[R1]ip route-static 192.168.2.0 24 192.168.1.2</code></pre>
<p>命令解释：</p>
<ul>
<li><code>ip route-static</code>：配置静态路由</li>
<li><code>192.168.2.0 24</code>：目标网段（R3所在的网段）</li>
<li><code>192.168.1.2</code>：下一跳地址（R2的IP，R1把数据发给R2）</li>
</ul>
<hr />
<h3>R3配置静态路由</h3>
<p>R3要访问192.168.1.0网段（R1），也需要配置路由：</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">[R3]ip route-static 192.168.1.0 24 192.168.2.1</code></pre>
<p>命令解释：</p>
<ul>
<li>目标网段：192.168.1.0（R1所在的网段）</li>
<li>下一跳：192.168.2.1（R2的另一个接口）</li>
</ul>
<hr />
<h3>实验验证：R1pingR3</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">[R1]ping 192.168.2.2
PING 192.168.2.2: 56  data bytes, press CTRL_C to break
    Reply from 192.168.2.2: bytes=56 Sequence=1 ttl=254 time=50 ms
    Reply from 192.168.2.2: bytes=56 Sequence=2 ttl=254 time=40 ms
    ...

  --- 192.168.2.2 ping statistics ---
  5 packet(s) transmitted
  5 packet(s) received
  0.00% packet loss</code></pre>
<p>ttl=254（经过了一次路由转发，ttl减1），说明路由生效。</p>
<hr />
<h3>查看路由表</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">[R1]display ip routing-table
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
         Destinations : 6        Routes : 6        

Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

192.168.1.0/24      Direct  0    0           D   192.168.1.1     GE0/0/0
192.168.1.1/32      Direct  0    0           D   127.0.0.1       GE0/0/0
192.168.2.0/24      Static  60   0          RD   192.168.1.2     GE0/0/0</code></pre>
<p>命令解释：</p>
<ul>
<li><code>display ip routing-table</code>：查看路由表</li>
<li>192.168.1.0/24 是直连路由（Direct），自己接口配置的</li>
<li>192.168.2.0/24 是静态路由（Static），我们刚才配置的</li>
</ul>
<hr />
<h2>实验三：交换机VLAN配置</h2>
<p>现在做交换机的VLAN实验，把不同接口划分到不同VLAN。</p>
<h3>实验场景</h3>
<p>一台交换机S1，三个接口：</p>
<ul>
<li>GE0/0/1：VLAN 10（部门A）</li>
<li>GE0/0/2：VLAN 20（部门B）</li>
<li>GE0/0/3：Trunk（连接路由器）</li>
</ul>
<h3>拓扑搭建</h3>
<ol>
<li>拖入一台交换机（S5700）</li>
<li>拖入两台PC（用PC代替部门A和部门B）</li>
<li>PC1接S1的GE0/0/1，PC2接S1的GE0/0/2</li>
</ol>
<h3>交换机配置</h3>
<p><strong>第一步：创建VLAN</strong></p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">&lt;Huawei&gt;system-view
[Huawei]sysname S1
[S1]vlan batch 10 20</code></pre>
<p>命令解释：</p>
<ul>
<li><code>vlan batch 10 20</code>：批量创建VLAN 10和VLAN 20</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 ">[S1]vlan 10
[S1-vlan10]quit
[S1]vlan 20
[S1-vlan20]quit</code></pre>
<hr />
<p><strong>第二步：接口加入VLAN</strong></p>
<p>把GE0/0/1加入VLAN 10：</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">[S1]interface GigabitEthernet 0/0/1
[S1-GigabitEthernet0/0/1]port link-type access
[S1-GigabitEthernet0/0/1]port default vlan 10</code></pre>
<p>命令解释：</p>
<ul>
<li><code>port link-type access</code>：设置接口类型为Access（接入端口，连接PC）</li>
<li><code>port default vlan 10</code>：把接口加入VLAN 10</li>
</ul>
<p>把GE0/0/2加入VLAN 20：</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">[S1]interface GigabitEthernet 0/0/2
[S1-GigabitEthernet0/0/2]port link-type access
[S1-GigabitEthernet0/0/2]port default vlan 20</code></pre>
<hr />
<p><strong>第三步：配置Trunk端口</strong></p>
<p>GE0/0/3连接路由器，需要配置为Trunk（允许多个VLAN通过）：</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">[S1]interface GigabitEthernet 0/0/3
[S1-GigabitEthernet0/0/3]port link-type trunk
[S1-GigabitEthernet0/0/3]port trunk allow-pass vlan 10 20</code></pre>
<p>命令解释：</p>
<ul>
<li><code>port link-type trunk</code>：设置接口类型为Trunk（干道端口）</li>
<li><code>port trunk allow-pass vlan 10 20</code>：允许VLAN 10和20通过</li>
</ul>
<hr />
<h3>实验验证：查看VLAN配置</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">[S1]display vlan
The total number of vlans is : 3
U: Up;         D: Down;         TG: Tagged;         UT: UnTagged;
MP: Vlan-mapping port;         ST: Vlan-stacking port;
...
VID  Type    Ports                           
10   common  UT:GE0/0/1              TG:GE0/0/3     
20   common  UT:GE0/0/2              TG:GE0/0/3     </code></pre>
<p>命令解释：</p>
<ul>
<li><code>display vlan</code>：查看VLAN信息</li>
<li>VID 10：GE0/0/1是Untagged（属于VLAN 10），GE0/0/3是Tagged（Trunk端口）</li>
<li>VID 20：GE0/0/2是Untagged（属于VLAN 20），GE0/0/3是Tagged</li>
</ul>
<hr />
<h2>实验四：OSPF动态路由（三台路由器）</h2>
<p>静态路由手动配置，适合小型网络。大型网络用动态路由，路由器自动学习路由表。</p>
<p>OSPF是最常用的动态路由协议。</p>
<h3>实验场景</h3>
<p>三台路由器R1、R2、R3，组成一个三角形拓扑：</p>
<ul>
<li>R1（GE0/0/0）192.168.1.1 &#8212; R2（GE0/0/0）192.168.1.2</li>
<li>R2（GE0/0/1）192.168.2.1 &#8212; R3（GE0/0/0）192.168.2.2</li>
<li>R1（GE0/0/1）192.168.3.1 &#8212; R3（GE0/0/1）192.168.3.2</li>
</ul>
<p>目标：配置OSPF，三台路由器自动学习路由表，互相ping通。</p>
<h3>配置思路</h3>
<ol>
<li>先配置各接口IP地址</li>
<li>启动OSPF进程</li>
<li>指定Router ID</li>
<li>把接口加入OSPF区域</li>
</ol>
<hr />
<h3>R1配置</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">&lt;Huawei&gt;system-view
[Huawei]sysname R1
[R1]interface GigabitEthernet 0/0/0
[R1-GigabitEthernet0/0/0]ip address 192.168.1.1 24
[R1]interface GigabitEthernet 0/0/1
[R1-GigabitEthernet0/0/1]ip address 192.168.3.1 24

[R1]ospf 1 router-id 1.1.1.1
[R1-ospf-1]area 0
[R1-ospf-1-area-0.0.0.0]network 192.168.1.0 0.0.0.255
[R1-ospf-1-area-0.0.0.0]network 192.168.3.0 0.0.0.255</code></pre>
<p>命令解释：</p>
<ul>
<li><code>ospf 1</code>：启动OSPF进程1</li>
<li><code>router-id 1.1.1.1</code>：指定Router ID（唯一标识，建议用IP地址格式）</li>
<li><code>area 0</code>：进入区域0（骨干区域）</li>
<li><code>network 192.168.1.0 0.0.0.255</code>：把192.168.1.0网段加入OSPF</li>
</ul>
<hr />
<h3>R2配置</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">&lt;Huawei&gt;system-view
[Huawei]sysname R2
[R2]interface GigabitEthernet 0/0/0
[R2-GigabitEthernet0/0/0]ip address 192.168.1.2 24
[R2]interface GigabitEthernet 0/0/1
[R2-GigabitEthernet0/0/1]ip address 192.168.2.1 24

[R2]ospf 1 router-id 2.2.2.2
[R2-ospf-1]area 0
[R2-ospf-1-area-0.0.0.0]network 192.168.1.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0]network 192.168.2.0 0.0.0.255</code></pre>
<hr />
<h3>R3配置</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">&lt;Huawei&gt;system-view
[Huawei]sysname R3
[R3]interface GigabitEthernet 0/0/0
[R3-GigabitEthernet0/0/0]ip address 192.168.2.2 24
[R3]interface GigabitEthernet 0/0/1
[R3-GigabitEthernet0/0/1]ip address 192.168.3.2 24

[R3]ospf 1 router-id 3.3.3.3
[R3-ospf-1]area 0
[R3-ospf-1-area-0.0.0.0]network 192.168.2.0 0.0.0.255
[R3-ospf-1-area-0.0.0.0]network 192.168.3.0 0.0.0.255</code></pre>
<hr />
<h3>实验验证：查看OSPF邻居</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">[R1]display ospf peer brief

OSPF Process 1 with Router ID 1.1.1.1
         Peer Brief Information
-------------------------------------------------------------------------------
Area Id          Interface                        Neighbor id      State    
0.0.0.0          GE0/0/0                          2.2.2.2          Full     
0.0.0.0          GE0/0/1                          3.3.3.3          Full     </code></pre>
<p>命令解释：</p>
<ul>
<li><code>display ospf peer brief</code>：查看OSPF邻居关系</li>
<li>State = Full（邻居关系建立成功）</li>
<li>R1有两个邻居：R2（2.2.2.2）和R3（3.3.3.3）</li>
</ul>
<hr />
<h3>实验验证：查看路由表</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">[R1]display ip routing-table protocol ospf
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
         Destinations : 2        Routes : 2        

Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

192.168.2.0/24      OSPF    10   2           D   192.168.1.2     GE0/0/0
                    OSPF    10   2           D   192.168.3.2     GE0/0/1</code></pre>
<p>命令解释：</p>
<ul>
<li><code>display ip routing-table protocol ospf</code>：查看OSPF学习到的路由</li>
<li>192.168.2.0/24：OSPF自动学习的路由（Proto=OSPF）</li>
</ul>
<hr />
<h3>实验验证：ping测试</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">[R1]ping 192.168.2.2
PING 192.168.2.2: 56  data bytes, press CTRL_C to break
    Reply from 192.168.2.2: bytes=56 Sequence=1 ttl=254 time=50 ms
    ...

  --- 192.168.2.2 ping statistics ---
  5 packet(s) transmitted
  5 packet(s) received
  0.00% packet loss</code></pre>
<p>R1能ping通R3，OSPF路由生效。</p>
<hr />
<h2>实验五：DHCP自动分配IP地址</h2>
<p>路由器当DHCP服务器，给PC自动分配IP地址。</p>
<h3>实验场景</h3>
<p>路由器R1连接一台PC，R1当DHCP服务器，PC自动获取IP地址。</p>
<h3>拓扑搭建</h3>
<ol>
<li>拖入一台路由器（AR2220）</li>
<li>拖入一台PC</li>
<li>用Copper线连接</li>
</ol>
<h3>R1配置（DHCP服务器）</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">&lt;Huawei&gt;system-view
[Huawei]sysname R1
[R1]interface GigabitEthernet 0/0/0
[R1-GigabitEthernet0/0/0]ip address 192.168.1.1 24

[R1]dhcp enable
[R1]interface GigabitEthernet 0/0/0
[R1-GigabitEthernet0/0/0]dhcp select interface
[R1-GigabitEthernet0/0/0]dhcp server dns-list 8.8.8.8</code></pre>
<p>命令解释：</p>
<ul>
<li><code>dhcp enable</code>：全局开启DHCP服务</li>
<li><code>dhcp select interface</code>：基于接口配置DHCP（自动分配该接口网段的IP）</li>
<li><code>dhcp server dns-list 8.8.8.8</code>：指定DNS服务器</li>
</ul>
<hr />
<h3>实验验证：PC获取IP地址</h3>
<p>在PC上：</p>
<ol>
<li>打开PC命令行</li>
<li>输入 <code>ipconfig</code>（查看IP地址）</li>
</ol>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">PC&gt;ipconfig

Link local IPv6 Address...........: fe80::20c:29ff:fef6:7e52
IPv6 Address......................: :: / 64
IPv4 Address......................: 192.168.1.254
Subnet Mask.......................: 255.255.255.0
Default Gateway...................: 192.168.1.1
DNS Server......................: 8.8.8.8</code></pre>
<p>PC自动获取了IP地址192.168.1.254，说明DHCP生效。</p>
<hr />
<h2>实验六：ACL访问控制列表</h2>
<p>ACL用来控制网络访问权限，比如禁止某个网段访问某个服务器。</p>
<h3>实验场景</h3>
<p>R1连接两个网段：</p>
<ul>
<li>192.168.1.0网段（部门A）</li>
<li>192.168.2.0网段（部门B）</li>
</ul>
<p>要求：禁止192.168.1.0网段ping192.168.2.0网段。</p>
<h3>拓扑搭建</h3>
<ol>
<li>拖入一台路由器（AR2220）</li>
<li>拖入两台PC（PC1和PC2）</li>
<li>R1的GE0/0/0接PC1，GE0/0/1接PC2</li>
</ol>
<h3>R1配置ACL</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">&lt;Huawei&gt;system-view
[Huawei]sysname R1
[R1]interface GigabitEthernet 0/0/0
[R1-GigabitEthernet0/0/0]ip address 192.168.1.1 24
[R1]interface GigabitEthernet 0/0/1
[R1-GigabitEthernet0/0/1]ip address 192.168.2.1 24

[R1]acl 2000
[R1-acl-basic-2000]rule deny source 192.168.1.0 0.0.0.255
[R1-acl-basic-2000]rule permit source any

[R1]interface GigabitEthernet 0/0/1
[R1-GigabitEthernet0/0/1]traffic-filter outbound acl 2000</code></pre>
<p>命令解释：</p>
<ul>
<li><code>acl 2000</code>：创建基本ACL（编号2000-2999）</li>
<li><code>rule deny source 192.168.1.0 0.0.0.255</code>：禁止192.168.1.0网段</li>
<li><code>rule permit source any</code>：允许其他所有网段</li>
<li><code>traffic-filter outbound acl 2000</code>：在GE0/0/1出方向应用ACL</li>
</ul>
<hr />
<h3>实验验证：ping测试</h3>
<p><strong>PC1（192.168.1.x）pingPC2（192.168.2.x）：</strong></p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">PC&gt;ping 192.168.2.10
Ping 192.168.2.10: 32 data bytes, Request timed out.
Request timed out.
Request timed out.
Request timed out.
Ping statistics for 192.168.2.10:
    Packets: Sent = 4, Received = 0, Lost = 4 (100% loss)</code></pre>
<p>ping失败，100%丢包，ACL生效，192.168.1.0网段被禁止访问。</p>
<hr />
<h3>查看ACL配置</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">[R1]display acl 2000
Basic ACL 2000, 2 rules
Acl's step is 5
rule 5 deny source 192.168.1.0 0.0.0.255
rule 10 permit source any</code></pre>
<p>ACL规则已配置成功。</p>
<hr />
<h2>常用命令总结</h2>
<p>这篇文章做了6个实验，用到了这些核心命令：</p>
<h3>基础配置命令</h3>
<table>
<thead>
<tr>
<th>命令</th>
<th>功能</th>
<th>使用场景</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>system-view</code></td>
<td>进入系统视图</td>
<td>所有配置的第一步</td>
</tr>
<tr>
<td><code>sysname R1</code></td>
<td>改设备名</td>
<td>给路由器/交换机命名</td>
</tr>
<tr>
<td><code>interface GE0/0/0</code></td>
<td>进入接口视图</td>
<td>配置接口IP</td>
</tr>
<tr>
<td><code>ip address x.x.x.x 24</code></td>
<td>配IP地址</td>
<td>给接口配IP</td>
</tr>
<tr>
<td><code>display ip interface brief</code></td>
<td>查看接口状态</td>
<td>验证配置结果</td>
</tr>
<tr>
<td><code>display this</code></td>
<td>查看当前配置</td>
<td>查看刚配置的内容</td>
</tr>
<tr>
<td><code>quit</code></td>
<td>退出当前视图</td>
<td>返回上一级</td>
</tr>
</tbody>
</table>
<h3>路由配置命令</h3>
<table>
<thead>
<tr>
<th>命令</th>
<th>功能</th>
<th>使用场景</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>ip route-static 目标网段掩码下一跳</code></td>
<td>配静态路由</td>
<td>手动指定路由</td>
</tr>
<tr>
<td><code>ospf 1 router-id x.x.x.x</code></td>
<td>启动OSPF</td>
<td>动态路由协议</td>
</tr>
<tr>
<td><code>network 网段反掩码</code></td>
<td>加入OSPF区域</td>
<td>声明参与OSPF的网段</td>
</tr>
<tr>
<td><code>display ip routing-table</code></td>
<td>查看路由表</td>
<td>查看所有路由</td>
</tr>
<tr>
<td><code>display ospf peer brief</code></td>
<td>查看OSPF邻居</td>
<td>验证邻居关系</td>
</tr>
</tbody>
</table>
<h3>交换机命令</h3>
<table>
<thead>
<tr>
<th>命令</th>
<th>功能</th>
<th>使用场景</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>vlan batch 10 20</code></td>
<td>创建VLAN</td>
<td>批量创建多个VLAN</td>
</tr>
<tr>
<td><code>port link-type access</code></td>
<td>设接口类型</td>
<td>连接PC的端口</td>
</tr>
<tr>
<td><code>port default vlan 10</code></td>
<td>加入VLAN</td>
<td>把端口加入指定VLAN</td>
</tr>
<tr>
<td><code>port link-type trunk</code></td>
<td>设Trunk端口</td>
<td>连接路由器/交换机的端口</td>
</tr>
<tr>
<td><code>port trunk allow-pass vlan 10 20</code></td>
<td>允许VLAN通过</td>
<td>Trunk端口允许哪些VLAN</td>
</tr>
<tr>
<td><code>display vlan</code></td>
<td>查看VLAN信息</td>
<td>验证VLAN配置</td>
</tr>
</tbody>
</table>
<h3>其他命令</h3>
<table>
<thead>
<tr>
<th>命令</th>
<th>功能</th>
<th>使用场景</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>ping x.x.x.x</code></td>
<td>测试连通性</td>
<td>验证网络是否通</td>
</tr>
<tr>
<td><code>dhcp enable</code></td>
<td>开启DHCP</td>
<td>路由器当DHCP服务器</td>
</tr>
<tr>
<td><code>dhcp select interface</code></td>
<td>基于接口DHCP</td>
<td>自动分配接口网段IP</td>
</tr>
<tr>
<td><code>acl 2000</code></td>
<td>创建ACL</td>
<td>访问控制列表</td>
</tr>
<tr>
<td><code>traffic-filter outbound acl 2000</code></td>
<td>应用ACL</td>
<td>在接口应用ACL规则</td>
</tr>
</tbody>
</table>
<hr />
<h2>学命令的几个建议</h2>
<h3>1. 跟着做实验，别只看文章</h3>
<p>看完这篇文章，打开eNSP，自己搭建拓扑，输入命令，验证效果。动手做一遍，比看十遍都管用。</p>
<h3>2. 命令记不住没关系，用多了自然记住</h3>
<p>刚开始不熟悉命令，可以查文章、查手册。做几个实验后，常用命令自然就记住了。没必要死记硬背。</p>
<h3>3. 先理解场景，再记命令</h3>
<p>每个命令都有使用场景。理解了场景（比如为什么要配静态路由），命令就有意义了。不理解场景，命令就是一堆字符。</p>
<h3>4. 验证效果很重要</h3>
<p>每个实验都做了验证（ping测试、查看配置）。不验证，不知道配置是否生效。养成验证的习惯。</p>
<hr />
<p>这篇文章用6个实验演示了eNSP常用命令。跟着做一遍，基本就学会了。下次遇到类似场景，直接照着配置就行。</p>
<hr />
<h2>实验一：给路由器改名、配IP地址</h2>
<p>这是最基础的配置，任何设备第一步都是改名和配IP。</p>
<h3>实验场景</h3>
<p>一台路由器，命名为R1，给接口配IP地址192.168.1.1/24。</p>
<h3>拓扑搭建</h3>
<ol>
<li>打开eNSP，新建拓扑</li>
<li>拖入一台路由器（AR2220）</li>
<li>启动路由器</li>
<li>双击路由器，进入命令行界面</li>
</ol>
<h3>配置步骤</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 ">&lt;Huawei&gt;system-view
Enter system view, return user view with Ctrl+Z.
[Huawei]</code></pre>
<p>命令解释：</p>
<ul>
<li><code>system-view</code>：从用户视图进入系统视图（配置模式）</li>
<li>提示符从 <code>&lt;Huawei&gt;</code> 变成 <code>[Huawei]</code>，表示进入配置模式</li>
</ul>
<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 ">[Huawei]sysname R1
[R1]</code></pre>
<p>命令解释：</p>
<ul>
<li><code>sysname R1</code>：把设备名字改成R1</li>
<li>提示符变成 <code>[R1]</code>，说明改名成功</li>
</ul>
<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 ">[R1]interface GigabitEthernet 0/0/0
[R1-GigabitEthernet0/0/0]</code></pre>
<p>命令解释：</p>
<ul>
<li><code>interface GigabitEthernet 0/0/0</code>：进入GE0/0/0接口（路由器的第一个网口）</li>
<li>提示符变成 <code>[R1-GigabitEthernet0/0/0]</code>，表示在接口配置模式</li>
</ul>
<p>华为路由器的接口命名规则：</p>
<ul>
<li>GigabitEthernet = GE（千兆网口）</li>
<li>0/0/0 = 第0号槽位/第0号子卡/第0号接口</li>
</ul>
<hr />
<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 ">[R1-GigabitEthernet0/0/0]ip address 192.168.1.1 24
[R1-GigabitEthernet0/0/0]</code></pre>
<p>命令解释：</p>
<ul>
<li><code>ip address 192.168.1.1 24</code>：设置IP地址和子网掩码</li>
<li>24表示掩码位数（相当于255.255.255.0）</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 ">[R1-GigabitEthernet0/0/0]ip address 192.168.1.1 255.255.255.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 ">[R1-GigabitEthernet0/0/0]display this
#
interface GigabitEthernet0/0/0
 ip address 192.168.1.1 255.255.255.0
#
return</code></pre>
<p>命令解释：</p>
<ul>
<li><code>display this</code>：查看当前视图的配置</li>
<li>显示GE0/0/0接口的配置，IP地址已经配置成功</li>
</ul>
<hr />
<h3>实验验证：查看接口状态</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">[R1]display ip interface brief
*down: administratively down
!down: FIB overload down
...
Interface                   IP Address      Physical   Protocol  
GigabitEthernet0/0/0        192.168.1.1     up         up      </code></pre>
<p>命令解释：</p>
<ul>
<li><code>display ip interface brief</code>：查看所有接口的IP地址和状态</li>
<li>Physical = up（物理层正常）</li>
<li>Protocol = up（协议层正常）</li>
</ul>
<p>接口状态显示 <code>up up</code>，说明配置成功，接口正常工作。</p>
<hr />
<h2>实验二：两台路由器互通（静态路由）</h2>
<p>现在做个稍微复杂点的：两台路由器，配置静态路由让它们互通。</p>
<h3>实验场景</h3>
<p>两台路由器R1和R2，通过网线连接。R1的GE0/0/0接R2的GE0/0/0。</p>
<ul>
<li>R1：IP地址 192.168.1.1/24</li>
<li>R2：IP地址 192.168.1.2/24</li>
<li>目标：R1能ping通R2</li>
</ul>
<h3>拓扑搭建</h3>
<ol>
<li>拖入两台路由器（AR2220）</li>
<li>用Copper线连接R1的GE0/0/0和R2的GE0/0/0</li>
<li>启动两台路由器</li>
</ol>
<h3>R1配置</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">&lt;Huawei&gt;system-view
[Huawei]sysname R1
[R1]interface GigabitEthernet 0/0/0
[R1-GigabitEthernet0/0/0]ip address 192.168.1.1 24
[R1-GigabitEthernet0/0/0]quit</code></pre>
<hr />
<h3>R2配置</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">&lt;Huawei&gt;system-view
[Huawei]sysname R2
[R2]interface GigabitEthernet 0/0/0
[R2-GigabitEthernet0/0/0]ip address 192.168.1.2 24
[R2-GigabitEthernet0/0/0]quit</code></pre>
<hr />
<h3>实验验证：互相ping</h3>
<p><strong>在R1上pingR2：</strong></p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">[R1]ping 192.168.1.2
PING 192.168.1.2: 56  data bytes, press CTRL_C to break
    Reply from 192.168.1.2: bytes=56 Sequence=1 ttl=255 time=30 ms
    Reply from 192.168.1.2: bytes=56 Sequence=2 ttl=255 time=20 ms
    Reply from 192.168.1.2: bytes=56 Sequence=3 ttl=255 time=20 ms
    Reply from 192.168.1.2: bytes=56 Sequence=4 ttl=255 time=30 ms
    Reply from 192.168.1.2: bytes=56 Sequence=5 ttl=255 time=20 ms

  --- 192.168.1.2 ping statistics ---
  5 packet(s) transmitted
  5 packet(s) received
  0.00% packet loss
  round-trip min/avg/max = 20/24/30 ms</code></pre>
<p>命令解释：</p>
<ul>
<li><code>ping 192.168.1.2</code>：测试连通性</li>
<li>显示5个Reply，说明ping成功</li>
<li>packet loss = 0.00%，没有丢包</li>
</ul>
<p><strong>在R2上ping R1：</strong></p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">[R2]ping 192.168.1.1
PING 192.168.1.1: 56  data bytes, press CTRL_C to break
    Reply from 192.168.1.1: bytes=56 Sequence=1 ttl=255 time=20 ms
    ...
  --- 192.168.1.1 ping statistics ---
  5 packet(s) transmitted
  5 packet(s) received
  0.00% packet loss</code></pre>
<p>两边都能ping通，实验成功。</p>
<hr />
<h3>添加第三台路由器（需要静态路由）</h3>
<p>现在加一台R3，测试静态路由。</p>
<p>拓扑：</p>
<ul>
<li>R1（GE0/0/0） &#8212; （GE0/0/0）R2（GE0/0/1） &#8212; （GE0/0/0）R3</li>
<li>R1-GE0/0/0：192.168.1.1/24</li>
<li>R2-GE0/0/0：192.168.1.2/24</li>
<li>R2-GE0/0/1：192.168.2.1/24</li>
<li>R3-GE0/0/0：192.168.2.2/24</li>
</ul>
<p>问题：R1和R3不在同一个网段，直接ping不通，需要配置静态路由。</p>
<hr />
<h3>R3配置</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">&lt;Huawei&gt;system-view
[Huawei]sysname R3
[R3]interface GigabitEthernet 0/0/0
[R3-GigabitEthernet0/0/0]ip address 192.168.2.2 24</code></pre>
<hr />
<h3>R1配置静态路由</h3>
<p>R1要访问192.168.2.0网段（R3），需要告诉R1&#8243;去192.168.2.0找R2&#8243;。</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">[R1]ip route-static 192.168.2.0 24 192.168.1.2</code></pre>
<p>命令解释：</p>
<ul>
<li><code>ip route-static</code>：配置静态路由</li>
<li><code>192.168.2.0 24</code>：目标网段（R3所在的网段）</li>
<li><code>192.168.1.2</code>：下一跳地址（R2的IP，R1把数据发给R2）</li>
</ul>
<hr />
<h3>R3配置静态路由</h3>
<p>R3要访问192.168.1.0网段（R1），也需要配置路由：</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">[R3]ip route-static 192.168.1.0 24 192.168.2.1</code></pre>
<p>命令解释：</p>
<ul>
<li>目标网段：192.168.1.0（R1所在的网段）</li>
<li>下一跳：192.168.2.1（R2的另一个接口）</li>
</ul>
<hr />
<h3>实验验证：R1pingR3</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">[R1]ping 192.168.2.2
PING 192.168.2.2: 56  data bytes, press CTRL_C to break
    Reply from 192.168.2.2: bytes=56 Sequence=1 ttl=254 time=50 ms
    Reply from 192.168.2.2: bytes=56 Sequence=2 ttl=254 time=40 ms
    ...

  --- 192.168.2.2 ping statistics ---
  5 packet(s) transmitted
  5 packet(s) received
  0.00% packet loss</code></pre>
<p>ttl=254（经过了一次路由转发，ttl减1），说明路由生效。</p>
<hr />
<h3>查看路由表</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">[R1]display ip routing-table
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
         Destinations : 6        Routes : 6        

Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

192.168.1.0/24      Direct  0    0           D   192.168.1.1     GE0/0/0
192.168.1.1/32      Direct  0    0           D   127.0.0.1       GE0/0/0
192.168.2.0/24      Static  60   0          RD   192.168.1.2     GE0/0/0</code></pre>
<p>命令解释：</p>
<ul>
<li><code>display ip routing-table</code>：查看路由表</li>
<li>192.168.1.0/24 是直连路由（Direct），自己接口配置的</li>
<li>192.168.2.0/24 是静态路由（Static），我们刚才配置的</li>
</ul>
<hr />
<h2>实验三：交换机VLAN配置</h2>
<p>现在做交换机的VLAN实验，把不同接口划分到不同VLAN。</p>
<h3>实验场景</h3>
<p>一台交换机S1，三个接口：</p>
<ul>
<li>GE0/0/1：VLAN 10（部门A）</li>
<li>GE0/0/2：VLAN 20（部门B）</li>
<li>GE0/0/3：Trunk（连接路由器）</li>
</ul>
<h3>拓扑搭建</h3>
<ol>
<li>拖入一台交换机（S5700）</li>
<li>拖入两台PC（用PC代替部门A和部门B）</li>
<li>PC1接S1的GE0/0/1，PC2接S1的GE0/0/2</li>
</ol>
<h3>交换机配置</h3>
<p><strong>第一步：创建VLAN</strong></p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">&lt;Huawei&gt;system-view
[Huawei]sysname S1
[S1]vlan batch 10 20</code></pre>
<p>命令解释：</p>
<ul>
<li><code>vlan batch 10 20</code>：批量创建VLAN 10和VLAN 20</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 ">[S1]vlan 10
[S1-vlan10]quit
[S1]vlan 20
[S1-vlan20]quit</code></pre>
<hr />
<p><strong>第二步：接口加入VLAN</strong></p>
<p>把GE0/0/1加入VLAN 10：</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">[S1]interface GigabitEthernet 0/0/1
[S1-GigabitEthernet0/0/1]port link-type access
[S1-GigabitEthernet0/0/1]port default vlan 10</code></pre>
<p>命令解释：</p>
<ul>
<li><code>port link-type access</code>：设置接口类型为Access（接入端口，连接PC）</li>
<li><code>port default vlan 10</code>：把接口加入VLAN 10</li>
</ul>
<p>把GE0/0/2加入VLAN 20：</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">[S1]interface GigabitEthernet 0/0/2
[S1-GigabitEthernet0/0/2]port link-type access
[S1-GigabitEthernet0/0/2]port default vlan 20</code></pre>
<hr />
<p><strong>第三步：配置Trunk端口</strong></p>
<p>GE0/0/3连接路由器，需要配置为Trunk（允许多个VLAN通过）：</p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">[S1]interface GigabitEthernet 0/0/3
[S1-GigabitEthernet0/0/3]port link-type trunk
[S1-GigabitEthernet0/0/3]port trunk allow-pass vlan 10 20</code></pre>
<p>命令解释：</p>
<ul>
<li><code>port link-type trunk</code>：设置接口类型为Trunk（干道端口）</li>
<li><code>port trunk allow-pass vlan 10 20</code>：允许VLAN 10和20通过</li>
</ul>
<hr />
<h3>实验验证：查看VLAN配置</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">[S1]display vlan
The total number of vlans is : 3
U: Up;         D: Down;         TG: Tagged;         UT: UnTagged;
MP: Vlan-mapping port;         ST: Vlan-stacking port;
...
VID  Type    Ports                           
10   common  UT:GE0/0/1              TG:GE0/0/3     
20   common  UT:GE0/0/2              TG:GE0/0/3     </code></pre>
<p>命令解释：</p>
<ul>
<li><code>display vlan</code>：查看VLAN信息</li>
<li>VID 10：GE0/0/1是Untagged（属于VLAN 10），GE0/0/3是Tagged（Trunk端口）</li>
<li>VID 20：GE0/0/2是Untagged（属于VLAN 20），GE0/0/3是Tagged</li>
</ul>
<hr />
<h2>实验四：OSPF动态路由（三台路由器）</h2>
<p>静态路由手动配置，适合小型网络。大型网络用动态路由，路由器自动学习路由表。</p>
<p>OSPF是最常用的动态路由协议。</p>
<h3>实验场景</h3>
<p>三台路由器R1、R2、R3，组成一个三角形拓扑：</p>
<ul>
<li>R1（GE0/0/0）192.168.1.1 &#8212; R2（GE0/0/0）192.168.1.2</li>
<li>R2（GE0/0/1）192.168.2.1 &#8212; R3（GE0/0/0）192.168.2.2</li>
<li>R1（GE0/0/1）192.168.3.1 &#8212; R3（GE0/0/1）192.168.3.2</li>
</ul>
<p>目标：配置OSPF，三台路由器自动学习路由表，互相ping通。</p>
<h3>配置思路</h3>
<ol>
<li>先配置各接口IP地址</li>
<li>启动OSPF进程</li>
<li>指定Router ID</li>
<li>把接口加入OSPF区域</li>
</ol>
<hr />
<h3>R1配置</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">&lt;Huawei&gt;system-view
[Huawei]sysname R1
[R1]interface GigabitEthernet 0/0/0
[R1-GigabitEthernet0/0/0]ip address 192.168.1.1 24
[R1]interface GigabitEthernet 0/0/1
[R1-GigabitEthernet0/0/1]ip address 192.168.3.1 24

[R1]ospf 1 router-id 1.1.1.1
[R1-ospf-1]area 0
[R1-ospf-1-area-0.0.0.0]network 192.168.1.0 0.0.0.255
[R1-ospf-1-area-0.0.0.0]network 192.168.3.0 0.0.0.255</code></pre>
<p>命令解释：</p>
<ul>
<li><code>ospf 1</code>：启动OSPF进程1</li>
<li><code>router-id 1.1.1.1</code>：指定Router ID（唯一标识，建议用IP地址格式）</li>
<li><code>area 0</code>：进入区域0（骨干区域）</li>
<li><code>network 192.168.1.0 0.0.0.255</code>：把192.168.1.0网段加入OSPF</li>
</ul>
<hr />
<h3>R2配置</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">&lt;Huawei&gt;system-view
[Huawei]sysname R2
[R2]interface GigabitEthernet 0/0/0
[R2-GigabitEthernet0/0/0]ip address 192.168.1.2 24
[R2]interface GigabitEthernet 0/0/1
[R2-GigabitEthernet0/0/1]ip address 192.168.2.1 24

[R2]ospf 1 router-id 2.2.2.2
[R2-ospf-1]area 0
[R2-ospf-1-area-0.0.0.0]network 192.168.1.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0]network 192.168.2.0 0.0.0.255</code></pre>
<hr />
<h3>R3配置</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">&lt;Huawei&gt;system-view
[Huawei]sysname R3
[R3]interface GigabitEthernet 0/0/0
[R3-GigabitEthernet0/0/0]ip address 192.168.2.2 24
[R3]interface GigabitEthernet 0/0/1
[R3-GigabitEthernet0/0/1]ip address 192.168.3.2 24

[R3]ospf 1 router-id 3.3.3.3
[R3-ospf-1]area 0
[R3-ospf-1-area-0.0.0.0]network 192.168.2.0 0.0.0.255
[R3-ospf-1-area-0.0.0.0]network 192.168.3.0 0.0.0.255</code></pre>
<hr />
<h3>实验验证：查看OSPF邻居</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">[R1]display ospf peer brief

OSPF Process 1 with Router ID 1.1.1.1
         Peer Brief Information
-------------------------------------------------------------------------------
Area Id          Interface                        Neighbor id      State    
0.0.0.0          GE0/0/0                          2.2.2.2          Full     
0.0.0.0          GE0/0/1                          3.3.3.3          Full     </code></pre>
<p>命令解释：</p>
<ul>
<li><code>display ospf peer brief</code>：查看OSPF邻居关系</li>
<li>State = Full（邻居关系建立成功）</li>
<li>R1有两个邻居：R2（2.2.2.2）和R3（3.3.3.3）</li>
</ul>
<hr />
<h3>实验验证：查看路由表</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">[R1]display ip routing-table protocol ospf
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
         Destinations : 2        Routes : 2        

Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

192.168.2.0/24      OSPF    10   2           D   192.168.1.2     GE0/0/0
                    OSPF    10   2           D   192.168.3.2     GE0/0/1</code></pre>
<p>命令解释：</p>
<ul>
<li><code>display ip routing-table protocol ospf</code>：查看OSPF学习到的路由</li>
<li>192.168.2.0/24：OSPF自动学习的路由（Proto=OSPF）</li>
</ul>
<hr />
<h3>实验验证：ping测试</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">[R1]ping 192.168.2.2
PING 192.168.2.2: 56  data bytes, press CTRL_C to break
    Reply from 192.168.2.2: bytes=56 Sequence=1 ttl=254 time=50 ms
    ...

  --- 192.168.2.2 ping statistics ---
  5 packet(s) transmitted
  5 packet(s) received
  0.00% packet loss</code></pre>
<p>R1能ping通R3，OSPF路由生效。</p>
<hr />
<h2>实验五：DHCP自动分配IP地址</h2>
<p>路由器当DHCP服务器，给PC自动分配IP地址。</p>
<h3>实验场景</h3>
<p>路由器R1连接一台PC，R1当DHCP服务器，PC自动获取IP地址。</p>
<h3>拓扑搭建</h3>
<ol>
<li>拖入一台路由器（AR2220）</li>
<li>拖入一台PC</li>
<li>用Copper线连接</li>
</ol>
<h3>R1配置（DHCP服务器）</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">&lt;Huawei&gt;system-view
[Huawei]sysname R1
[R1]interface GigabitEthernet 0/0/0
[R1-GigabitEthernet0/0/0]ip address 192.168.1.1 24

[R1]dhcp enable
[R1]interface GigabitEthernet 0/0/0
[R1-GigabitEthernet0/0/0]dhcp select interface
[R1-GigabitEthernet0/0/0]dhcp server dns-list 8.8.8.8</code></pre>
<p>命令解释：</p>
<ul>
<li><code>dhcp enable</code>：全局开启DHCP服务</li>
<li><code>dhcp select interface</code>：基于接口配置DHCP（自动分配该接口网段的IP）</li>
<li><code>dhcp server dns-list 8.8.8.8</code>：指定DNS服务器</li>
</ul>
<hr />
<h3>实验验证：PC获取IP地址</h3>
<p>在PC上：</p>
<ol>
<li>打开PC命令行</li>
<li>输入 <code>ipconfig</code>（查看IP地址）</li>
</ol>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">PC&gt;ipconfig

Link local IPv6 Address...........: fe80::20c:29ff:fef6:7e52
IPv6 Address......................: :: / 64
IPv4 Address......................: 192.168.1.254
Subnet Mask.......................: 255.255.255.0
Default Gateway...................: 192.168.1.1
DNS Server......................: 8.8.8.8</code></pre>
<p>PC自动获取了IP地址192.168.1.254，说明DHCP生效。</p>
<hr />
<h2>实验六：ACL访问控制列表</h2>
<p>ACL用来控制网络访问权限，比如禁止某个网段访问某个服务器。</p>
<h3>实验场景</h3>
<p>R1连接两个网段：</p>
<ul>
<li>192.168.1.0网段（部门A）</li>
<li>192.168.2.0网段（部门B）</li>
</ul>
<p>要求：禁止192.168.1.0网段ping192.168.2.0网段。</p>
<h3>拓扑搭建</h3>
<ol>
<li>拖入一台路由器（AR2220）</li>
<li>拖入两台PC（PC1和PC2）</li>
<li>R1的GE0/0/0接PC1，GE0/0/1接PC2</li>
</ol>
<h3>R1配置ACL</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">&lt;Huawei&gt;system-view
[Huawei]sysname R1
[R1]interface GigabitEthernet 0/0/0
[R1-GigabitEthernet0/0/0]ip address 192.168.1.1 24
[R1]interface GigabitEthernet 0/0/1
[R1-GigabitEthernet0/0/1]ip address 192.168.2.1 24

[R1]acl 2000
[R1-acl-basic-2000]rule deny source 192.168.1.0 0.0.0.255
[R1-acl-basic-2000]rule permit source any

[R1]interface GigabitEthernet 0/0/1
[R1-GigabitEthernet0/0/1]traffic-filter outbound acl 2000</code></pre>
<p>命令解释：</p>
<ul>
<li><code>acl 2000</code>：创建基本ACL（编号2000-2999）</li>
<li><code>rule deny source 192.168.1.0 0.0.0.255</code>：禁止192.168.1.0网段</li>
<li><code>rule permit source any</code>：允许其他所有网段</li>
<li><code>traffic-filter outbound acl 2000</code>：在GE0/0/1出方向应用ACL</li>
</ul>
<hr />
<h3>实验验证：ping测试</h3>
<p><strong>PC1（192.168.1.x）pingPC2（192.168.2.x）：</strong></p>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">PC&gt;ping 192.168.2.10
Ping 192.168.2.10: 32 data bytes, Request timed out.
Request timed out.
Request timed out.
Request timed out.
Ping statistics for 192.168.2.10:
    Packets: Sent = 4, Received = 0, Lost = 4 (100% loss)</code></pre>
<p>ping失败，100%丢包，ACL生效，192.168.1.0网段被禁止访问。</p>
<hr />
<h3>查看ACL配置</h3>
<pre class="overflow-auto rounded-lg border border-border bg-muted p-3 text-sm text-foreground"><code class="font-mono ">[R1]display acl 2000
Basic ACL 2000, 2 rules
Acl's step is 5
rule 5 deny source 192.168.1.0 0.0.0.255
rule 10 permit source any</code></pre>
<p>ACL规则已配置成功。</p>
<hr />
<h2>常用命令总结</h2>
<p>这篇文章做了6个实验，用到了这些核心命令：</p>
<h3>基础配置命令</h3>
<table>
<thead>
<tr>
<th>命令</th>
<th>功能</th>
<th>使用场景</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>system-view</code></td>
<td>进入系统视图</td>
<td>所有配置的第一步</td>
</tr>
<tr>
<td><code>sysname R1</code></td>
<td>改设备名</td>
<td>给路由器/交换机命名</td>
</tr>
<tr>
<td><code>interface GE0/0/0</code></td>
<td>进入接口视图</td>
<td>配置接口IP</td>
</tr>
<tr>
<td><code>ip address x.x.x.x 24</code></td>
<td>配IP地址</td>
<td>给接口配IP</td>
</tr>
<tr>
<td><code>display ip interface brief</code></td>
<td>查看接口状态</td>
<td>验证配置结果</td>
</tr>
<tr>
<td><code>display this</code></td>
<td>查看当前配置</td>
<td>查看刚配置的内容</td>
</tr>
<tr>
<td><code>quit</code></td>
<td>退出当前视图</td>
<td>返回上一级</td>
</tr>
</tbody>
</table>
<h3>路由配置命令</h3>
<table>
<thead>
<tr>
<th>命令</th>
<th>功能</th>
<th>使用场景</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>ip route-static 目标网段掩码下一跳</code></td>
<td>配静态路由</td>
<td>手动指定路由</td>
</tr>
<tr>
<td><code>ospf 1 router-id x.x.x.x</code></td>
<td>启动OSPF</td>
<td>动态路由协议</td>
</tr>
<tr>
<td><code>network 网段反掩码</code></td>
<td>加入OSPF区域</td>
<td>声明参与OSPF的网段</td>
</tr>
<tr>
<td><code>display ip routing-table</code></td>
<td>查看路由表</td>
<td>查看所有路由</td>
</tr>
<tr>
<td><code>display ospf peer brief</code></td>
<td>查看OSPF邻居</td>
<td>验证邻居关系</td>
</tr>
</tbody>
</table>
<h3>交换机命令</h3>
<table>
<thead>
<tr>
<th>命令</th>
<th>功能</th>
<th>使用场景</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>vlan batch 10 20</code></td>
<td>创建VLAN</td>
<td>批量创建多个VLAN</td>
</tr>
<tr>
<td><code>port link-type access</code></td>
<td>设接口类型</td>
<td>连接PC的端口</td>
</tr>
<tr>
<td><code>port default vlan 10</code></td>
<td>加入VLAN</td>
<td>把端口加入指定VLAN</td>
</tr>
<tr>
<td><code>port link-type trunk</code></td>
<td>设Trunk端口</td>
<td>连接路由器/交换机的端口</td>
</tr>
<tr>
<td><code>port trunk allow-pass vlan 10 20</code></td>
<td>允许VLAN通过</td>
<td>Trunk端口允许哪些VLAN</td>
</tr>
<tr>
<td><code>display vlan</code></td>
<td>查看VLAN信息</td>
<td>验证VLAN配置</td>
</tr>
</tbody>
</table>
<h3>其他命令</h3>
<table>
<thead>
<tr>
<th>命令</th>
<th>功能</th>
<th>使用场景</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>ping x.x.x.x</code></td>
<td>测试连通性</td>
<td>验证网络是否通</td>
</tr>
<tr>
<td><code>dhcp enable</code></td>
<td>开启DHCP</td>
<td>路由器当DHCP服务器</td>
</tr>
<tr>
<td><code>dhcp select interface</code></td>
<td>基于接口DHCP</td>
<td>自动分配接口网段IP</td>
</tr>
<tr>
<td><code>acl 2000</code></td>
<td>创建ACL</td>
<td>访问控制列表</td>
</tr>
<tr>
<td><code>traffic-filter outbound acl 2000</code></td>
<td>应用ACL</td>
<td>在接口应用ACL规则</td>
</tr>
</tbody>
</table>
<hr />
<h2>学命令的几个建议</h2>
<h3>1. 跟着做实验，别只看文章</h3>
<p>看完这篇文章，打开eNSP，自己搭建拓扑，输入命令，验证效果。动手做一遍，比看十遍都管用。</p>
<h3>2. 命令记不住没关系，用多了自然记住</h3>
<p>刚开始不熟悉命令，可以查文章、查手册。做几个实验后，常用命令自然就记住了。没必要死记硬背。</p>
<h3>3. 先理解场景，再记命令</h3>
<p>每个命令都有使用场景。理解了场景（比如为什么要配静态路由），命令就有意义了。不理解场景，命令就是一堆字符。</p>
<h3>4. 验证效果很重要</h3>
<p>每个实验都做了验证（ping测试、查看配置）。不验证，不知道配置是否生效。养成验证的习惯。</p>
<hr />
<p>这篇文章用6个实验演示了eNSP常用命令。跟着做一遍，基本就学会了。下次遇到类似场景，直接照着配置就行。</p>
<p><a href="https://www.dixunblog.cn/1733.html">eNSP常用配置命令实战：跟着做就能学会</a>最先出现在<a href="https://www.dixunblog.cn">帝讯博客</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dixunblog.cn/1733.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>eNSP路由器启动失败报40错误？原因和解决办法都在这儿了</title>
		<link>https://www.dixunblog.cn/1727.html</link>
					<comments>https://www.dixunblog.cn/1727.html#respond</comments>
		
		<dc:creator><![CDATA[老大]]></dc:creator>
		<pubDate>Fri, 24 Apr 2026 11:50:44 +0000</pubDate>
				<category><![CDATA[技术教程]]></category>
		<category><![CDATA[eNSP]]></category>
		<category><![CDATA[VirtualBox]]></category>
		<guid isPermaLink="false">https://www.dixunblog.cn/?p=1727</guid>

					<description><![CDATA[<p>学网络的人基本都用过eNSP，华为的模拟器，用来练路由器、交换机配置挺方便的。但很多人遇到过这么个问题：拓扑搭好了，设备拖进去了，点启动按钮，结果报错&#8221;启动失败，错误代码40&#8243;。 设备一直#号，连不上，没法做实验。折腾半天不知道哪儿出问题了。 这篇文章专门讲40错误的原因和解决办法。我总结了最常见的几种情况，基本覆盖了大部分人遇到的问题。 40错误到底是啥？ 40错误说白了，就是设备注册失败。 eNSP里的路由器、交换机，本质上是个虚拟机，运行在VirtualBox上（Oracle的虚拟化软</p>
<p><a href="https://www.dixunblog.cn/1727.html">eNSP路由器启动失败报40错误？原因和解决办法都在这儿了</a>最先出现在<a href="https://www.dixunblog.cn">帝讯博客</a>。</p>
]]></description>
										<content:encoded><![CDATA[<p>学网络的人基本都用过eNSP，华为的模拟器，用来练路由器、交换机配置挺方便的。但很多人遇到过这么个问题：拓扑搭好了，设备拖进去了，点启动按钮，结果报错&#8221;启动失败，错误代码40&#8243;。</p>
<p>设备一直#号，连不上，没法做实验。折腾半天不知道哪儿出问题了。</p>
<p>这篇文章专门讲40错误的原因和解决办法。我总结了最常见的几种情况，基本覆盖了大部分人遇到的问题。</p>
<hr />
<h2>40错误到底是啥？</h2>
<p><img loading="lazy" decoding="async" class="size-full wp-image-1728 aligncenter" title="7353901493c6d837dd0659d108e2e7a0" src="http://cdn.hyclive.cn/dixunblog/2026/04/7353901493c6d837dd0659d108e2e7a0.png" alt="7353901493c6d837dd0659d108e2e7a0" width="1684" height="971" />40错误说白了，就是<strong>设备注册失败</strong>。</p>
<p>eNSP里的路由器、交换机，本质上是个虚拟机，运行在VirtualBox上（Oracle的虚拟化软件）。启动设备前，eNSP会先向VirtualBox&#8221;注册&#8221;这个设备，告诉它&#8221;我要启动这台虚拟机了&#8221;。</p>
<p>注册成功了，设备才能启动。注册失败，就会报40错误。</p>
<p>所以，40错误不是设备坏了，是注册环节出了问题。找到注册失败的原因，就能解决。</p>
<hr />
<h2>原因一：VirtualBox版本不对（最常见） ⭐⭐⭐⭐⭐</h2>
<p>这是40错误最常见的原因，占了七八成的情况。</p>
<p>eNSP对VirtualBox版本有要求，<strong>不是所有版本都能用</strong>。</p>
<h3>哪些版本能用？</h3>
<p>eNSP 1.3.00.100（目前最常用的版本）要求的VirtualBox版本：</p>
<ul>
<li><strong>推荐版本</strong>：VirtualBox 5.2.x（比如5.2.44，这是最后稳定版本）</li>
<li><strong>不推荐版本</strong>：VirtualBox 6.x、7.x（兼容性很差，容易40错误）</li>
</ul>
<p>很多人电脑上装了VirtualBox 6.1或者7.0（毕竟新版本看着功能更强），结果跟eNSP不兼容，设备注册就失败。</p>
<h3>怎么检查版本？</h3>
<p>打开VirtualBox，左上角菜单点&#8221;帮助&#8221; → &#8220;关于VirtualBox&#8221;，能看到版本号。</p>
<p>如果版本是6.x或者7.x，大概率这就是40错误的原因。</p>
<h3>怎么解决？</h3>
<p><strong>卸载现有VirtualBox，安装5.2.x版本</strong>。</p>
<p>下载地址：<a href="https://www.virtualbox.org/wiki/Download_Old_Builds_5_2">https://www.virtualbox.org/wiki/Download_Old_Builds_5_2</a></p>
<p>选5.2.44（或者5.2.x系列的最新版），下载安装。</p>
<p>卸载的时候注意：</p>
<ol>
<li>先卸载VirtualBox（控制面板 → 程序和功能）</li>
<li>卸载完后，重启电脑（很重要，不重启可能残留文件）</li>
<li>安装VirtualBox 5.2.x</li>
<li>安装完，再重启一次</li>
<li>打开eNSP，重新注册设备（见原因二的解决方法）</li>
</ol>
<p>重启两次麻烦点，但能避免残留文件导致的二次问题。</p>
<hr />
<h2>原因二：设备没注册（容易忽略） ⭐⭐⭐⭐</h2>
<p>很多人忘了这一步：设备拖进拓扑后，需要先注册才能启动。</p>
<p>注册是告诉eNSP&#8221;这台设备准备好启动了&#8221;。不注册，直接点启动，就会40错误。</p>
<h3>怎么注册设备？</h3>
<p>步骤很简单：</p>
<ol>
<li>打开eNSP</li>
<li>菜单栏点击&#8221;工具&#8221; → &#8220;注册设备&#8221;</li>
<li>弹出的窗口里，勾选要注册的设备类型（路由器、交换机、防火墙等）</li>
<li>点&#8221;注册&#8221;按钮</li>
<li>等待注册完成（几秒钟）</li>
</ol>
<p>注册成功后，设备列表里会显示&#8221;已注册&#8221;状态。</p>
<p><strong>注意</strong>：每次新建拓扑，都需要注册设备。如果之前注册过，但后来重新安装了eNSP或VirtualBox，也需要重新注册。</p>
<p><img loading="lazy" decoding="async" class="size-full wp-image-1729 aligncenter" title="be4f7790edd94eec407a15ce9d548c5d" src="http://cdn.hyclive.cn/dixunblog/2026/04/be4f7790edd94eec407a15ce9d548c5d.png" alt="be4f7790edd94eec407a15ce9d548c5d" width="1902" height="1037" /></p>
<hr />
<h2>原因三：Win11系统兼容性问题（新系统坑） ⭐⭐⭐⭐</h2>
<p>Win11出来后，很多人升级系统，发现eNSP用不了了，启动设备就报40错误。</p>
<p>特别是<strong>Win11 24H2版本</strong>（2024年下半年更新的版本），兼容性问题更严重。</p>
<h3>Win11哪儿有问题？</h3>
<p>主要两个原因：</p>
<ol>
<li><strong>Hyper-V虚拟化冲突</strong>：Win11默认开启了Hyper-V（微软自带的虚拟化功能），这会抢占虚拟化资源，导致VirtualBox无法正常工作</li>
<li><strong>内核隔离功能</strong>：Win11有内存完整性、内核隔离等安全功能，会拦截VirtualBox的某些操作</li>
</ol>
<h3>怎么解决Win11兼容性问题？</h3>
<p><strong>方法一：关闭Hyper-V</strong></p>
<ol>
<li>按 <code>Win + R</code>，输入 <code>optionalfeatures</code></li>
<li>弹出的窗口里，找到&#8221;Hyper-V&#8221;</li>
<li>取消勾选&#8221;Hyper-V&#8221;（包括下面的子选项）</li>
<li>点&#8221;确定&#8221;，等待卸载完成</li>
<li>重启电脑</li>
</ol>
<p><strong>方法二：关闭内核隔离</strong></p>
<ol>
<li>打开Windows安全中心（任务栏盾牌图标）</li>
<li>点击&#8221;设备安全性&#8221; → &#8220;内核隔离详细信息&#8221;</li>
<li>关闭&#8221;内存完整性&#8221;</li>
<li>重启电脑</li>
</ol>
<p>两个方法都试试，一般能解决Win11的兼容性问题。</p>
<p><strong>如果还是不行</strong>，考虑退回Win10（或者装双系统，Win10专门跑eNSP）。Win10的兼容性比Win11好太多了。</p>
<hr />
<h2>原因四：防火墙或杀毒软件拦截 ⭐⭐⭐</h2>
<p>防火墙和杀毒软件可能拦截VirtualBox的网络通信，导致设备注册失败。</p>
<h3>怎么判断是防火墙的问题？</h3>
<p>如果关闭防火墙后，设备能启动了，那就是防火墙拦截导致的。</p>
<h3>怎么解决？</h3>
<p><strong>方法一：临时关闭防火墙</strong></p>
<ol>
<li>打开控制面板 → Windows Defender防火墙</li>
<li>点击&#8221;启用或关闭Windows Defender防火墙&#8221;</li>
<li>选择&#8221;关闭Windows Defender防火墙&#8221;（专用网络和公用网络都关）</li>
<li>点&#8221;确定&#8221;</li>
</ol>
<p>测试eNSP能否启动设备。如果能启动，说明防火墙确实是问题。</p>
<p><strong>注意</strong>：关闭防火墙只是测试，确认问题后，建议用方法二添加例外规则，而不是一直关着防火墙。</p>
<p><strong>方法二：添加防火墙例外规则</strong></p>
<ol>
<li>打开Windows Defender防火墙 → &#8220;允许应用通过防火墙&#8221;</li>
<li>点击&#8221;更改设置&#8221; → &#8220;允许其他应用&#8221;</li>
<li>添加VirtualBox的安装路径（比如 <code>C:\Program Files\Oracle\VirtualBox\VirtualBox.exe</code>）</li>
<li>勾选&#8221;专用&#8221;和&#8221;公用&#8221;</li>
<li>同样添加eNSP的安装路径</li>
</ol>
<p>杀毒软件（360、火绒等）也需要添加例外规则，具体操作看各软件设置。</p>
<p><img loading="lazy" decoding="async" class="size-full wp-image-1730 aligncenter" title="4f79c8797481e1006491c11533dbfb51" src="http://cdn.hyclive.cn/dixunblog/2026/04/4f79c8797481e1006491c11533dbfb51.png" alt="4f79c8797481e1006491c11533dbfb51" width="1123" height="627" /></p>
<hr />
<h2>原因五：安装路径有中文或特殊字符 ⭐⭐</h2>
<p>eNSP和VirtualBox的安装路径，最好不要有中文、空格、特殊字符。</p>
<p>比如：</p>
<ul>
<li>❌ <code>C:\软件\eNSP</code></li>
<li>❌ <code>C:\Program Files (x86)\eNSP</code></li>
<li>✅ <code>C:\eNSP</code></li>
<li>✅ <code>D:\Network\eNSP</code></li>
</ul>
<p>路径有中文或特殊字符，可能导致注册设备时路径解析错误，40错误就来了。</p>
<h3>怎么解决？</h3>
<p>重新安装eNSP和VirtualBox，选择纯英文路径。</p>
<p>卸载步骤：</p>
<ol>
<li>卸载eNSP和VirtualBox</li>
<li>重启电脑</li>
<li>安装时，选择纯英文路径（比如 <code>C:\eNSP</code>、<code>C:\VirtualBox</code>）</li>
<li>安装完，重启一次</li>
<li>打开eNSP，注册设备</li>
</ol>
<hr />
<h2>原因六：启动设备太多，资源不足 ⭐⭐</h2>
<p>拓扑里设备太多（比如十几台路由器+交换机），同时启动，可能导致电脑资源不足（内存、CPU不够），注册失败。</p>
<h3>怎么判断是资源不足？</h3>
<p>启动设备时，电脑卡顿、响应慢，或者VirtualBox进程占用内存很高，可能就是资源不足。</p>
<h3>怎么解决？</h3>
<ol>
<li><strong>分批启动</strong>：不要一次性启动所有设备，先启动2-3台，等完全启动后，再启动下一批</li>
<li><strong>减少设备数量</strong>：拓扑不需要那么多设备，删掉一些冗余的</li>
<li><strong>增加电脑资源</strong>：关闭其他软件（浏览器、IDE等），释放内存和CPU</li>
</ol>
<p>路由器启动后，每台占用大概200-300MB内存。10台路由器就是2-3GB内存。电脑内存少于8GB的话，确实容易资源不足。</p>
<hr />
<h2>原因七：注册表残留问题（重新安装后） ⭐</h2>
<p>卸载eNSP或VirtualBox后，重新安装，有时候注册表里还有残留数据，导致设备注册失败。</p>
<h3>怎么解决？</h3>
<p>清理注册表残留：</p>
<ol>
<li>按 <code>Win + R</code>，输入 <code>regedit</code></li>
<li>找到以下路径：
<ul>
<li><code>HKEY_LOCAL_MACHINE\SOFTWARE\eNSP</code></li>
<li><code>HKEY_CURRENT_USER\SOFTWARE\eNSP</code></li>
</ul>
</li>
<li>右键删除整个eNSP文件夹</li>
<li>同样删除VirtualBox相关的注册表项：
<ul>
<li><code>HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\VirtualBox</code></li>
</ul>
</li>
<li>重启电脑</li>
<li>重新安装eNSP和VirtualBox</li>
</ol>
<p><strong>注意</strong>：操作注册表有一定风险，删除前确认路径正确。不懂注册表的话，可以用CCleaner这类工具自动清理。</p>
<hr />
<h2>一个完整的解决流程</h2>
<p>遇到40错误，按这个顺序排查：</p>
<h3>第一步：检查VirtualBox版本</h3>
<p>打开VirtualBox，看版本号。如果是6.x或7.x，卸载，安装5.2.x版本。</p>
<p>这是最常见的原因，先排除这个。</p>
<h3>第二步：注册设备</h3>
<p>菜单栏 → 工具 → 注册设备，勾选设备类型，点注册。</p>
<p>很多人忘了这一步，注册完就能启动了。</p>
<h3>第三步：检查Win11兼容性</h3>
<p>如果是Win11系统，关闭Hyper-V和内核隔离。</p>
<p>重启电脑，再测试。</p>
<h3>第四步：关闭防火墙测试</h3>
<p>临时关闭防火墙，测试能否启动设备。</p>
<p>如果能启动，说明防火墙拦截，添加例外规则。</p>
<h3>第五步：检查安装路径</h3>
<p>看eNSP和VirtualBox的安装路径，有中文或特殊字符就重新安装。</p>
<h3>第六步：分批启动设备</h3>
<p>拓扑设备多的话，分批启动，不要一次性全启动。</p>
<h3>第七步：清理注册表</h3>
<p>如果之前卸载重装过，清理注册表残留。</p>
<hr />
<h2>几个避坑建议</h2>
<h3>1. 别用太新的系统版本</h3>
<p>Win10比Win11兼容性好。Win11 24H2版本问题更多。如果eNSP是主要学习工具，建议用Win10，或者装双系统。</p>
<h3>2. 别用太新的VirtualBox版本</h3>
<p>VirtualBox 5.2.x是最稳定的版本。6.x、7.x看着新，但跟eNSP不兼容。老版本不一定差，关键是要适配。</p>
<h3>3. 安装路径用英文</h3>
<p>养成习惯，软件装纯英文路径，省得后面一堆编码问题。</p>
<h3>4. 注册设备别忘</h3>
<p>新建拓扑后，先注册设备，再启动。这个顺序搞错了，就会40错误。</p>
<h3>5. 别装一堆杀毒软件</h3>
<p>一个Windows Defender就够了。装了360、火绒、腾讯管家一堆软件，互相冲突，还拦截VirtualBox。</p>
<hr />
<h2>总结一下</h2>
<p>40错误的核心原因是<strong>设备注册失败</strong>。找到注册失败的原因，就能解决。</p>
<p>最常见的原因是VirtualBox版本不对（用了6.x或7.x版本），换回5.2.x版本基本能解决。</p>
<p>其次是忘记注册设备、Win11兼容性问题、防火墙拦截、安装路径有中文、资源不足、注册表残留。</p>
<p>按顺序排查：VirtualBox版本 → 注册设备 → Win11兼容性 → 防火墙 → 安装路径 → 设备数量 → 注册表。</p>
<p>遇到40错误别慌，基本都能解决。这篇文章覆盖了大部分情况，按步骤排查，基本能找到问题。</p>
<p>如果还有其他错误代码（比如41、42），解决方法差不多，都是注册环节出了问题。核心思路是一样的。</p>
<p><a href="https://www.dixunblog.cn/1727.html">eNSP路由器启动失败报40错误？原因和解决办法都在这儿了</a>最先出现在<a href="https://www.dixunblog.cn">帝讯博客</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dixunblog.cn/1727.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
