<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>SadSevers on KukaDam</title>
        <link>https://bobqaq003.github.io/Kuka-hugo/categories/sadsevers/</link>
        <description>Recent content in SadSevers on KukaDam</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <copyright>KukaDam</copyright>
        <lastBuildDate>Wed, 28 Jan 2026 21:56:48 +0800</lastBuildDate><atom:link href="https://bobqaq003.github.io/Kuka-hugo/categories/sadsevers/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>[Linux] SadSevers 解题思路</title>
        <link>https://bobqaq003.github.io/Kuka-hugo/p/linux-sadsevers-%E8%A7%A3%E9%A2%98%E6%80%9D%E8%B7%AF/</link>
        <pubDate>Wed, 28 Jan 2026 21:37:24 +0800</pubDate>
        
        <guid>https://bobqaq003.github.io/Kuka-hugo/p/linux-sadsevers-%E8%A7%A3%E9%A2%98%E6%80%9D%E8%B7%AF/</guid>
        <description>&lt;h2 id=&#34;vmware虚拟机安装&#34;&gt;VMware虚拟机安装
&lt;/h2&gt;&lt;p&gt;暂且记录一下安装的东西是啥意思&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;基本信息&lt;/p&gt;
&lt;p&gt;



&lt;div class=&#34;post-img-view&#34;&gt;
	&lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://s2.loli.net/2025/11/15/qr98BdPbw5UZMjp.png&#34;&gt;
		&lt;img src=&#34;https://s2.loli.net/2025/11/15/qr98BdPbw5UZMjp.png&#34; alt=&#34;image-20251115150600835&#34;  /&gt;
	&lt;/a&gt;
&lt;/div&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;全名：这是计算机名字，在命令行终端显示&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;用户名：默认用户名，在命令行终端显示&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;虚拟机名字和安装位置&lt;/p&gt;
&lt;p&gt;



&lt;div class=&#34;post-img-view&#34;&gt;
	&lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://s2.loli.net/2025/11/15/hkaoWr3uwg7YKMl.png&#34;&gt;
		&lt;img src=&#34;https://s2.loli.net/2025/11/15/hkaoWr3uwg7YKMl.png&#34; alt=&#34;image-20251115151034473&#34;  /&gt;
	&lt;/a&gt;
&lt;/div&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;虚拟机名称：指VMware管理虚拟机用的&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;最大磁盘大小&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;



&lt;div class=&#34;post-img-view&#34;&gt;
	&lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://s2.loli.net/2025/11/15/o6GLCQ1je4gw28J.png&#34;&gt;
		&lt;img src=&#34;https://s2.loli.net/2025/11/15/o6GLCQ1je4gw28J.png&#34; alt=&#34;image-20251115151314221&#34;  /&gt;
	&lt;/a&gt;
&lt;/div&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;最大磁盘大小：虚拟机占用宿主机的最大容量，这个可以调整大一些，因为虚拟机实际占用大小是慢慢增加的，而不是一开始就是指定值大小，并且这个值后期可以修改。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;自定义硬件&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;不一定给的配置越高虚拟机越流畅，因为一方面会导致宿主机的资源太少，另一方面宿主机调动这么多虚拟机资源也会有负担。这个配置虚拟机创建好之后也可以再更改&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;三种网络适配器：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;桥接模式&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;虚拟机&lt;strong&gt;直接连接到主机的物理网络，就像是网络中的一个独立主机&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;虚拟机将会获得与物理网络相同的IP地址（通常通过DHCP分配），因此它可以与网络中的其他物理设备进行直接通信。&lt;/li&gt;
&lt;li&gt;适用于需要&lt;strong&gt;虚拟机与外部网络设备进行完全交互&lt;/strong&gt;的场景，例如测试网络服务和配置。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;NAT模式&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;允许虚拟机通过主机的IP地址访问外部网络。&lt;/li&gt;
&lt;li&gt;虚拟机在一个虚拟的内部网络中运行，具有独立的私有IP地址，通过主机的网络连接进行地址转换。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;限制了外部网络直接访问虚拟机，但虚拟机可以主动访问外部网络&lt;/strong&gt;。适合需要访问互联网但不需要被外部设备访问的场景。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;仅主机模式&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;虚拟机与主机之间建立一个隔离的网络，不与外部网络相连。&lt;/li&gt;
&lt;li&gt;虚拟机可以与主机以及同一模式下的其他虚拟机进行通信，但&lt;strong&gt;不能直接访问外部网络&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;适用于需要隔离测试环境或模拟内部网络的情况，不需要与外部设备通信。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;综上，要上网选择 &lt;strong&gt;NAT&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;快照&#34;&gt;快照
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;虚拟机快照用于&lt;strong&gt;记录虚拟机在特定时间点的状态&lt;/strong&gt;，包括虚拟机的内存状态、硬盘数据以及相关的设置。当你创建一个快照时，&lt;strong&gt;相当于给当前的虚拟机做了一个“备份”，可以在需要时恢复到此状态&lt;/strong&gt;。我们在刚创建好虚拟机时创建一个快照方便后续恢复到这个最“纯净”的时候。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;恢复快照可以让虚拟机恢复到拍摄快照对应的时刻。比如可以在进行某个危险操作之前先拍摄快照，如果操作出错那么就可以通过恢复快照回到出错之前的状态，就不再需要重新安装虚拟机了。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;sadservers场景&#34;&gt;SadServers场景
&lt;/h2&gt;&lt;blockquote class=&#34;alert alert-warning&#34;&gt;
    &lt;p&gt;因为是初学者，可能某些理解不太对。以下仅为个人理解。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h3 id=&#34;heading&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://sadservers.com/scenario/saint-john&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&amp;ldquo;Saint John&amp;rdquo;: what is writing to this log file?&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Description:&lt;/strong&gt; A developer created a testing program that is continuously writing to a log file &lt;code&gt;/var/log/bad.log&lt;/code&gt; and filling up disk. You can check for example with&lt;code&gt; tail -f /var/log/bad.log.&lt;/code&gt;
