<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>运维 | 空垠尘</title><link>/tags/%E8%BF%90%E7%BB%B4/</link><description>极简纯静态 · 边缘无界</description><generator>Hugo -- gohugo.io</generator><language>zh-CN</language><managingEditor>Dukang Xu</managingEditor><webMaster>Dukang Xu</webMaster><copyright>© 2026 空垠尘</copyright><lastBuildDate>Thu, 17 Sep 2026 10:00:00 +0800</lastBuildDate><atom:link href="/tags/%E8%BF%90%E7%BB%B4/index.xml" rel="self" type="application/rss+xml"/><item><title>Linux 与 DevOps 常用高频命令速查</title><link>/linux-commands/</link><pubDate>Thu, 17 Sep 2026 10:00:00 +0800</pubDate><author>Dukang Xu</author><guid isPermaLink="true">/linux-commands/</guid><description>精炼汇总现代 Linux 与 DevOps 日常运维中最高频、最实用的命令体系：涵盖 SSH 密钥矩阵、Crontab 定时避坑、软链接管理、nsenter 容器穿透与现代 CLI 效率工具链。</description><content:encoded><![CDATA[<h2 id="引言为什么我们需要一份现代化的命令速查手册">引言：为什么我们需要一份现代化的命令速查手册？</h2>
<p>Linux 命令行浩如烟海，许多开发者在日常运维和排查故障时，往往习惯机械性地复制粘贴，遇到复杂场景（如密钥管理、跳板机穿透、容器无 Shell 调试、定时任务静默失效）时容易陷入困境。</p>
<p>本文摒弃生搬硬套的语法手册风格，以 <strong>“真实生产与开发场景”</strong> 为导向，将分散的命令归纳为 5 大高频实战模块，助你建立清晰的命令行心智模型。</p>
<pre tabindex="0"><code class="language-mermaid" data-lang="mermaid">graph TD
    Root[&#34;现代 DevOps 命令体系&#34;]
    
    Root --&gt; A[&#34;1. SSH 远程与密钥矩阵&#34;]
    A --&gt; A1[&#34;Ed25519 现代高强密钥&#34;]
    A --&gt; A2[&#34;~/.ssh/config 多主机与跳板机&#34;]
    A --&gt; A3[&#34;本地与动态端口转发&#34;]
    
    Root --&gt; B[&#34;2. 定时任务与进程守护&#34;]
    B --&gt; B1[&#34;Crontab 语法与环境变量避坑&#34;]
    B --&gt; B2[&#34;Supervisord 进程崩溃自启&#34;]
    
    Root --&gt; C[&#34;3. 文件与系统管理&#34;]
    C --&gt; C1[&#34;ln 软硬链接管理与安全删除&#34;]
    C --&gt; C2[&#34;date 时区与时间戳转换&#34;]
    C --&gt; C3[&#34;磁盘与内存分析 (df / du / free)&#34;]
    
    Root --&gt; D[&#34;4. 网络排查与命名空间&#34;]
    D --&gt; D1[&#34;lsof 与 ss 端口连接定位&#34;]
    D --&gt; D2[&#34;nsenter 穿透容器命名空间&#34;]
    
    Root --&gt; E[&#34;5. 现代 CLI 生产力工具&#34;]
    E --&gt; E1[&#34;ripgrep 极速文本检索&#34;]
    E --&gt; E2[&#34;fzf 命令行交互模糊检索&#34;]
    E --&gt; E3[&#34;jq JSON 数据切片与提取&#34;]
</code></pre><hr>
<h2 id="一-ssh-远程连接与密钥矩阵">一、 SSH 远程连接与密钥矩阵</h2>
<h3 id="1-生成现代安全的-ssh-密钥对首选-ed25519">1. 生成现代安全的 SSH 密钥对（首选 Ed25519）</h3>
<p>摒弃老旧且体积庞大的 RSA 2048/4096，优先使用性能更好、安全性更高的 <strong>Ed25519</strong> 椭圆曲线算法：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl"><span class="c1"># 生成 ed25519 密钥对（直接回车或设置保护密码）</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl">ssh-keygen -t ed25519 -C <span class="s2">&#34;your_email@example.com&#34;</span> -f ~/.ssh/id_ed25519
</span></span><span class="line"><span class="ln">3</span><span class="cl">
</span></span><span class="line"><span class="ln">4</span><span class="cl"><span class="c1"># 一键分发公钥到远程服务器（免密登录）</span>
</span></span><span class="line"><span class="ln">5</span><span class="cl">ssh-copy-id -i ~/.ssh/id_ed25519.pub user@192.168.1.100
</span></span></code></pre></div><h3 id="2-优雅管理多主机配置-sshconfig">2. 优雅管理多主机：配置 <code>~/.ssh/config</code></h3>
<p>无需每次记忆冗长的 IP、端口与用户名，在 <code>~/.ssh/config</code> 中配置别名：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln"> 1</span><span class="cl"># 个人云服务器
</span></span><span class="line"><span class="ln"> 2</span><span class="cl">Host cloud
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">    HostName 1.2.3.4
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">    User root
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">    Port 2222
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">    IdentityFile ~/.ssh/id_ed25519
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">
</span></span><span class="line"><span class="ln"> 8</span><span class="cl"># 内网树莓派 / HomeLab
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">Host rpi
</span></span><span class="line"><span class="ln">10</span><span class="cl">    HostName 192.168.1.100
</span></span><span class="line"><span class="ln">11</span><span class="cl">    User pi
</span></span><span class="line"><span class="ln">12</span><span class="cl">    IdentityFile ~/.ssh/id_ed25519
</span></span><span class="line"><span class="ln">13</span><span class="cl">
</span></span><span class="line"><span class="ln">14</span><span class="cl"># 经由跳板机访问内网机器 (ProxyJump)
</span></span><span class="line"><span class="ln">15</span><span class="cl">Host internal-db
</span></span><span class="line"><span class="ln">16</span><span class="cl">    HostName 10.0.0.5
</span></span><span class="line"><span class="ln">17</span><span class="cl">    User dbadmin
</span></span><span class="line"><span class="ln">18</span><span class="cl">    ProxyJump cloud
</span></span></code></pre></div><p>配置后，只需输入 <code>ssh cloud</code> 或 <code>ssh internal-db</code> 即可直接一键直连！</p>
<h3 id="3-ssh-端口转发神技">3. SSH 端口转发神技</h3>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl"><span class="c1"># 本地端口转发 (-L)：将远程服务器的 3306 数据库映射到本地 13306</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl">ssh -N -L 13306:127.0.0.1:3306 user@remote-server
</span></span><span class="line"><span class="ln">3</span><span class="cl">
</span></span><span class="line"><span class="ln">4</span><span class="cl"><span class="c1"># 动态 SOCKS5 代理 (-D)：把远程机器变成轻量 SOCKS5 代理通道</span>
</span></span><span class="line"><span class="ln">5</span><span class="cl">ssh -N -D <span class="m">10808</span> user@remote-server
</span></span></code></pre></div><hr>
<h2 id="二-定时任务与守护进程管理">二、 定时任务与守护进程管理</h2>
<h3 id="1-crontab-语法与关键避坑指南">1. Crontab 语法与关键避坑指南</h3>
<p>Crontab 的标准时间格式为 5 段：<code>分 时 日 月 周</code>。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln">1</span><span class="cl"># ┌───────────── 分钟 (0 - 59)
</span></span><span class="line"><span class="ln">2</span><span class="cl"># │ ┌─────────── 小时 (0 - 23)
</span></span><span class="line"><span class="ln">3</span><span class="cl"># │ │ ┌───────── 日 (1 - 31)
</span></span><span class="line"><span class="ln">4</span><span class="cl"># │ │ │ ┌─────── 月 (1 - 12)
</span></span><span class="line"><span class="ln">5</span><span class="cl"># │ │ │ │ ┌───── 星期几 (0 - 7, 0和7都代表周日)
</span></span><span class="line"><span class="ln">6</span><span class="cl"># * * * * * 命令
</span></span></code></pre></div><blockquote>
<p>⚠️ <strong>Crontab 常见三大致命陷阱</strong>：</p>
<ol>
<li><strong>环境变量缺失</strong>：Crontab 默认的 <code>PATH</code> 非常简略（通常只有 <code>/usr/bin:/bin</code>），导致脚本找不到 <code>docker</code> 或 <code>python3</code>。<strong>务必使用绝对路径</strong>（如 <code>/usr/local/bin/python3</code>），或者在脚本开头显式声明 <code>export PATH=$PATH:/usr/local/bin</code>；</li>
<li><strong>工作目录问题</strong>：Cron 执行时默认在用户家目录，相对路径会读错文件，脚本内请先 <code>cd /path/to/workdir</code>；</li>
<li><strong>日志输出静默丢失</strong>：务必重定向标准输出与错误输出，便于复盘排错：
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl"><span class="m">0</span> <span class="m">3</span> * * * /usr/bin/bash /opt/backup.sh &gt;&gt; /var/log/backup.log 2&gt;<span class="p">&amp;</span><span class="m">1</span>
</span></span></code></pre></div></li>
</ol>
</blockquote>
<h3 id="2-使用-supervisord-进行轻量级进程保活">2. 使用 Supervisord 进行轻量级进程保活</h3>
<p>对于非容器化的长驻进程（如 Python 爬虫、自建脚本），用 <code>supervisord</code> 能够轻松实现崩溃自启与日志管理：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-ini" data-lang="ini"><span class="line"><span class="ln">1</span><span class="cl"><span class="c1">; /etc/supervisor/conf.d/my-app.conf</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="k">[program:my-app]</span>
</span></span><span class="line"><span class="ln">3</span><span class="cl"><span class="na">directory</span><span class="o">=</span><span class="s">/opt/my-app</span>
</span></span><span class="line"><span class="ln">4</span><span class="cl"><span class="na">command</span><span class="o">=</span><span class="s">/usr/bin/python3 app.py</span>
</span></span><span class="line"><span class="ln">5</span><span class="cl"><span class="na">autostart</span><span class="o">=</span><span class="s">true</span>
</span></span><span class="line"><span class="ln">6</span><span class="cl"><span class="na">autorestart</span><span class="o">=</span><span class="s">true</span>
</span></span><span class="line"><span class="ln">7</span><span class="cl"><span class="na">stderr_logfile</span><span class="o">=</span><span class="s">/var/log/my-app.err.log</span>
</span></span><span class="line"><span class="ln">8</span><span class="cl"><span class="na">stdout_logfile</span><span class="o">=</span><span class="s">/var/log/my-app.out.log</span>
</span></span><span class="line"><span class="ln">9</span><span class="cl"><span class="na">user</span><span class="o">=</span><span class="s">www-data</span>
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl"><span class="c1"># 常用管理命令</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl">sudo supervisorctl reread     <span class="c1"># 读取新增配置</span>
</span></span><span class="line"><span class="ln">3</span><span class="cl">sudo supervisorctl update     <span class="c1"># 更新并启动新程序</span>
</span></span><span class="line"><span class="ln">4</span><span class="cl">sudo supervisorctl status     <span class="c1"># 查看所有进程状态</span>
</span></span><span class="line"><span class="ln">5</span><span class="cl">sudo supervisorctl restart all <span class="c1"># 重启所有受管进程</span>
</span></span></code></pre></div><hr>
<h2 id="三-文件链接与系统时间操作">三、 文件链接与系统时间操作</h2>
<h3 id="1-ln-软链接与硬链接实战">1. <code>ln</code> 软链接与硬链接实战</h3>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl"><span class="c1"># 创建软链接（符号链接）：ln -s &lt;真实源文件/目录&gt; &lt;软链接名称&gt;</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl">ln -s /mnt/data/music ~/Music
</span></span><span class="line"><span class="ln">3</span><span class="cl">
</span></span><span class="line"><span class="ln">4</span><span class="cl"><span class="c1"># ⚠️ 注意事项：</span>
</span></span><span class="line"><span class="ln">5</span><span class="cl"><span class="c1"># 1. 建议源路径使用【绝对路径】，避免移动链接后路径断裂；</span>
</span></span><span class="line"><span class="ln">6</span><span class="cl"><span class="c1"># 2. 删除目录软链接时，严禁加末尾斜杠！</span>
</span></span><span class="line"><span class="ln">7</span><span class="cl">rm ~/Music      <span class="c1"># 正确：只删除软链接本身</span>
</span></span><span class="line"><span class="ln">8</span><span class="cl">rm -rf ~/Music/ <span class="c1"># 危险：可能会清空源目录下的真实内容！</span>
</span></span></code></pre></div><h3 id="2-date-时间格式化与时间戳互转">2. <code>date</code> 时间格式化与时间戳互转</h3>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl"><span class="c1"># 1. 格式化输出当前标准时间</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl">date +<span class="s2">&#34;%Y-%m-%d %H:%M:%S&#34;</span>   <span class="c1"># 输出: 2026-09-25 15:00:00</span>
</span></span><span class="line"><span class="ln">3</span><span class="cl">
</span></span><span class="line"><span class="ln">4</span><span class="cl"><span class="c1"># 2. 将 Unix 时间戳转换为人类可读时间</span>
</span></span><span class="line"><span class="ln">5</span><span class="cl">date -d @1727258400 +<span class="s2">&#34;%Y-%m-%d %H:%M:%S&#34;</span>  <span class="c1"># (Linux)</span>
</span></span><span class="line"><span class="ln">6</span><span class="cl">date -r <span class="m">1727258400</span> +<span class="s2">&#34;%Y-%m-%d %H:%M:%S&#34;</span>  <span class="c1"># (macOS)</span>
</span></span><span class="line"><span class="ln">7</span><span class="cl">
</span></span><span class="line"><span class="ln">8</span><span class="cl"><span class="c1"># 3. 获取当前时间的 10 位 Unix 时间戳</span>
</span></span><span class="line"><span class="ln">9</span><span class="cl">date +%s
</span></span></code></pre></div><hr>
<h2 id="四-容器与系统命名空间穿透-nsenter">四、 容器与系统命名空间穿透 (<code>nsenter</code>)</h2>
<p>在云原生和 Docker 运维中，许多精简镜像（如 Scratch、Distroless、Alpine 精简版）内部<strong>没有安装 <code>bash</code>、<code>curl</code>、<code>netstat</code> 等排错工具</strong>，导致 <code>docker exec -it &lt;container&gt; sh</code> 无法进入。</p>
<p>此时，我们可以借助 Linux 内核原生工具 <strong><code>nsenter</code></strong>，直接从宿主机“穿透”进入容器的命名空间（Network/PID/Mount 等）：</p>
<pre tabindex="0"><code class="language-mermaid" data-lang="mermaid">sequenceDiagram
    autonumber
    participant Host as 宿主机 (拥有完整工具链)
    participant Kernel as Linux 内核命名空间
    participant Container as 极简容器 (无 curl/bash)

    Host-&gt;&gt;Kernel: 查询容器主进程 PID (docker inspect)
    Host-&gt;&gt;Kernel: nsenter -t &lt;PID&gt; -n (共享容器网络命名空间)
    Kernel-&gt;&gt;Container: 宿主机直接使用 tcpdump / curl 排查容器网络！
</code></pre><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="c1"># 1. 获取容器在宿主机上的真实 PID</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="nv">PID</span><span class="o">=</span><span class="k">$(</span>docker inspect --format <span class="s1">&#39;{{ .State.Pid }}&#39;</span> &lt;container_name_or_id&gt;<span class="k">)</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">
</span></span><span class="line"><span class="ln"> 4</span><span class="cl"><span class="c1"># 2. 仅穿透进入容器的网络命名空间 (Network Namespace)</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl"><span class="c1"># 这样可以直接在宿主机上使用宿主机的 curl/tcpdump/ss 测试容器内的网络情况！</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">sudo nsenter -t <span class="nv">$PID</span> -n ss -tulnp
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">sudo nsenter -t <span class="nv">$PID</span> -n tcpdump -i eth0 port <span class="m">80</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">
</span></span><span class="line"><span class="ln"> 9</span><span class="cl"><span class="c1"># 3. 完整穿透进入容器全部命名空间</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">sudo nsenter -t <span class="nv">$PID</span> -m -u -i -n -p
</span></span></code></pre></div><hr>
<h2 id="五-现代-cli-生产力与效率工具集">五、 现代 CLI 生产力与效率工具集</h2>
<p>用现代高性能开源工具替换传统老旧命令，体验呈数量级提升：</p>
<table>
	<thead>
			<tr>
					<th style="text-align: left">场景</th>
					<th style="text-align: left">传统命令</th>
					<th style="text-align: left">现代替代品</th>
					<th style="text-align: left">核心优势</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td style="text-align: left"><strong>代码/文本搜索</strong></td>
					<td style="text-align: left"><code>grep -r</code></td>
					<td style="text-align: left"><strong><code>rg</code> (ripgrep)</strong></td>
					<td style="text-align: left">基于 Rust，极速多线程，自动忽略 <code>.gitignore</code> 与二进制文件</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>交互式模糊搜索</strong></td>
					<td style="text-align: left">纯命令翻页</td>
					<td style="text-align: left"><strong><code>fzf</code></strong></td>
					<td style="text-align: left">交互式模糊检索历史命令、文件名、Git 提交</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>JSON 数据处理</strong></td>
					<td style="text-align: left">手工解析</td>
					<td style="text-align: left"><strong><code>jq</code></strong></td>
					<td style="text-align: left">命令行优雅过滤、高亮与切片提取 JSON 字段</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>磁盘空间排查</strong></td>
					<td style="text-align: left"><code>du -sh *</code></td>
					<td style="text-align: left"><strong><code>ncdu</code> / <code>dust</code></strong></td>
					<td style="text-align: left">交互式目录占用分析，按大小可视化排序与删除</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>系统资源监控</strong></td>
					<td style="text-align: left"><code>top</code></td>
					<td style="text-align: left"><strong><code>btop</code> / <code>htop</code></strong></td>
					<td style="text-align: left">炫酷仪表盘、支持 CPU/内存/网络/磁盘/进程树一览无余</td>
			</tr>
	</tbody>
</table>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="c1"># 常用效率一行流：</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="c1"># 1. 查找包含某个关键词的文件</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">rg <span class="s2">&#34;DATABASE_URL&#34;</span> /opt/projects/
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">
</span></span><span class="line"><span class="ln"> 5</span><span class="cl"><span class="c1"># 2. 交互式模糊搜索历史执行过的命令</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl"><span class="nb">history</span> <span class="p">|</span> fzf
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">
</span></span><span class="line"><span class="ln"> 8</span><span class="cl"><span class="c1"># 3. 快速查找占用磁盘最大的前 10 个目录</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">du -ah /var/log <span class="p">|</span> sort -rh <span class="p">|</span> head -n <span class="m">10</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">
</span></span><span class="line"><span class="ln">11</span><span class="cl"><span class="c1"># 4. 快速定位某个端口被谁占用并查看进程名</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl">sudo lsof -i :8080
</span></span><span class="line"><span class="ln">13</span><span class="cl"><span class="c1"># 或</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl">sudo ss -tulnp <span class="p">|</span> grep :8080
</span></span></code></pre></div><hr>
<h2 id="结语">结语</h2>
<p>熟练掌握现代命令行工具与进阶技巧，不仅能让日常部署与开发效率倍增，更能让你在面对各种疑难杂症时游刃有余。建议将本手册收藏备用！</p>
]]></content:encoded><category>Linux</category><category>DevOps</category><category>命令行</category><category>SSH</category><category>运维</category><category>终端效率</category></item></channel></rss>