<?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>/zh-hant/tags/%E5%91%BD%E4%BB%A4%E5%88%97/</link><description>極簡純靜態 · 邊緣無界</description><generator>Hugo -- gohugo.io</generator><language>zh-Hant</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="/zh-hant/tags/%E5%91%BD%E4%BB%A4%E5%88%97/index.xml" rel="self" type="application/rss+xml"/><item><title>Linux 與 DevOps 常用高頻指令速查</title><link>/zh-hant/linux-commands/</link><pubDate>Thu, 17 Sep 2026 10:00:00 +0800</pubDate><author>Dukang Xu</author><guid isPermaLink="true">/zh-hant/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>優先使用效能更好、安全性更高的 <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>在 <code>~/.ssh/config</code> 中配置別名，免去手動輸入 IP 與連接埠：</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>
<blockquote>
<p>⚠️ <strong>Crontab 常見三大致命陷阱</strong>：</p>
<ol>
<li><strong>環境變數缺失</strong>：Crontab 預設的 <code>PATH</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>
<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">sudo supervisorctl reread     <span class="c1"># 讀取新增配置</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl">sudo supervisorctl update     <span class="c1"># 更新並啟動新程式</span>
</span></span><span class="line"><span class="ln">3</span><span class="cl">sudo supervisorctl status     <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">rm ~/Music      <span class="c1"># 正確：只刪除軟連結本身</span>
</span></span><span class="line"><span class="ln">6</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"># 格式化輸出當前標準時間</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></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"># 將 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></code></pre></div><hr>
<h2 id="四-容器與系統命名空間穿透-nsenter">四、 容器與系統命名空間穿透 (<code>nsenter</code>)</h2>
<p>在 Docker 維運中，許多精簡映像（如 Alpine 精簡版、Distroless）沒有內建 <code>curl</code>、<code>bash</code> 或 <code>netstat</code>。我們可以利用 <strong><code>nsenter</code></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"># 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"># 在宿主機上直接使用宿主機的工具測試容器網路！</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>
<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">rg <span class="s2">&#34;DATABASE_URL&#34;</span> /opt/projects/
</span></span><span class="line"><span class="ln">3</span><span class="cl"><span class="nb">history</span> <span class="p">|</span> fzf
</span></span><span class="line"><span class="ln">4</span><span class="cl">sudo lsof -i :8080
</span></span></code></pre></div>]]></content:encoded><category>Linux</category><category>DevOps</category><category>命令列</category><category>SSH</category><category>維運</category><category>終端效率</category></item></channel></rss>