This program is no longer needed. Find it and terminate it. Do not delete the log file.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;找到进程：&lt;code&gt;fuser -v /var/log/bad.log&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kill&lt;/code&gt; 进程号&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;heading-1&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://sadservers.com/scenario/saskatoon&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt; &amp;ldquo;Saskatoon&amp;rdquo;: counting IPs.&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Description:&lt;/strong&gt; There&amp;rsquo;s a web server access log file at &lt;code&gt;/home/admin/access.log&lt;/code&gt;. The file consists of one line per HTTP request, with the requester&amp;rsquo;s IP address at the beginning of each line.&lt;/p&gt;
&lt;p&gt;Find what&amp;rsquo;s the IP address that has the most requests in this file (there&amp;rsquo;s no tie; the IP is unique). Write the solution into a file &lt;code&gt;/home/admin/highestip.txt&lt;/code&gt;. For example, if your solution is &amp;ldquo;1.2.3.4&amp;rdquo;, you can do &lt;code&gt;echo &amp;quot;1.2.3.4&amp;quot; &amp;gt; /home/admin/highestip.txt&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Test:&lt;/strong&gt; The SHA1 checksum of the IP address sha1sum &lt;code&gt;/home/admin/highestip.txt&lt;/code&gt; is &lt;code&gt;6ef426c40652babc0d081d438b9f353709008e93&lt;/code&gt; (just a way to verify the solution without giving it away.)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;提取IP文件的地址，统计次数，并排序后打印第一个
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;awk &#39;{print $1}&#39; /home/admin/access.log | sort | uniq -c | sort -rn | head -1 | awk &#39;{print $2}&#39;&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;{print $1}&lt;/code&gt; ：每行的第一个字段（IP地址）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sort&lt;/code&gt; ：将 IP 地址按字母顺序排序&lt;/li&gt;
&lt;li&gt;&lt;code&gt;uniq -c&lt;/code&gt; ：统计每个唯一 IP 地址的出现次数，&lt;code&gt;-c&lt;/code&gt; ：在每行前面显示该 IP 出现的次数&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sort -rn&lt;/code&gt; ：按次数降序排序，&lt;code&gt;-r&lt;/code&gt;：降序排序，&lt;code&gt;-n&lt;/code&gt;：按数值排序&lt;/li&gt;
&lt;li&gt;&lt;code&gt;head -1&lt;/code&gt;：只取第一行&lt;/li&gt;
&lt;li&gt;&lt;code&gt;awk &#39;{print $2}&#39;&lt;/code&gt;：从格式 &lt;code&gt;次数 IP地址&lt;/code&gt; 中提取 IP 地址（第二列）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;用echo写入&lt;code&gt;home/admin/highestip.txt&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;heading-2&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://sadservers.com/scenario/bucharest&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt; &amp;ldquo;Bucharest&amp;rdquo;: Connecting to Postgres&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Description:&lt;/strong&gt; A web application relies on the PostgreSQL 13 database present on this server. However, the connection to the database is not working. Your task is to identify and resolve the issue causing this connection failure. The application connects to a database named &lt;code&gt;app1&lt;/code&gt; with the user &lt;code&gt;app1user&lt;/code&gt; and the password &lt;code&gt;app1user&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Credit &lt;a class=&#34;link&#34; href=&#34;https://twitter.com/PykPyky&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;PykPyky&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Test:&lt;/strong&gt; Running &lt;code&gt;PGPASSWORD=app1user psql -h 127.0.0.1 -d app1 -U app1user -c &#39;\q&#39;&lt;/code&gt; succeeds (does not return an error).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;执行命令&lt;code&gt;PGPASSWORD=app1user psql -h 127.0.0.1 -d app1 -U app1user -c &#39;\q&#39;&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;- psql: error: FATAL:  pg_hba.conf rejects connection for host &amp;#34;127.0.0.1&amp;#34;, user &amp;#34;app1user&amp;#34;, database &amp;#34;app1&amp;#34;, SSL on
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;- FATAL:  pg_hba.conf rejects connection for host &amp;#34;127.0.0.1&amp;#34;, user &amp;#34;app1user&amp;#34;, database &amp;#34;app1&amp;#34;, SSL off
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;sudo -u postgres psql -t -P format=unaligned -c &#39;SHOW hba_file;&#39;&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;找到这个文件的位置，进入目录&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;查看&lt;code&gt;pg_hba.conf&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;发现reject&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;



