欢迎光临
我们一直在努力

有些服务商会踢掉长时间闲置的 VPS,怎么写个脚本产生微量负载防止被回收?

许多公有云或VPS服务商(尤其是一些提供免费试用或严格限制闲置资源的厂商)会监控虚拟机的活动状态。如果一个VPS长时间处于零负载、零网络流量的状态,它可能会被判定为“闲置”并被暂停或回收。对于个人站长来说,这可能导致网站意外中断。解决这个问题的方法是定期产生微小的、无害的系统活动(微负载),以确保主机状态始终处于“活跃”状态。

本文将指导您如何使用一个简单的Bash脚本和Crontab定时任务,来模拟持续的、可忽略不计的CPU和磁盘I/O活动。

第一步:创建微负载“保活”脚本

我们将创建一个名为 keep_alive.sh 的脚本,它将执行一个快速的数学计算(产生CPU活动)并写入一个时间戳日志文件(产生磁盘I/O活动)。

首先,通过SSH连接到您的VPS,并在 /usr/local/bin/ 目录下创建并编辑脚本文件:

sudo nano /usr/local/bin/keep_alive.sh

粘贴以下内容:

#!/bin/bash

# 临时文件路径
ACTIVITY_LOG="/tmp/vps_activity.log"

# 1. 产生微小的 CPU 负载
# 使用 'bc' 计算一个简单的数学表达式,例如计算 Pi 的前几位
# 这是一个耗时极短,但可被系统监控到的 CPU 活动。
RESULT=$(echo "scale=5; 4 * a(1)" | bc -l)

# 2. 产生微小的 Disk I/O 活动
# 记录当前时间戳和计算结果到日志文件中
echo "$(date '+%Y-%m-%d %H:%M:%S') - Keep alive signal generated. CPU Result: $RESULT" >> $ACTIVITY_LOG

# 3. 日志清理 (防止日志文件无限增大)
# 仅保留最近的100行记录
tail -n 100 $ACTIVITY_LOG > ${ACTIVITY_LOG}.tmp
mv ${ACTIVITY_LOG}.tmp $ACTIVITY_LOG

# 脚本结束
exit 0

保存并退出编辑器(Nano中按 Ctrl+X,然后Y,回车)。

第二步:赋予脚本执行权限

确保脚本是可执行的:

sudo chmod +x /usr/local/bin/keep_alive.sh

第三步:设置Crontab定时任务

现在我们需要设置一个定时任务(Cron Job),让这个脚本每隔一段时间自动运行。推荐间隔设置为5到10分钟。

编辑当前用户的 Crontab 文件:

crontab -e

在文件末尾添加以下一行。这行命令的意思是:每隔10分钟运行一次 **/usr/local/bin/keep_alive.sh 脚本**。

*/10 * * * * /usr/local/bin/keep_alive.sh > /dev/null 2>&1

保存并退出 Crontab 编辑器。

第四步:验证脚本是否正常运行

等待大约10到20分钟,然后检查日志文件 /tmp/vps_activity.log 是否有新的时间戳生成。

cat /tmp/vps_activity.log

您应该能看到类似以下的输出,并且时间戳是持续更新的:

2023-10-27 10:00:00 - Keep alive signal generated. CPU Result: 3.14159
2023-10-27 10:10:00 - Keep alive signal generated. CPU Result: 3.14159
2023-10-27 10:20:00 - Keep alive signal generated. CPU Result: 3.14159

如果日志文件在持续更新,说明您的微负载脚本已成功部署并正在有效地模拟系统活动,从而大大降低了VPS因“长时间闲置”而被回收的风险。这个脚本产生的负载极小,不会影响VPS的正常性能或造成服务商的滥用警告。

【本站文章皆为原创,未经允许不得转载】:汤不热吧 » 有些服务商会踢掉长时间闲置的 VPS,怎么写个脚本产生微量负载防止被回收?
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址