<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>运维 on JiangYM's Blog</title><link>https://jiangym.top/tags/%E8%BF%90%E7%BB%B4/</link><description>Recent content from JiangYM's Blog</description><generator>Hugo</generator><language>zh-cn</language><managingEditor>xxx@example.com (JiangYM)</managingEditor><webMaster>xxx@example.com (JiangYM)</webMaster><copyright>本博客所有文章除特别声明外，均采用 BY-NC-SA 许可协议。转载请注明出处！</copyright><lastBuildDate>Wed, 12 Aug 2026 10:00:00 +0800</lastBuildDate><atom:link href="https://jiangym.top/tags/%E8%BF%90%E7%BB%B4/index.xml" rel="self" type="application/rss+xml"/><item><title>Linux 服务器磁盘清理实用指南</title><link>https://jiangym.top/post/linux-disk-cleanup/</link><pubDate>Wed, 12 Aug 2026 10:00:00 +0800</pubDate><author>xxx@example.com (JiangYM)</author><guid>https://jiangym.top/post/linux-disk-cleanup/</guid><description>
<![CDATA[<h1>Linux 服务器磁盘清理实用指南</h1><p>作者：JiangYM（xxx@example.com）</p>
        
          <h2 id="前言">
<a class="header-anchor" href="#%e5%89%8d%e8%a8%80"></a>
前言
</h2><p>小服务器最容易遇到的问题就是磁盘不够用，尤其是 20G/40G 的小机子，跑几个 Docker 容器、加几个日志，很快就红了。</p>
<p>本文总结一套完整的磁盘清理流程，从排查到清理再到预防，按这个步骤来至少能腾出 30% 空间。</p>
<hr>
<h2 id="第一步排查大文件">
<a class="header-anchor" href="#%e7%ac%ac%e4%b8%80%e6%ad%a5%e6%8e%92%e6%9f%a5%e5%a4%a7%e6%96%87%e4%bb%b6"></a>
第一步：排查大文件
</h2><p>先搞清楚空间都去哪儿了。</p>
<h3 id="查看整体使用情况">
<a class="header-anchor" href="#%e6%9f%a5%e7%9c%8b%e6%95%b4%e4%bd%93%e4%bd%bf%e7%94%a8%e6%83%85%e5%86%b5"></a>
查看整体使用情况
</h3><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 整体磁盘使用</span>
</span></span><span class="line"><span class="cl">df -h
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 各目录占用</span>
</span></span><span class="line"><span class="cl">du -sh /* <span class="p">|</span> sort -rh <span class="p">|</span> head -10
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 当前目录下的子目录大小</span>
</span></span><span class="line"><span class="cl">du -sh ./* <span class="p">|</span> sort -rh
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="找出最大的文件">
<a class="header-anchor" href="#%e6%89%be%e5%87%ba%e6%9c%80%e5%a4%a7%e7%9a%84%e6%96%87%e4%bb%b6"></a>
找出最大的文件
</h3><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 找出 100M 以上的文件</span>
</span></span><span class="line"><span class="cl">find / -type f -size +100M -exec du -h <span class="o">{}</span> + <span class="p">|</span> sort -rh <span class="p">|</span> head -20
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 当前目录下最大的 10 个文件</span>
</span></span><span class="line"><span class="cl">find . -type f -exec du -h <span class="o">{}</span> + <span class="p">|</span> sort -rh <span class="p">|</span> head -10
</span></span></code></pre></td></tr></table>
</div>
</div><hr>
<h2 id="第二步系统级清理">
<a class="header-anchor" href="#%e7%ac%ac%e4%ba%8c%e6%ad%a5%e7%b3%bb%e7%bb%9f%e7%ba%a7%e6%b8%85%e7%90%86"></a>
第二步：系统级清理
</h2><h3 id="1-apt-缓存与旧包">
<a class="header-anchor" href="#1-apt-%e7%bc%93%e5%ad%98%e4%b8%8e%e6%97%a7%e5%8c%85"></a>
1. APT 缓存与旧包
</h3><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 清理 apt 下载的包缓存</span>
</span></span><span class="line"><span class="cl">sudo apt-get clean
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 自动移除不再需要的依赖</span>
</span></span><span class="line"><span class="cl">sudo apt-get autoremove -y
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 清理旧版本的内核</span>
</span></span><span class="line"><span class="cl">sudo apt-get autoremove --purge
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="2-系统日志">
<a class="header-anchor" href="#2-%e7%b3%bb%e7%bb%9f%e6%97%a5%e5%bf%97"></a>
2. 系统日志
</h3><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 查看 journal 日志占用</span>
</span></span><span class="line"><span class="cl">journalctl --disk-usage
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 只保留最近 1 周的日志</span>
</span></span><span class="line"><span class="cl">sudo journalctl --vacuum-time<span class="o">=</span>1w
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 限制日志最大 100M</span>
</span></span><span class="line"><span class="cl">sudo journalctl --vacuum-size<span class="o">=</span>100M
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="3-临时文件">
<a class="header-anchor" href="#3-%e4%b8%b4%e6%97%b6%e6%96%87%e4%bb%b6"></a>
3. 临时文件
</h3><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 清理 /tmp 中 7 天以上的文件</span>
</span></span><span class="line"><span class="cl">find /tmp -type f -atime +7 -delete
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 清理缓存目录</span>
</span></span><span class="line"><span class="cl">rm -rf ~/.cache/*
</span></span></code></pre></td></tr></table>
</div>
</div><hr>
<h2 id="第三步docker-清理重点">
<a class="header-anchor" href="#%e7%ac%ac%e4%b8%89%e6%ad%a5docker-%e6%b8%85%e7%90%86%e9%87%8d%e7%82%b9"></a>
第三步：Docker 清理（重点！）
</h2><p>Docker 是磁盘大户，几个镜像和容器就几个 G 出去了。</p>
        
        <hr><p>本文2026-08-12首发于<a href='https://jiangym.top/'>JiangYM's Blog</a>，最后修改于2026-08-12</p>]]></description><category>Linux</category></item><item><title>Linux 必备命令速查手册（运维向）</title><link>https://jiangym.top/post/linux-commands-cheatsheet/</link><pubDate>Mon, 10 Aug 2026 12:00:00 +0800</pubDate><author>xxx@example.com (JiangYM)</author><guid>https://jiangym.top/post/linux-commands-cheatsheet/</guid><description>
<![CDATA[<h1>Linux 必备命令速查手册（运维向）</h1><p>作者：JiangYM（xxx@example.com）</p>
        
          <h2 id="前言">
<a class="header-anchor" href="#%e5%89%8d%e8%a8%80"></a>
前言
</h2><p>Linux 命令千千万，但日常运维真正高频使用的也就几十个。本文整理了我每天都会用到的命令，按场景分类，方便速查。</p>
<hr>
<h2 id="一系统信息">
<a class="header-anchor" href="#%e4%b8%80%e7%b3%bb%e7%bb%9f%e4%bf%a1%e6%81%af"></a>
一、系统信息
</h2><h3 id="uname---系统信息">
<a class="header-anchor" href="#uname---%e7%b3%bb%e7%bb%9f%e4%bf%a1%e6%81%af"></a>
uname - 系统信息
</h3><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 查看内核版本和架构</span>
</span></span><span class="line"><span class="cl">uname -a
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 只看内核版本</span>
</span></span><span class="line"><span class="cl">uname -r
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 只看架构</span>
</span></span><span class="line"><span class="cl">uname -m
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="uptime---运行时间和负载">
<a class="header-anchor" href="#uptime---%e8%bf%90%e8%a1%8c%e6%97%b6%e9%97%b4%e5%92%8c%e8%b4%9f%e8%bd%bd"></a>
uptime - 运行时间和负载
</h3><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">uptime
</span></span><span class="line"><span class="cl"><span class="c1"># 输出： 10:24:30 up 30 days, 14:22,  2 users,  load average: 0.10, 0.20, 0.15</span>
</span></span><span class="line"><span class="cl"><span class="c1"># 最后三个数字分别是 1/5/15 分钟平均负载</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="free---内存使用">
<a class="header-anchor" href="#free---%e5%86%85%e5%ad%98%e4%bd%bf%e7%94%a8"></a>
free - 内存使用
</h3><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 人类可读格式</span>
</span></span><span class="line"><span class="cl">free -h
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 重点看 available 列（真正可用的内存）</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="df---磁盘使用">
<a class="header-anchor" href="#df---%e7%a3%81%e7%9b%98%e4%bd%bf%e7%94%a8"></a>
df - 磁盘使用
</h3><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">df -h
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 显示 inode 使用情况</span>
</span></span><span class="line"><span class="cl">df -i
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="du---目录大小">
<a class="header-anchor" href="#du---%e7%9b%ae%e5%bd%95%e5%a4%a7%e5%b0%8f"></a>
du - 目录大小
</h3><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 当前目录总大小</span>
</span></span><span class="line"><span class="cl">du -sh
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 子目录大小排行</span>
</span></span><span class="line"><span class="cl">du -sh ./* <span class="p">|</span> sort -rh <span class="p">|</span> head -10
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 排除某些目录</span>
</span></span><span class="line"><span class="cl">du -sh --exclude<span class="o">=</span>node_modules ./*
</span></span></code></pre></td></tr></table>
</div>
</div><hr>
<h2 id="二进程管理">
<a class="header-anchor" href="#%e4%ba%8c%e8%bf%9b%e7%a8%8b%e7%ae%a1%e7%90%86"></a>
二、进程管理
</h2><h3 id="ps---进程查看">
<a class="header-anchor" href="#ps---%e8%bf%9b%e7%a8%8b%e6%9f%a5%e7%9c%8b"></a>
ps - 进程查看
</h3><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 查看所有进程</span>
</span></span><span class="line"><span class="cl">ps aux
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 查看指定进程</span>
</span></span><span class="line"><span class="cl">ps aux <span class="p">|</span> grep nginx
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 显示进程树</span>
</span></span><span class="line"><span class="cl">ps auxf
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="top--htop---实时监控">
<a class="header-anchor" href="#top--htop---%e5%ae%9e%e6%97%b6%e7%9b%91%e6%8e%a7"></a>
top / htop - 实时监控
</h3><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 系统自带</span>
</span></span><span class="line"><span class="cl">top
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 更漂亮的 htop（需要安装）</span>
</span></span><span class="line"><span class="cl">htop
</span></span><span class="line"><span class="cl"><span class="c1"># 按 P 按 CPU 排序，按 M 按内存排序</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="kill---结束进程">
<a class="header-anchor" href="#kill---%e7%bb%93%e6%9d%9f%e8%bf%9b%e7%a8%8b"></a>
kill - 结束进程
</h3><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span><span class="lnt">9
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 温和结束（TERM 信号）</span>
</span></span><span class="line"><span class="cl"><span class="nb">kill</span> &lt;pid&gt;
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 强制结束（KILL 信号）</span>
</span></span><span class="line"><span class="cl"><span class="nb">kill</span> -9 &lt;pid&gt;
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 按名字杀进程</span>
</span></span><span class="line"><span class="cl">pkill nginx
</span></span><span class="line"><span class="cl">killall nginx
</span></span></code></pre></td></tr></table>
</div>
</div><hr>
<h2 id="三文件操作">
<a class="header-anchor" href="#%e4%b8%89%e6%96%87%e4%bb%b6%e6%93%8d%e4%bd%9c"></a>
三、文件操作
</h2><h3 id="find---文件查找">
<a class="header-anchor" href="#find---%e6%96%87%e4%bb%b6%e6%9f%a5%e6%89%be"></a>
find - 文件查找
</h3><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 按名称查找</span>
</span></span><span class="line"><span class="cl">find /path -name <span class="s2">&#34;*.log&#34;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 按大小查找（大于 100M）</span>
</span></span><span class="line"><span class="cl">find /path -size +100M
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 按时间查找（7天前修改的）</span>
</span></span><span class="line"><span class="cl">find /path -mtime +7
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 查找并删除</span>
</span></span><span class="line"><span class="cl">find /tmp -name <span class="s2">&#34;*.tmp&#34;</span> -delete
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 查找并执行命令</span>
</span></span><span class="line"><span class="cl">find . -name <span class="s2">&#34;*.sh&#34;</span> -exec chmod +x <span class="o">{}</span> <span class="se">\;</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="grep---内容搜索">
<a class="header-anchor" href="#grep---%e5%86%85%e5%ae%b9%e6%90%9c%e7%b4%a2"></a>
grep - 内容搜索
</h3><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 在文件中搜索</span>
</span></span><span class="line"><span class="cl">grep <span class="s2">&#34;error&#34;</span> /var/log/nginx/error.log
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 递归搜索目录</span>
</span></span><span class="line"><span class="cl">grep -r <span class="s2">&#34;function&#34;</span> ./src/
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 显示行号</span>
</span></span><span class="line"><span class="cl">grep -n <span class="s2">&#34;pattern&#34;</span> file.txt
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 反向匹配（不包含的行）</span>
</span></span><span class="line"><span class="cl">grep -v <span class="s2">&#34;info&#34;</span> file.log
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 忽略大小写</span>
</span></span><span class="line"><span class="cl">grep -i <span class="s2">&#34;Error&#34;</span> file.log
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="tar---打包压缩">
<a class="header-anchor" href="#tar---%e6%89%93%e5%8c%85%e5%8e%8b%e7%bc%a9"></a>
tar - 打包压缩
</h3><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 打包压缩</span>
</span></span><span class="line"><span class="cl">tar -czf archive.tar.gz /path/to/dir/
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 解压</span>
</span></span><span class="line"><span class="cl">tar -xzf archive.tar.gz
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 解压到指定目录</span>
</span></span><span class="line"><span class="cl">tar -xzf archive.tar.gz -C /target/dir/
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 查看内容</span>
</span></span><span class="line"><span class="cl">tar -tzf archive.tar.gz
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="rsync---远程同步">
<a class="header-anchor" href="#rsync---%e8%bf%9c%e7%a8%8b%e5%90%8c%e6%ad%a5"></a>
rsync - 远程同步
</h3><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 本地同步</span>
</span></span><span class="line"><span class="cl">rsync -avh source/ dest/
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 远程同步（上传）</span>
</span></span><span class="line"><span class="cl">rsync -avz local/ user@remote:/path/
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 带进度显示</span>
</span></span><span class="line"><span class="cl">rsync -avzP local/ user@remote:/path/
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 删除目标端多余文件（镜像同步）</span>
</span></span><span class="line"><span class="cl">rsync -avz --delete source/ dest/
</span></span></code></pre></td></tr></table>
</div>
</div><hr>
<h2 id="四网络相关">
<a class="header-anchor" href="#%e5%9b%9b%e7%bd%91%e7%bb%9c%e7%9b%b8%e5%85%b3"></a>
四、网络相关
</h2><h3 id="curl---http-请求">
<a class="header-anchor" href="#curl---http-%e8%af%b7%e6%b1%82"></a>
curl - HTTP 请求
</h3><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># GET 请求</span>
</span></span><span class="line"><span class="cl">curl https://example.com
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 只看响应头</span>
</span></span><span class="line"><span class="cl">curl -I https://example.com
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># POST 请求</span>
</span></span><span class="line"><span class="cl">curl -X POST -d <span class="s2">&#34;key=value&#34;</span> https://example.com/api
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 下载文件</span>
</span></span><span class="line"><span class="cl">curl -O https://example.com/file.zip
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 跟随重定向</span>
</span></span><span class="line"><span class="cl">curl -L https://example.com
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 测试 HTTPS 证书</span>
</span></span><span class="line"><span class="cl">curl -vI https://example.com
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="ss--netstat---端口监听">
<a class="header-anchor" href="#ss--netstat---%e7%ab%af%e5%8f%a3%e7%9b%91%e5%90%ac"></a>
ss / netstat - 端口监听
</h3><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 查看所有监听端口</span>
</span></span><span class="line"><span class="cl">ss -tlnp
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 查看所有连接</span>
</span></span><span class="line"><span class="cl">ss -tanp
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 老版本用 netstat</span>
</span></span><span class="line"><span class="cl">netstat -tlnp
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="ping---连通性测试">
<a class="header-anchor" href="#ping---%e8%bf%9e%e9%80%9a%e6%80%a7%e6%b5%8b%e8%af%95"></a>
ping - 连通性测试
</h3><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">ping example.com
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 只 ping 5 次</span>
</span></span><span class="line"><span class="cl">ping -c <span class="m">5</span> example.com
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="dig--nslookup---dns-查询">
<a class="header-anchor" href="#dig--nslookup---dns-%e6%9f%a5%e8%af%a2"></a>
dig / nslookup - DNS 查询
</h3><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 查 A 记录</span>
</span></span><span class="line"><span class="cl">dig example.com
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 查 MX 记录</span>
</span></span><span class="line"><span class="cl">dig mx example.com
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 用指定 DNS 查询</span>
</span></span><span class="line"><span class="cl">dig @8.8.8.8 example.com
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="iptables--ufw---防火墙">
<a class="header-anchor" href="#iptables--ufw---%e9%98%b2%e7%81%ab%e5%a2%99"></a>
iptables / ufw - 防火墙
</h3><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Ubuntu 用 ufw 更简单</span>
</span></span><span class="line"><span class="cl">sudo ufw status
</span></span><span class="line"><span class="cl">sudo ufw allow <span class="m">80</span>
</span></span><span class="line"><span class="cl">sudo ufw allow <span class="m">443</span>
</span></span><span class="line"><span class="cl">sudo ufw <span class="nb">enable</span>
</span></span></code></pre></td></tr></table>
</div>
</div><hr>
<h2 id="五用户与权限">
<a class="header-anchor" href="#%e4%ba%94%e7%94%a8%e6%88%b7%e4%b8%8e%e6%9d%83%e9%99%90"></a>
五、用户与权限
</h2><h3 id="chmod---修改权限">
<a class="header-anchor" href="#chmod---%e4%bf%ae%e6%94%b9%e6%9d%83%e9%99%90"></a>
chmod - 修改权限
</h3><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 可执行</span>
</span></span><span class="line"><span class="cl">chmod +x script.sh
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 数字权限（所有者读写，组和其他只读）</span>
</span></span><span class="line"><span class="cl">chmod <span class="m">644</span> file.txt
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 递归修改目录权限</span>
</span></span><span class="line"><span class="cl">chmod -R <span class="m">755</span> /path/
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="chown---修改所有者">
<a class="header-anchor" href="#chown---%e4%bf%ae%e6%94%b9%e6%89%80%e6%9c%89%e8%80%85"></a>
chown - 修改所有者
</h3><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">chown user:group file.txt
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 递归</span>
</span></span><span class="line"><span class="cl">chown -R www-data:www-data /var/www/
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="sudo---提权">
<a class="header-anchor" href="#sudo---%e6%8f%90%e6%9d%83"></a>
sudo - 提权
</h3><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 以 root 执行命令</span>
</span></span><span class="line"><span class="cl">sudo <span class="nb">command</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 切换到 root</span>
</span></span><span class="line"><span class="cl">sudo -i
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 切换到其他用户</span>
</span></span><span class="line"><span class="cl">sudo -u www-data bash
</span></span></code></pre></td></tr></table>
</div>
</div><hr>
<h2 id="六软件包管理">
<a class="header-anchor" href="#%e5%85%ad%e8%bd%af%e4%bb%b6%e5%8c%85%e7%ae%a1%e7%90%86"></a>
六、软件包管理
</h2><h3 id="apt---debianubuntu">
<a class="header-anchor" href="#apt---debianubuntu"></a>
apt - Debian/Ubuntu
</h3><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 更新源</span>
</span></span><span class="line"><span class="cl">sudo apt update
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 升级所有包</span>
</span></span><span class="line"><span class="cl">sudo apt upgrade -y
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 安装软件</span>
</span></span><span class="line"><span class="cl">sudo apt install nginx -y
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 卸载软件</span>
</span></span><span class="line"><span class="cl">sudo apt remove nginx
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 自动清理</span>
</span></span><span class="line"><span class="cl">sudo apt autoremove -y
</span></span><span class="line"><span class="cl">sudo apt clean
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="systemctl---服务管理">
<a class="header-anchor" href="#systemctl---%e6%9c%8d%e5%8a%a1%e7%ae%a1%e7%90%86"></a>
systemctl - 服务管理
</h3><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 启动服务</span>
</span></span><span class="line"><span class="cl">sudo systemctl start nginx
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 停止服务</span>
</span></span><span class="line"><span class="cl">sudo systemctl stop nginx
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 重启服务</span>
</span></span><span class="line"><span class="cl">sudo systemctl restart nginx
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 查看状态</span>
</span></span><span class="line"><span class="cl">sudo systemctl status nginx
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 开机自启</span>
</span></span><span class="line"><span class="cl">sudo systemctl <span class="nb">enable</span> nginx
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 查看所有服务</span>
</span></span><span class="line"><span class="cl">systemctl list-units --type<span class="o">=</span>service
</span></span></code></pre></td></tr></table>
</div>
</div><hr>
<h2 id="七日志查看">
<a class="header-anchor" href="#%e4%b8%83%e6%97%a5%e5%bf%97%e6%9f%a5%e7%9c%8b"></a>
七、日志查看
</h2><h3 id="查看日志文件">
<a class="header-anchor" href="#%e6%9f%a5%e7%9c%8b%e6%97%a5%e5%bf%97%e6%96%87%e4%bb%b6"></a>
查看日志文件
</h3><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 实时跟踪日志</span>
</span></span><span class="line"><span class="cl">tail -f /var/log/nginx/access.log
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 最后 100 行</span>
</span></span><span class="line"><span class="cl">tail -n <span class="m">100</span> /var/log/syslog
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 搜索日志</span>
</span></span><span class="line"><span class="cl">grep <span class="s2">&#34;error&#34;</span> /var/log/nginx/error.log <span class="p">|</span> tail -20
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="journalctl---systemd-日志">
<a class="header-anchor" href="#journalctl---systemd-%e6%97%a5%e5%bf%97"></a>
journalctl - systemd 日志
</h3><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 查看全部日志</span>
</span></span><span class="line"><span class="cl">journalctl
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 跟踪实时日志</span>
</span></span><span class="line"><span class="cl">journalctl -f
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 查看指定服务日志</span>
</span></span><span class="line"><span class="cl">journalctl -u nginx.service
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 查看今天的日志</span>
</span></span><span class="line"><span class="cl">journalctl --since today
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 查看最近 1 小时</span>
</span></span><span class="line"><span class="cl">journalctl --since <span class="s2">&#34;1 hour ago&#34;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 只看错误</span>
</span></span><span class="line"><span class="cl">journalctl -p err
</span></span></code></pre></td></tr></table>
</div>
</div><hr>
<h2 id="总结">
<a class="header-anchor" href="#%e6%80%bb%e7%bb%93"></a>
总结
</h2><p>这些命令覆盖了 90% 的日常运维场景。不用死记，收藏本文，用的时候查就行。</p>
        
        <hr><p>本文2026-08-10首发于<a href='https://jiangym.top/'>JiangYM's Blog</a>，最后修改于2026-08-10</p>]]></description><category>Linux</category></item><item><title>Linux 服务器安全加固 10 条最佳实践</title><link>https://jiangym.top/post/linux-security-tips/</link><pubDate>Sat, 08 Aug 2026 12:00:00 +0800</pubDate><author>xxx@example.com (JiangYM)</author><guid>https://jiangym.top/post/linux-security-tips/</guid><description>
<![CDATA[<h1>Linux 服务器安全加固 10 条最佳实践</h1><p>作者：JiangYM（xxx@example.com）</p>
        
          <h2 id="前言">
<a class="header-anchor" href="#%e5%89%8d%e8%a8%80"></a>
前言
</h2><p>很多人觉得&quot;我一个小服务器没人会来攻击&quot;，但实际上公网的服务器每天都在被扫描。弱密码、未打补丁、开放不必要的端口，都可能成为突破口。</p>
<p>本文分享 10 条简单但有效的安全加固措施，花半小时配置一下，安全性能提升 90%。</p>
<hr>
<h2 id="1-修改-ssh-默认端口">
<a class="header-anchor" href="#1-%e4%bf%ae%e6%94%b9-ssh-%e9%bb%98%e8%ae%a4%e7%ab%af%e5%8f%a3"></a>
1. 修改 SSH 默认端口
</h2><p>默认的 22 端口每天都有无数次暴力破解尝试，改个端口能挡住 99% 的扫描。</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 编辑 SSH 配置</span>
</span></span><span class="line"><span class="cl">sudo vi /etc/ssh/sshd_config
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 修改端口</span>
</span></span><span class="line"><span class="cl">Port <span class="m">22222</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 重启 SSH 服务</span>
</span></span><span class="line"><span class="cl">sudo systemctl restart sshd
</span></span></code></pre></td></tr></table>
</div>
</div><blockquote>
<p>⚠️ 修改端口后，<strong>先不要关闭当前连接</strong>，新开一个终端测试一下能否登录，防止自己被关在外面。</p>
</blockquote>
<hr>
<h2 id="2-禁用-root-登录">
<a class="header-anchor" href="#2-%e7%a6%81%e7%94%a8-root-%e7%99%bb%e5%bd%95"></a>
2. 禁用 root 登录
</h2><p>直接禁用 root 远程登录，用普通用户 + sudo 的方式：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo vi /etc/ssh/sshd_config
</span></span></code></pre></td></tr></table>
</div>
</div><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-ini" data-lang="ini"><span class="line"><span class="cl"><span class="na">PermitRootLogin no</span>
</span></span><span class="line"><span class="cl"><span class="na">PasswordAuthentication no  # 如果用密钥登录的话</span>
</span></span></code></pre></td></tr></table>
</div>
</div><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo systemctl restart sshd
</span></span></code></pre></td></tr></table>
</div>
</div><hr>
<h2 id="3-使用-ssh-密钥登录">
<a class="header-anchor" href="#3-%e4%bd%bf%e7%94%a8-ssh-%e5%af%86%e9%92%a5%e7%99%bb%e5%bd%95"></a>
3. 使用 SSH 密钥登录
</h2><p>密钥登录比密码登录安全得多，暴力破解几乎不可能。</p>
        
        <hr><p>本文2026-08-08首发于<a href='https://jiangym.top/'>JiangYM's Blog</a>，最后修改于2026-08-08</p>]]></description><category>安全</category></item><item><title>用 Cron 配置定时任务完全指南</title><link>https://jiangym.top/post/linux-cron-guide/</link><pubDate>Fri, 07 Aug 2026 10:00:00 +0800</pubDate><author>xxx@example.com (JiangYM)</author><guid>https://jiangym.top/post/linux-cron-guide/</guid><description>
<![CDATA[<h1>用 Cron 配置定时任务完全指南</h1><p>作者：JiangYM（xxx@example.com）</p>
        
          <h2 id="什么是-cron">
<a class="header-anchor" href="#%e4%bb%80%e4%b9%88%e6%98%af-cron"></a>
什么是 Cron？
</h2><p>Cron 是 Linux 系统自带的定时任务工具，可以按照设定的时间自动执行命令或脚本。运维中几乎所有自动化任务都离不开它：备份、清理、监控、同步&hellip;</p>
<hr>
<h2 id="基础用法">
<a class="header-anchor" href="#%e5%9f%ba%e7%a1%80%e7%94%a8%e6%b3%95"></a>
基础用法
</h2><h3 id="crontab-命令">
<a class="header-anchor" href="#crontab-%e5%91%bd%e4%bb%a4"></a>
crontab 命令
</h3><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 查看当前用户的定时任务</span>
</span></span><span class="line"><span class="cl">crontab -l
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 编辑定时任务</span>
</span></span><span class="line"><span class="cl">crontab -e
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 删除所有定时任务</span>
</span></span><span class="line"><span class="cl">crontab -r
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 查看其他用户的</span>
</span></span><span class="line"><span class="cl">sudo crontab -u root -l
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="格式说明">
<a class="header-anchor" href="#%e6%a0%bc%e5%bc%8f%e8%af%b4%e6%98%8e"></a>
格式说明
</h3><pre tabindex="0"><code>*  *  *  *  *  command
分 时 日  月 周  要执行的命令

# 取值范围
# 分：0-59
# 时：0-23
# 日：1-31
# 月：1-12
# 周：0-7（0和7都是周日）
</code></pre><h3 id="特殊符号">
<a class="header-anchor" href="#%e7%89%b9%e6%ae%8a%e7%ac%a6%e5%8f%b7"></a>
特殊符号
</h3><table>
	<thead>
			<tr>
					<th>符号</th>
					<th>含义</th>
					<th>示例</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td><code>*</code></td>
					<td>任意值</td>
					<td><code>*</code> 表示每一分钟</td>
			</tr>
			<tr>
					<td><code>,</code></td>
					<td>多个值</td>
					<td><code>1,15,30</code> 第1/15/30分钟</td>
			</tr>
			<tr>
					<td><code>-</code></td>
					<td>范围</td>
					<td><code>1-5</code> 周一到周五</td>
			</tr>
			<tr>
					<td><code>/</code></td>
					<td>间隔</td>
					<td><code>*/5</code> 每 5 分钟</td>
			</tr>
	</tbody>
</table>
<hr>
<h2 id="常用示例">
<a class="header-anchor" href="#%e5%b8%b8%e7%94%a8%e7%a4%ba%e4%be%8b"></a>
常用示例
</h2><h3 id="按分钟执行">
<a class="header-anchor" href="#%e6%8c%89%e5%88%86%e9%92%9f%e6%89%a7%e8%a1%8c"></a>
按分钟执行
</h3><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 每分钟执行</span>
</span></span><span class="line"><span class="cl">* * * * * /path/to/script.sh
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 每 5 分钟执行</span>
</span></span><span class="line"><span class="cl">*/5 * * * * /path/to/script.sh
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 每 10 分钟执行</span>
</span></span><span class="line"><span class="cl">*/10 * * * * /path/to/script.sh
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 第 5 和 35 分钟执行</span>
</span></span><span class="line"><span class="cl">5,35 * * * * /path/to/script.sh
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="按小时执行">
<a class="header-anchor" href="#%e6%8c%89%e5%b0%8f%e6%97%b6%e6%89%a7%e8%a1%8c"></a>
按小时执行
</h3><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 每小时执行（整点）</span>
</span></span><span class="line"><span class="cl"><span class="m">0</span> * * * * /path/to/script.sh
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 每 2 小时执行</span>
</span></span><span class="line"><span class="cl"><span class="m">0</span> */2 * * * /path/to/script.sh
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 每天 9 点和 18 点执行</span>
</span></span><span class="line"><span class="cl"><span class="m">0</span> 9,18 * * * /path/to/script.sh
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="按天执行">
<a class="header-anchor" href="#%e6%8c%89%e5%a4%a9%e6%89%a7%e8%a1%8c"></a>
按天执行
</h3><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 每天凌晨 3 点执行</span>
</span></span><span class="line"><span class="cl"><span class="m">0</span> <span class="m">3</span> * * * /path/to/backup.sh
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 每天中午 12 点执行</span>
</span></span><span class="line"><span class="cl"><span class="m">0</span> <span class="m">12</span> * * * /path/to/script.sh
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 每隔一天执行</span>
</span></span><span class="line"><span class="cl"><span class="m">0</span> <span class="m">3</span> */2 * * /path/to/script.sh
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="按周执行">
<a class="header-anchor" href="#%e6%8c%89%e5%91%a8%e6%89%a7%e8%a1%8c"></a>
按周执行
</h3><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 每周一早上 8 点</span>
</span></span><span class="line"><span class="cl"><span class="m">0</span> <span class="m">8</span> * * <span class="m">1</span> /path/to/script.sh
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 每周六晚上 11 点</span>
</span></span><span class="line"><span class="cl"><span class="m">0</span> <span class="m">23</span> * * <span class="m">6</span> /path/to/script.sh
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 工作日（周一到周五）早上 9 点</span>
</span></span><span class="line"><span class="cl"><span class="m">0</span> <span class="m">9</span> * * 1-5 /path/to/script.sh
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 周末执行</span>
</span></span><span class="line"><span class="cl"><span class="m">0</span> <span class="m">10</span> * * 0,6 /path/to/script.sh
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="按月执行">
<a class="header-anchor" href="#%e6%8c%89%e6%9c%88%e6%89%a7%e8%a1%8c"></a>
按月执行
</h3><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 每月 1 号凌晨 2 点</span>
</span></span><span class="line"><span class="cl"><span class="m">0</span> <span class="m">2</span> <span class="m">1</span> * * /path/to/script.sh
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 每月 15 号下午 3 点半</span>
</span></span><span class="line"><span class="cl"><span class="m">30</span> <span class="m">15</span> <span class="m">15</span> * * /path/to/script.sh
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 每月最后一天</span>
</span></span><span class="line"><span class="cl"><span class="m">0</span> <span class="m">0</span> 28-31 * * <span class="o">[</span> <span class="s2">&#34;</span><span class="k">$(</span>date -d tomorrow +%d<span class="k">)</span><span class="s2">&#34;</span> <span class="o">=</span> <span class="s2">&#34;01&#34;</span> <span class="o">]</span> <span class="o">&amp;&amp;</span> /path/to/script.sh
</span></span></code></pre></td></tr></table>
</div>
</div><hr>
<h2 id="特殊时间字符串">
<a class="header-anchor" href="#%e7%89%b9%e6%ae%8a%e6%97%b6%e9%97%b4%e5%ad%97%e7%ac%a6%e4%b8%b2"></a>
特殊时间字符串
</h2><p>Cron 还支持一些预定义的字符串：</p>
        
        <hr><p>本文2026-08-07首发于<a href='https://jiangym.top/'>JiangYM's Blog</a>，最后修改于2026-08-07</p>]]></description><category>Linux</category></item></channel></rss>