&lt;div class=&#34;post-img-view&#34;&gt;
	&lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://s2.loli.net/2025/12/23/e3LkVKE51T2wozd.png&#34;&gt;
		&lt;img src=&#34;https://s2.loli.net/2025/12/23/e3LkVKE51T2wozd.png&#34; alt=&#34;image&#34;  /&gt;
	&lt;/a&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;最前面两条“全拒绝”规则把任何 TCP/IP 连接都挡掉了，&lt;code&gt;reject&lt;/code&gt; 行&lt;strong&gt;按顺序匹配&lt;/strong&gt;，只要客户端走 TCP（含 &lt;code&gt;127.0.0.1&lt;/code&gt;），还没轮到后面的&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;注释两条规则或移到最后&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;保存后重载配置&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;sudo systemctl reload postgresql&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Reason：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;pg_hba.conf&lt;/code&gt; 文件中最前面两条规则使用了 &lt;strong&gt;reject&lt;/strong&gt; 方法，无条件拒绝了所有 TCP/IP 连接（包括 localhost 的 &lt;code&gt;127.0.0.1&lt;/code&gt;）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;pg_hba.conf&lt;/code&gt; 是 PostgreSQL 的主机基认证（Host-Based Authentication）配置文件，它控制谁（user）、从哪里（host）、连接哪个数据库（database）、用什么方式（local 或 host）可以访问，以及采用何种认证方法（md5、trust、reject 等）。&lt;/li&gt;
