<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>MeerStory</title><link>https://linux.meerstory.com/zh/</link><description>Recent content on MeerStory</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Wed, 07 Oct 2026 15:31:40 +0900</lastBuildDate><atom:link href="https://linux.meerstory.com/zh/index.xml" rel="self" type="application/rss+xml"/><item><title>一览 Linux 在线用户与服务器负载！w 命令实战完全指南</title><link>https://linux.meerstory.com/zh/ubuntu/20261007_153122_107/</link><pubDate>Wed, 07 Oct 2026 15:31:40 +0900</pubDate><guid>https://linux.meerstory.com/zh/ubuntu/20261007_153122_107/</guid><description>&lt;h2 id="概述">概述&lt;/h2>
&lt;p>在服务器监控与用户会话管理中，w 命令是能够即时掌握当前登录用户以及系统负载（Load Average）的核心工具。本文将从 w 命令的基础输出解读出发，逐步解析生产环境中常用的选项组合，以及它与 who、uptime 命令的区别。&lt;/p>
&lt;h2 id="1-一览当前在线用户与系统负载基础-w-命令执行">1. 一览当前在线用户与系统负载：基础 w 命令执行&lt;/h2>
&lt;p>为了对比并确认与 &lt;code>w&lt;/code> 命令首行输出相同的系统运行时间及负载信息，执行 &lt;code>uptime&lt;/code> 命令。&lt;/p>
&lt;p>&lt;img src="https://linux.meerstory.com/ubuntu/20261007_153122_107/captures/s01_c01_uptime.png" alt="uptime">&lt;/p>
&lt;p>&lt;code>w&lt;/code> 命令用于一览当前登录到系统的用户、各用户正在执行的操作以及系统的负载状态。&lt;br>
输出的第一行显示当前时间、系统运行时间、登录用户数以及最近 1 分钟、5 分钟、15 分钟的平均负载（Load Average）；从第二行开始显示每个用户的详细会话信息。&lt;br>
⚙️ [常用选项]&lt;/p>
&lt;p>&lt;code>-h&lt;/code>, &lt;code>--no-header&lt;/code> : 不输出表头（顶部的负载信息和字段标题），仅显示用户列表。&lt;br>
&lt;code>-s&lt;/code>, &lt;code>--short&lt;/code> : 使用精简格式输出，省略登录时间、JCPU 和 PCPU 字段。&lt;br>
&lt;code>-f&lt;/code>, &lt;code>--from&lt;/code> : 切换（开启/关闭）显示登录来源 IP 地址或主机名的 &lt;code>FROM&lt;/code> 字段。&lt;br>
&lt;code>-i&lt;/code>, &lt;code>--ip-addr&lt;/code> : 以 IP 地址格式代替主机名显示登录来源。&lt;br>
&lt;code>-o&lt;/code>, &lt;code>--old-style&lt;/code> : 使用旧式空白输出格式，空闲时间少于 1 分钟时显示为空白。&lt;/p>
&lt;p>&lt;img src="https://linux.meerstory.com/ubuntu/20261007_153122_107/captures/s01_c02_w.png" alt="w">&lt;/p>
&lt;h2 id="2-隐藏表头与精简输出以编写监控脚本--h--s">2. 隐藏表头与精简输出以编写监控脚本 (-h, -s)&lt;/h2>
&lt;p>&lt;code>w -h&lt;/code> 命令会忽略顶部的系统运行时间摘要信息和各列的表头行，仅输出纯用户会话列表。&lt;br>
在脚本中解析在线用户数或特定用户信息时，常用于过滤掉不必要的表头行。&lt;br>
当前系统中没有登录用户，因此返回空结果。&lt;/p>
&lt;p>&lt;img src="https://linux.meerstory.com/ubuntu/20261007_153122_107/captures/s02_c01_w_-h.png" alt="w -h">&lt;/p></description></item><item><title>Ubuntu SSH 实用完整指南 - 从连接、端口转发到安全配置一站式搞定</title><link>https://linux.meerstory.com/zh/ubuntu/20261007_152349_106/</link><pubDate>Wed, 07 Oct 2026 15:24:45 +0900</pubDate><guid>https://linux.meerstory.com/zh/ubuntu/20261007_152349_106/</guid><description>&lt;h2 id="概述">概述&lt;/h2>
&lt;p>SSH（Secure Shell）是管理远程 Linux 服务器必不可少的标准网络协议。本文将在 Ubuntu 环境下，从搭建 OpenSSH 服务器开始，逐步介绍无密码公钥认证、生产网络连接所需的 SSH 端口转发，以及必不可少的安全加固实用技巧。&lt;/p>
&lt;h2 id="1-安装-openssh-服务器并启用服务">1. 安装 OpenSSH 服务器并启用服务&lt;/h2>
&lt;p>为了在 Ubuntu 系统中提供远程连接服务，首先更新最新的软件包列表，并安装 &lt;code>openssh-server&lt;/code> 软件包。&lt;/p>
&lt;p>&lt;img src="https://linux.meerstory.com/ubuntu/20261007_152349_106/captures/s01_c01_sudo_apt-get_update_-qq____sudo_apt-get_install_-y.png" alt="sudo apt-get update -qq &amp;amp;&amp;amp; sudo apt-get install -y openssh-server">&lt;/p>
&lt;p>运行 &lt;code>systemctl enable --now ssh&lt;/code> 命令，将安装的 SSH 服务设置为开机自启并立即启动运行。&lt;/p>
&lt;p>&lt;img src="https://linux.meerstory.com/ubuntu/20261007_152349_106/captures/s01_c02_sudo_systemctl_enable_--now_ssh.png" alt="sudo systemctl enable –now ssh">&lt;/p>
&lt;p>检查 SSH 服务守护进程（&lt;code>sshd&lt;/code>）当前是否处于活动运行状态（&lt;code>active (running)&lt;/code>）。&lt;/p>
&lt;p>&lt;img src="https://linux.meerstory.com/ubuntu/20261007_152349_106/captures/s01_c03_sudo_systemctl_status_ssh_--no-pager.png" alt="sudo systemctl status ssh –no-pager">&lt;/p>
&lt;p>运行 &lt;code>ss -tulpn | grep :22&lt;/code> 命令，确认 SSH 是否在默认的 22 端口处于监听（LISTEN）状态以等待网络连接。&lt;/p>
&lt;p>&lt;img src="https://linux.meerstory.com/ubuntu/20261007_152349_106/captures/s01_c04_ss_-tulpn___grep__22.png" alt="ss -tulpn | grep :22">&lt;/p>
&lt;h2 id="2-生成并配置用于免密登录的-ssh-密钥对">2. 生成并配置用于免密登录的 SSH 密钥对&lt;/h2>
&lt;p>创建用于安全存放 SSH 密钥文件的 &lt;code>~/.ssh&lt;/code> 目录，并将其权限设置为 &lt;code>700&lt;/code>，以便仅允许所有者访问。&lt;/p></description></item><item><title>Linux 文件权限自动控制的核心！umask 实战配置与完整应用指南</title><link>https://linux.meerstory.com/zh/ubuntu/20261007_151722_105/</link><pubDate>Wed, 07 Oct 2026 15:17:43 +0900</pubDate><guid>https://linux.meerstory.com/zh/ubuntu/20261007_151722_105/</guid><description>&lt;h2 id="概述">概述&lt;/h2>
&lt;p>本文将介绍在 Linux 环境中决定新创建文件和目录默认访问权限的 umask 的基本工作原理。从八进制计算方式到协作目录权限控制，再到通过 Shell 配置文件进行永久设置，系统整理可在实际工作中即学即用的核心管理技巧。&lt;/p>
&lt;h2 id="1-查看当前-umask-与默认文件目录创建权限测试">1. 查看当前 umask 与默认文件·目录创建权限测试&lt;/h2>
&lt;p>为了创建并进入用于 &lt;code>umask&lt;/code> 配置与权限测试的专用实验目录，执行 &lt;code>mkdir -p /tmp/umask-lab &amp;amp;&amp;amp; cd /tmp/umask-lab&lt;/code> 命令。&lt;/p>
&lt;p>&lt;img src="https://linux.meerstory.com/ubuntu/20261007_151722_105/captures/s01_c01_mkdir_-p__tmp_umask-lab____cd__tmp_umask-lab.png" alt="mkdir -p /tmp/umask-lab &amp;amp;&amp;amp; cd /tmp/umask-lab">&lt;/p>
&lt;p>&lt;code>umask&lt;/code> 命令用于查看和设置限制新创建文件与目录默认访问权限的掩码值。&lt;br>
从执行结果可以看出，当前会话的默认掩码值被设置为 &lt;code>0022&lt;/code>。&lt;br>
⚙️ [常用选项]&lt;/p>
&lt;p>&lt;code>-S&lt;/code> : 以易于理解的符号形式（&lt;code>u=rwx,g=rx,o=rx&lt;/code>）输出允许的权限，而非数字掩码。&lt;br>
&lt;code>-p&lt;/code> : 以可复用的 &lt;code>umask&lt;/code> 命令格式输出当前掩码设置的八进制数值。&lt;/p>
&lt;p>&lt;img src="https://linux.meerstory.com/ubuntu/20261007_151722_105/captures/s01_c02_umask.png" alt="umask">&lt;/p>
&lt;p>执行 &lt;code>umask -S&lt;/code> 命令后，可以以直观的符号模式查看根据当前生效的掩码实际赋予属主(u)、属组(g)和其他用户(o)的权限。&lt;br>
输出的 &lt;code>u=rwx,g=rx,o=rx&lt;/code> 表示属主默认拥有读·写·执行权限，属组和其他用户默认拥有读·执行权限。&lt;/p>
&lt;p>&lt;img src="https://linux.meerstory.com/ubuntu/20261007_151722_105/captures/s01_c03_umask_-S.png" alt="umask -S">&lt;/p>
&lt;p>在应用当前 &lt;code>umask&lt;/code> 值（&lt;code>0022&lt;/code>）的状态下，执行 &lt;code>touch default_file.txt &amp;amp;&amp;amp; mkdir default_dir&lt;/code> 命令创建新文件和目录，以验证默认创建权限。&lt;/p>
&lt;p>&lt;img src="https://linux.meerstory.com/ubuntu/20261007_151722_105/captures/s01_c04_touch_default_file_txt____mkdir_default_dir.png" alt="touch default_file.txt &amp;amp;&amp;amp; mkdir default_dir">&lt;/p>
&lt;p>执行 &lt;code>ls -ld default_file.txt default_dir&lt;/code> 命令查看所创建文件和目录的实际权限。&lt;br>
可以确认，目录是由默认最大权限 &lt;code>777&lt;/code> 排除掩码 &lt;code>022&lt;/code> 后生成为 &lt;code>755&lt;/code>（&lt;code>drwxr-xr-x&lt;/code>），普通文件则是由排除了执行权限的最大默认权限 &lt;code>666&lt;/code> 排除掩码 &lt;code>022&lt;/code> 后生成为 &lt;code>644&lt;/code>（&lt;code>-rw-r--r--&lt;/code>）。&lt;/p></description></item><item><title>Linux lsof 完整指南 - 从端口冲突排查到释放已删除文件磁盘空间的核心实战技巧</title><link>https://linux.meerstory.com/zh/ubuntu/20261007_150808_104/</link><pubDate>Wed, 07 Oct 2026 15:08:55 +0900</pubDate><guid>https://linux.meerstory.com/zh/ubuntu/20261007_150808_104/</guid><description>&lt;h2 id="概述">概述&lt;/h2>
&lt;p>在 Linux 系统运维过程中遇到的“端口冲突”或“删除文件后磁盘空间未释放”等问题，可以通过 &lt;code>lsof&lt;/code> 命令迅速得到解决。本文将深入探讨在“一切皆文件”的 Linux 环境下，如何将 &lt;code>lsof&lt;/code> 应用于实际生产中的核心技巧。从端口追踪到文件锁释放，逐步解析系统工程师必备的故障排查实用经验。&lt;/p>
&lt;h2 id="lsof-基本检查及查看特定用户进程打开的文件">lsof 基本检查及查看特定用户/进程打开的文件&lt;/h2>
&lt;p>检查系统中是否已安装 &lt;code>lsof&lt;/code> 命令，如果未安装，则执行 &lt;code>command -v lsof &amp;gt;/dev/null 2&amp;gt;&amp;amp;1 || (apt-get update -qq &amp;amp;&amp;amp; apt-get install -y lsof)&lt;/code> 命令以安装软件包。&lt;/p>
&lt;p>&lt;img src="https://linux.meerstory.com/ubuntu/20261007_150808_104/captures/s01_c01_command_-v_lsof___dev_null_2__1_____apt-get_update.png" alt="command -v lsof &amp;gt;/dev/null 2&amp;gt;&amp;amp;1 || (apt-get update -qq &amp;amp;&amp;amp; apt-get install -y lsof)">&lt;/p>
&lt;p>执行 &lt;code>lsof -v&lt;/code> 命令以查看 &lt;code>lsof&lt;/code> 命令的安装版本及构建信息。&lt;br>
⚙️ [主要选项]&lt;/p>
&lt;p>&lt;code>-u&lt;/code> : 查询特定用户账户打开的文件和进程列表。&lt;br>
&lt;code>-c&lt;/code> : 过滤以指定进程名称开头的进程所打开的文件列表。&lt;br>
&lt;code>-p&lt;/code> : 查看特定进程 ID (PID) 打开的文件列表。&lt;br>
&lt;code>-i&lt;/code> : 查询使用网络套接字和特定端口的进程。&lt;br>
&lt;code>+D&lt;/code> : 递归搜索指定目录及其子路径下打开的文件列表。&lt;br>
&lt;code>-t&lt;/code> : 仅精简输出进程 ID (PID)，每行一个，便于与脚本集成。&lt;/p></description></item><item><title>Linux 服务器卡顿时必备！使用 nice 命令完美调节进程优先级</title><link>https://linux.meerstory.com/zh/ubuntu/20261007_150131_103/</link><pubDate>Wed, 07 Oct 2026 15:02:21 +0900</pubDate><guid>https://linux.meerstory.com/zh/ubuntu/20261007_150131_103/</guid><description>&lt;h2 id="概述">概述&lt;/h2>
&lt;p>在服务器资源紧张的环境中，如果后台任务或繁重的批处理脚本正在运行，核心服务的响应速度可能会变慢。本文将介绍如何使用 nice 和 renice 命令设置 CPU 调度优先级，并保持系统稳定性的实用技巧。&lt;/p>
&lt;h2 id="1-查看进程优先级-nipr-及搭建-htop-监控环境">1. 查看进程优先级 (NI/PR) 及搭建 htop 监控环境&lt;/h2>
&lt;p>为了进行进程优先级监控实战，我们首先安装必备工具 &lt;code>htop&lt;/code> 和 &lt;code>procps&lt;/code> 软件包。&lt;/p>
&lt;p>&lt;img src="https://linux.meerstory.com/ubuntu/20261007_150131_103/captures/s01_c01_apt-get_update_-qq____apt-get_install_-y_htop_proc.png" alt="apt-get update -qq &amp;amp;&amp;amp; apt-get install -y htop procps">&lt;/p>
&lt;p>&lt;code>ps&lt;/code> 命令用于查看当前系统中正在运行的进程的详细信息和优先级数值。&lt;br>
在输出结果中，&lt;code>NI&lt;/code> 是用户可以调节的 nice 值，而 &lt;code>PRI&lt;/code> 表示内核调度器实际赋予的优先级。&lt;br>
⚙️ [主要选项]&lt;/p>
&lt;p>&lt;code>-e&lt;/code> : 选择并显示系统中运行的所有进程。&lt;br>
&lt;code>-o&lt;/code> : 自定义设置要输出的列项目（pid、ni、pri、comm 等）。&lt;br>
&lt;code>-u&lt;/code> : 仅过滤并输出特定用户所拥有的进程。&lt;br>
&lt;code>-p&lt;/code> : 仅查询指定的特定 PID（进程 ID）对应的进程。&lt;br>
&lt;code>-f&lt;/code> : 输出包含进程全部详细信息的完整格式列表。&lt;/p>
&lt;p>&lt;img src="https://linux.meerstory.com/ubuntu/20261007_150131_103/captures/s01_c02_ps_-eo_pid_ni_pri_comm___head_-n_15.png" alt="ps -eo pid,ni,pri,comm | head -n 15">&lt;/p>
&lt;h2 id="2-使用-nice-命令以低优先级运行后台任务">2. 使用 nice 命令以低优先级运行后台任务&lt;/h2>
&lt;p>为了安全地创建和管理实战所需的测试文件，我们创建一个临时工作目录并切换至该位置。&lt;/p>
&lt;p>&lt;img src="https://linux.meerstory.com/ubuntu/20261007_150131_103/captures/s02_c01_mkdir_-p__tmp_nice_demo____cd__tmp_nice_demo.png" alt="mkdir -p /tmp/nice_demo &amp;amp;&amp;amp; cd /tmp/nice_demo">&lt;/p></description></item><item><title>Linux cut 命令完全指南 - 轻松提取日志与 CSV 文本数据中的指定列！</title><link>https://linux.meerstory.com/zh/ubuntu/20261007_145511_102/</link><pubDate>Wed, 07 Oct 2026 14:55:34 +0900</pubDate><guid>https://linux.meerstory.com/zh/ubuntu/20261007_145511_102/</guid><description>&lt;h2 id="概述">概述&lt;/h2>
&lt;p>在 Linux 环境下，当需要从海量日志文件或 CSV 数据中快速提取所需列时，cut 命令是最轻量且强大的工具。本文将带您了解从基于分隔符的字段提取到固定宽度字节级切片的核心技巧，帮助您在实际工作中立即上手应用。&lt;/p>
&lt;h2 id="使用分隔符-d与字段-f提取-csv-及系统账户数据">使用分隔符(-d)与字段(-f)提取 CSV 及系统账户数据&lt;/h2>
&lt;p>执行 &lt;code>mkdir -p ~/cut_demo &amp;amp;&amp;amp; cd ~/cut_demo&lt;/code> 命令，创建用于 &lt;code>cut&lt;/code> 命令练习的专用目录并切换到该目录。&lt;/p>
&lt;p>&lt;img src="https://linux.meerstory.com/ubuntu/20261007_145511_102/captures/s01_c01_mkdir_-p___cut_demo____cd___cut_demo.png" alt="mkdir -p ~/cut_demo &amp;amp;&amp;amp; cd ~/cut_demo">&lt;/p>
&lt;p>使用 &lt;code>echo&lt;/code> 命令编写 &lt;code>users.csv&lt;/code> 文件，生成以逗号（&lt;code>,&lt;/code>）分隔的测试用用户数据文件。&lt;/p>
&lt;p>&lt;img src="https://linux.meerstory.com/ubuntu/20261007_145511_102/captures/s01_c02_echo_-e__id_name_role_department_n1_alice_admin_se.png" alt="echo -e ‘id,name,role,department\n1,alice,admin,security\n2,bob,dev,backend\n3,charlie,dev,frontend’ &amp;gt; users.csv">&lt;/p>
&lt;p>&lt;code>cut&lt;/code> 命令是一种根据特定分隔符从文本文件或输出结果中提取所需列（字段）、字节或字符区间的工具。&lt;br>
通过 &lt;code>-d&lt;/code> 选项将逗号（&lt;code>,&lt;/code>）指定为分隔符，并通过 &lt;code>-f&lt;/code> 选项选择第 2 和第 4 个字段，即可整洁地输出 &lt;code>users.csv&lt;/code> 文件中的姓名和部门信息。&lt;br>
⚙️ [主要选项]&lt;/p>
&lt;p>&lt;code>-d&lt;/code> : 手动指定切分字段时使用的分隔符（默认值为制表符 Tab）。&lt;br>
&lt;code>-f&lt;/code> : 指定要提取的字段（列）编号或范围。&lt;br>
&lt;code>-c&lt;/code> : 以字符而非字节为单位的位置截取数据。&lt;br>
&lt;code>-b&lt;/code> : 以字节为单位的位置截取数据。&lt;br>
&lt;code>--complement&lt;/code> : 反转输出，仅输出排除指定字段或字符范围后的其余部分。&lt;br>
&lt;code>-s&lt;/code> : 不输出不包含分隔符的行。&lt;br>
&lt;code>--output-delimiter&lt;/code> : 将输出结果中显示的字段分隔符更改为指定的字符串。&lt;/p></description></item><item><title>Linux 文件列表查看全攻略 - 彻底掌握日常运维必备的 ls 命令核心选项</title><link>https://linux.meerstory.com/zh/ubuntu/20261007_145011_101/</link><pubDate>Wed, 07 Oct 2026 14:50:31 +0900</pubDate><guid>https://linux.meerstory.com/zh/ubuntu/20261007_145011_101/</guid><description>&lt;h2 id="概述">概述&lt;/h2>
&lt;p>本文将深入介绍 Linux 环境中最基础却也最常用的文件列表查看命令——ls 的核心实战用法。超越默认输出的局限，全面梳理包括查看隐藏文件、掌握详细权限、按时间/大小排序等能够大幅提升工作效率的实战技巧。&lt;/p>
&lt;h2 id="1-默认列表输出与查看隐藏文件-ls-ls--a">1. 默认列表输出与查看隐藏文件 (ls, ls -a)&lt;/h2>
&lt;p>为了进行 &lt;code>ls&lt;/code> 命令演练，执行 &lt;code>mkdir -p ~/ls_demo &amp;amp;&amp;amp; cd ~/ls_demo&lt;/code> 命令，创建独立的工作空间并进入该目录。&lt;/p>
&lt;p>&lt;img src="https://linux.meerstory.com/ubuntu/20261007_145011_101/captures/s01_c01_mkdir_-p___ls_demo____cd___ls_demo.png" alt="mkdir -p ~/ls_demo &amp;amp;&amp;amp; cd ~/ls_demo">&lt;/p>
&lt;p>为了测试普通文件与隐藏文件的查看，执行 &lt;code>touch file1.txt file2.log .hidden_config&lt;/code> 命令创建示例文本文件和配置文件。&lt;/p>
&lt;p>&lt;img src="https://linux.meerstory.com/ubuntu/20261007_145011_101/captures/s01_c02_touch_file1_txt_file2_log__hidden_config.png" alt="touch file1.txt file2.log .hidden_config">&lt;/p>
&lt;p>&lt;code>ls&lt;/code> 命令以默认形式输出当前目录下的文件和目录列表。&lt;br>
此时，以点（&lt;code>.&lt;/code>）开头的隐藏文件不会显示在屏幕上。&lt;br>
⚙️ [常用选项]&lt;/p>
&lt;p>&lt;code>-a&lt;/code> ：列出所有项目，包括以点（&lt;code>.&lt;/code>）开头的隐藏文件和目录。&lt;br>
&lt;code>-l&lt;/code> ：以长列表格式显示文件权限、所有者、大小、修改日期等详细信息。&lt;br>
&lt;code>-h&lt;/code> ：将文件大小转换为人类易读的单位（K、M、G）显示（需与 &lt;code>-l&lt;/code> 选项配合使用）。&lt;br>
&lt;code>-t&lt;/code> ：按最近修改时间排序输出。&lt;br>
&lt;code>-S&lt;/code> ：按文件大小降序排序显示列表。&lt;br>
&lt;code>-r&lt;/code> ：反转排序顺序输出。&lt;/p>
&lt;p>&lt;img src="https://linux.meerstory.com/ubuntu/20261007_145011_101/captures/s01_c03_ls.png" alt="ls">&lt;/p>
&lt;p>&lt;code>ls -a&lt;/code> 命令会列出包含隐藏文件和隐藏目录在内的所有文件列表。&lt;br>
在执行结果中可以看到，代表当前目录的 &lt;code>.&lt;/code>、代表上级目录的 &lt;code>..&lt;/code>，以及隐藏配置文件 &lt;code>.hidden_config&lt;/code> 都被一同显示了出来。&lt;/p>
&lt;p>&lt;img src="https://linux.meerstory.com/ubuntu/20261007_145011_101/captures/s01_c04_ls_-a.png" alt="ls -a">&lt;/p>
&lt;h2 id="2-文件详细信息与易读容量显示-ls--l-ls--lh">2. 文件详细信息与易读容量显示 (ls -l, ls -lh)&lt;/h2>
&lt;p>为了测试文件容量显示，执行 &lt;code>fallocate -l 10M large_file.bin&lt;/code> 命令创建一个 10MB 大小的虚拟大文件。&lt;/p></description></item><item><title>Linux 开机启动慢？用 systemd-analyze 在 3 分钟内定位瓶颈服务并优化</title><link>https://linux.meerstory.com/zh/ubuntu/20261007_144424_100/</link><pubDate>Wed, 07 Oct 2026 14:44:45 +0900</pubDate><guid>https://linux.meerstory.com/zh/ubuntu/20261007_144424_100/</guid><description>&lt;h2 id="概述">概述&lt;/h2>
&lt;p>如果 Linux 服务器或 PC 的启动时间比平时更长，就需要排查原因以减少不必要的延迟。借助 &lt;code>systemd-analyze&lt;/code> 命令，可以轻松完成从测量系统总体启动时间、追踪导致瓶颈的系统服务，到验证单元文件（Unit File）的完整流程。本文将介绍可在实际工作中直接使用的核心分析命令和性能优化技巧。&lt;/p>
&lt;h2 id="1-查看启动耗时及各阶段延迟测量-time--blame">1. 查看启动耗时及各阶段延迟测量 (time &amp;amp; blame)&lt;/h2>
&lt;p>&lt;code>systemd-analyze&lt;/code> 命令用于测量并展示启动过程中消耗的总时间，以及内核和用户空间（userspace）的初始化耗时。&lt;br>
从执行结果可以看出，系统完成启动并到达图形界面环境 &lt;code>graphical.target&lt;/code> 共耗时 315ms。&lt;br>
⚙️ [常用选项]&lt;/p>
&lt;p>&lt;code>time&lt;/code> : 输出系统启动时内核与用户空间消耗的总时间（默认行为）。&lt;br>
&lt;code>blame&lt;/code> : 按耗时降序输出在初始化过程中导致启动延迟的服务列表。&lt;br>
&lt;code>critical-chain&lt;/code> : 显示导致启动延迟的关键路径（时间临界链）的服务依赖关系树。&lt;br>
&lt;code>plot&lt;/code> : 将整个启动过程中各个服务的执行时间线输出为 SVG 矢量图文件。&lt;br>
&lt;code>dot&lt;/code> : 生成 Graphviz dot 格式的服务间依赖关系图。&lt;/p>
&lt;p>&lt;img src="https://linux.meerstory.com/ubuntu/20261007_144424_100/captures/s01_c01_systemd-analyze.png" alt="systemd-analyze">&lt;/p>
&lt;p>&lt;code>systemd-analyze blame | head -n 10&lt;/code> 命令按耗时降序排列，查看启动时执行的且初始化耗时最长的前 10 个服务。&lt;br>
从执行结果中可以看出，&lt;code>systemd-resolved.service&lt;/code>（68ms）和 &lt;code>ldconfig.service&lt;/code>（67ms）在启动初始化阶段消耗的时间最多。&lt;/p>
&lt;p>&lt;img src="https://linux.meerstory.com/ubuntu/20261007_144424_100/captures/s01_c02_systemd-analyze_blame___head_-n_10.png" alt="systemd-analyze blame | head -n 10">&lt;/p>
&lt;h2 id="2-追踪启动延迟的关键路径-critical-chain">2. 追踪启动延迟的关键路径 (critical-chain)&lt;/h2>
&lt;p>&lt;code>systemd-analyze critical-chain&lt;/code> 命令会打印直接影响系统启动完成时间的服务依赖树（临界路径）。&lt;br>
输出结果中，&lt;code>@&lt;/code> 符号后面表示该单元被激活或启动的时间点，&lt;code>+&lt;/code> 符号后面则代表该单元自身执行所花费的时间。&lt;br>
查看结果树可以发现，在到达 &lt;code>graphical.target&lt;/code>（315ms）之前，&lt;code>systemd-resolved.service&lt;/code>（68ms）与 &lt;code>systemd-journald.service&lt;/code>（39ms）等呈串联执行，是造成整个系统启动延迟的核心瓶颈路径。&lt;/p></description></item><item><title>Linux unzip 完整指南：从基础解压到防止韩文/中文乱码的实战核心技巧</title><link>https://linux.meerstory.com/zh/ubuntu/20261007_143900_99/</link><pubDate>Wed, 07 Oct 2026 14:39:37 +0900</pubDate><guid>https://linux.meerstory.com/zh/ubuntu/20261007_143900_99/</guid><description>&lt;h2 id="概述">概述&lt;/h2>
&lt;p>本文介绍在 Linux 环境中解压 ZIP 文件时常用的 unzip 命令的基础用法以及实战必备选项。从预览文件列表、指定解压目录到解决 Windows 文件编码乱码问题，逐步进行详细讲解。&lt;/p>
&lt;h2 id="安装-unzip-软件包并准备测试压缩文件">安装 unzip 软件包并准备测试压缩文件&lt;/h2>
&lt;p>在 Ubuntu 环境中，为了能够创建和解压文件，运行 &lt;code>sudo apt-get update -qq &amp;amp;&amp;amp; sudo apt-get install -y unzip zip&lt;/code> 命令安装所需的软件包。&lt;/p>
&lt;p>&lt;img src="https://linux.meerstory.com/ubuntu/20261007_143900_99/captures/s01_c01_sudo_apt-get_update_-qq____sudo_apt-get_install_-y.png" alt="sudo apt-get update -qq &amp;amp;&amp;amp; sudo apt-get install -y unzip zip">&lt;/p>
&lt;p>运行 &lt;code>mkdir -p ~/unzip-demo &amp;amp;&amp;amp; cd ~/unzip-demo&lt;/code> 命令创建练习专用的工作目录并进入该目录。&lt;/p>
&lt;p>&lt;img src="https://linux.meerstory.com/ubuntu/20261007_143900_99/captures/s01_c02_mkdir_-p___unzip-demo____cd___unzip-demo.png" alt="mkdir -p ~/unzip-demo &amp;amp;&amp;amp; cd ~/unzip-demo">&lt;/p>
&lt;p>运行 &lt;code>echo 'Hello Linux' &amp;gt; file1.txt &amp;amp;&amp;amp; echo 'Config Content' &amp;gt; config.cfg&lt;/code> 命令生成用于压缩测试的示例文本文件和配置文件。&lt;/p>
&lt;p>&lt;img src="https://linux.meerstory.com/ubuntu/20261007_143900_99/captures/s01_c03_echo__Hello_Linux____file1_txt____echo__Config_Con.png" alt="echo ‘Hello Linux’ &amp;gt; file1.txt &amp;amp;&amp;amp; echo ‘Config Content’ &amp;gt; config.cfg">&lt;/p></description></item><item><title>Linux Shell 脚本 read 命令完全指南 - 从用户输入到逐行读取文件的实战技巧</title><link>https://linux.meerstory.com/zh/ubuntu/20261007_143401_98/</link><pubDate>Wed, 07 Oct 2026 14:34:22 +0900</pubDate><guid>https://linux.meerstory.com/zh/ubuntu/20261007_143401_98/</guid><description>&lt;h2 id="概述">概述&lt;/h2>
&lt;p>本文介绍了在编写 Linux Bash Shell 脚本时，用于处理交互式用户输入和解析文本数据必不可少的 read 命令核心用法。内容涵盖从基础输入处理、密码隐藏(-s)、超时控制(-t)、分隔符切分(IFS)，到实际工作中最为常用的基于 while 循环的文件逐行读取技术。&lt;/p>
&lt;h2 id="1-read-命令基础提示符-p及默认值设置">1. read 命令基础、提示符(-p)及默认值设置&lt;/h2>
&lt;p>运行 &lt;code>mkdir -p ~/read-demo &amp;amp;&amp;amp; cd ~/read-demo&lt;/code> 命令，创建用于 &lt;code>read&lt;/code> 命令实践的专属目录并切换进入。&lt;/p>
&lt;p>&lt;img src="https://linux.meerstory.com/ubuntu/20261007_143401_98/captures/s01_c01_mkdir_-p___read-demo____cd___read-demo.png" alt="mkdir -p ~/read-demo &amp;amp;&amp;amp; cd ~/read-demo">&lt;/p>
&lt;p>&lt;code>read&lt;/code> 命令从标准输入读取一行并存入变量中，可以使用 &lt;code>-p&lt;/code> 选项输出提示信息，并通过 &lt;code>${变量名:-默认值}&lt;/code> 语法在变量为空时代入默认值。&lt;br>
在执行结果中，由于未直接向 &lt;code>read&lt;/code> 命令传递输入，&lt;code>username&lt;/code> 变量保持为空，因此根据 &lt;code>${username:-guest}&lt;/code> 语法输出了默认值 &lt;code>guest&lt;/code>。&lt;br>
⚙️ [主要选项]&lt;/p>
&lt;p>&lt;code>-p&lt;/code> : 指定在接收输入前显示在屏幕上的提示字符串。&lt;br>
&lt;code>-s&lt;/code> : 启用密码等敏感信息输入时的静默模式，不在屏幕上回显输入字符。&lt;br>
&lt;code>-t&lt;/code> : 设置输入等待超时时间（秒），超过指定时间则终止输入。&lt;br>
&lt;code>-n&lt;/code> : 仅读取指定数量的字符，无需按回车键即可立即结束输入。&lt;br>
&lt;code>-r&lt;/code> : 不将反斜杠（&lt;code>\&lt;/code>）解析为转义字符，原样读取原始内容。&lt;br>
&lt;code>-a&lt;/code> : 将输入的词按空格分割并按顺序存储到数组变量中。&lt;br>
&lt;code>-d&lt;/code> : 自定义用于结束输入的定界符（delimiter），以替代默认的换行符。&lt;/p>
&lt;p>&lt;img src="https://linux.meerstory.com/ubuntu/20261007_143401_98/captures/s01_c02_bash_-c__read_-p__%EC%82%AC%EC%9A%A9%EC%9E%90_%EC%9D%B4%EB%A6%84%EC%9D%84_%EC%9E%85%EB%A0%A5%ED%95%98%EC%84%B8%EC%9A%94____username__echo.png" alt="bash -c ‘read -p “사용자 이름을 입력하세요: &amp;#34; username; echo “입력된 사용자: ${username:-guest}” «&amp;lt; “tester”’">&lt;/p></description></item><item><title>About Us</title><link>https://linux.meerstory.com/zh/pages/about/</link><pubDate>Fri, 28 Aug 2026 10:00:00 +0900</pubDate><guid>https://linux.meerstory.com/zh/pages/about/</guid><description>&lt;p>这是一个像狐獴一样，快速与大家分享全球各地人们感兴趣的精彩故事的页面。&lt;/p></description></item><item><title>联系我们</title><link>https://linux.meerstory.com/zh/pages/contact/</link><pubDate>Fri, 28 Aug 2026 10:00:00 +0900</pubDate><guid>https://linux.meerstory.com/zh/pages/contact/</guid><description>&lt;p>Email : &lt;a href="mailto:codingcoff@gmail.com">codingcoff@gmail.com&lt;/a>&lt;/p></description></item></channel></rss>