&lt;li&gt;文件中的规则按从上到下的顺序逐一匹配：PostgreSQL 会从第一行开始检查，找到第一条匹配的规则就立即应用它，后面的规则不会再看（官方文档明确强调顺序的重要性）。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;通常是人为误配置或安全加固时遗留的问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;有人想阻止外部远程连接，把 reject 规则加在前面作为“默认拒绝”，但忘记或没意识到 localhost 的 TCP 连接（&lt;code&gt;127.0.0.1&lt;/code&gt;）也会被挡。&lt;/li&gt;
&lt;li&gt;正常情况下，localhost TCP 连接应该有单独的允许规则，如&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;host    all             all             127.0.0.1/32    md5
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;host    all             all             ::1/128         md5
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;heading-3&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://sadservers.com/scenario/alexandria&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&amp;ldquo;Alexandria&amp;rdquo;: The Vanishing Backups&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Description:&lt;/strong&gt; A critical backup &lt;strong&gt;cron&lt;/strong&gt; job has silently stopped working 3 days ago. The backup script is located at &lt;code&gt;/opt/backup/backup.sh&lt;/code&gt; and should create daily backups in &lt;code&gt;/var/backups/daily/&lt;/code&gt;, but no new backups have been created recently.&lt;/p&gt;
&lt;p&gt;Looking at the backup directory, you can see old backup files from a few days ago, proving the system used to work. However, there are no error emails, no obvious error logs, and the &lt;strong&gt;cron&lt;/strong&gt; service appears to be running normally.&lt;/p&gt;
&lt;p&gt;Fix ALL issues preventing the backups from running, so that backups are created successfully and reliably.&lt;/p&gt;
&lt;p&gt;Test directory: &lt;code&gt;/var/backups/daily/&lt;/code&gt;
Backup script: &lt;code&gt;/opt/backup/backup.sh&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Test:&lt;/strong&gt; The solution will be validated by checking if a backup file has been created in the last 10 minutes.&lt;/p&gt;
&lt;p&gt;The &amp;ldquo;Check My Solution&amp;rdquo; button runs the script &lt;code&gt;/home/admin/agent/check.sh&lt;/code&gt;, which you can see and execute.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;手动运行脚本 &lt;code&gt;sudo /opt/backup/backup.sh&lt;/code&gt; 发现锁文件：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;admin@i-0866e3e49c14825af:~$ sudo /opt/backup/backup.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;Error: Backup already running &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;lock file exists&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;查看cron服务状态 &lt;code&gt;systemctl status cron.service&lt;/code&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;admin@i-0866e3e49c14825af:~$ systemctl status cron.service
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;● cron.service - Regular background program processing daemon
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;     Loaded: loaded &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;/usr/lib/systemd/system/cron.service&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; enabled&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; preset: enabled&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 4&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;     Active: active &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;running&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; since Sat 2025-12-27 07:29:23 UTC&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; 1min 25s ago
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 5&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt; Invocation: b0a20ceeebc04b07ae9aa0519b46a888
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 6&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;       Docs: man:cron&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;8&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 7&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;   Main PID: &lt;span class=&#34;m&#34;&gt;763&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;cron&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 8&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;      Tasks: &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;limit: 503&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 9&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;     Memory: 496K &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;peak: 1.8M&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;        CPU: 23ms
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;11&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;     CGroup: /system.slice/cron.service
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;12&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;             └─763 /usr/sbin/cron -f
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;13&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;Dec &lt;span class=&#34;m&#34;&gt;27&lt;/span&gt; 07:29:23 i-0866e3e49c14825af systemd&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;1&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;: Started cron.service - Regular background program pro&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;14&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;Dec &lt;span class=&#34;m&#34;&gt;27&lt;/span&gt; 07:29:23 i-0866e3e49c14825af cron&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;763&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;: &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;CRON&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; INFO &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;pidfile &lt;span class=&#34;nv&#34;&gt;fd&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; 3&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;15&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;Dec &lt;span class=&#34;m&#34;&gt;27&lt;/span&gt; 07:29:23 i-0866e3e49c14825af cron&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;763&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;: &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;CRON&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; INFO &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;Running @reboot &lt;span class=&#34;nb&#34;&gt;jobs&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;16&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;Dec &lt;span class=&#34;m&#34;&gt;27&lt;/span&gt; 07:30:01 i-0866e3e49c14825af CRON&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;1469&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;: pam_unix&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;cron:session&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;: session opened &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; user root&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;17&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;Dec &lt;span class=&#34;m&#34;&gt;27&lt;/span&gt; 07:30:01 i-0866e3e49c14825af CRON&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;1471&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;: &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;root&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; CMD &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;/opt/backup/old_backup.sh &amp;gt; /dev/null 2&amp;gt;&lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;18&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;Dec &lt;span class=&#34;m&#34;&gt;27&lt;/span&gt; 07:30:01 i-0866e3e49c14825af CRON&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;1469&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;: pam_unix&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;cron:session&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;: session closed &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; user root
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;Dec 27 07:30:01 ... CRON[1471]: (root) CMD (/opt/backup/old_backup.sh &amp;gt; /dev/null 2&amp;gt;&amp;amp;1)&lt;/code&gt; 说明&lt;strong&gt;crontab&lt;/strong&gt;里配置的仍然是 &lt;code&gt;old_backup.sh&lt;/code&gt;，而不是正确的&lt;code&gt;backup.sh&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;编辑root的**crontab ** &lt;code&gt;sudo crontab -e&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;



&lt;div class=&#34;post-img-view&#34;&gt;
	&lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://s2.loli.net/2025/12/27/zan8GVYdymCApfg.png&#34;&gt;
		&lt;img src=&#34;https://s2.loli.net/2025/12/27/zan8GVYdymCApfg.png&#34; alt=&#34;image-20251227154330035&#34;  /&gt;
	&lt;/a&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;old_backup.sh&lt;/code&gt; 改为 &lt;code&gt;backup.sh&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;查看&lt;code&gt;ls /opt/backup/&lt;/code&gt;  并删除锁文件 &lt;code&gt;sudo rm -f /opt/backup/backup.lock&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;重新启动 &lt;code&gt;sudo /opt/backup/backup.sh&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Reason：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;crontab 配置的脚本路径错误
&lt;ul&gt;
&lt;li&gt;root 的 crontab 里写的仍然是旧脚本：&lt;code&gt;/opt/backup/old_backup.sh&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;正确的、当前正在使用的备份脚本是 &lt;code&gt;/opt/backup/backup.sh&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;很可能之前有人把脚本重命名或替换成了新版本，但忘记更新 cron 配置&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;残留的锁文件导致手动测试也失败
&lt;ul&gt;
&lt;li&gt;正确的 &lt;code&gt;backup.sh&lt;/code&gt; 脚本内部有锁机制：会检查 &lt;code&gt; /opt/backup/backup.lock&lt;/code&gt; 是否存在。&lt;/li&gt;
&lt;li&gt;如果锁文件存在，就认为“上一次备份还在运行”，直接报错退出： &lt;code&gt;Error: Backup already running (lock file exists)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;很可能是几天前备份异常中断（比如机器重启、进程被杀等），导致锁文件没被正常删除，残留了下来。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
