许多提供低价或免费资源的VPS和虚拟空间服务商,为了优化资源配置和防止资源滥用,会制定“闲置清理”政策。如果您的“小鸡”(VPS)长时间处于极低负载状态(如CPU利用率接近0%,磁盘I/O几乎没有),很可能会被系统判定为闲置并自动关停或回收。本教程将指导您编写一个简单而有效的Bash脚本,通过周期性地模拟轻微的CPU、磁盘和网络活动,来假装您的机器正在“努力干活”。
警告
请确保您的脚本活动量极小。过度频繁或高负载的活动可能会违反服务商的TOS,反而导致封号。
步骤一:创建并编辑Keepalive脚本
我们将创建一个名为 keepalive.sh 的脚本,它会周期性地执行轻量级的计算、磁盘写入和外部网络探测。
#!/bin/bash
# 脚本路径: /root/keepalive.sh
LOG_FILE="/var/log/keepalive_activity.log"
TEMP_FILE="/tmp/activity_temp_file.txt"
# 确保日志文件存在
touch $LOG_FILE
# 循环模拟活动
while true; do
TIMESTAMP=$(date +"%Y-%m-%d %H:%M:%S")
echo "[$TIMESTAMP] Simulating light activity..." >> $LOG_FILE
# 1. 轻量级CPU活动 (使用bc进行短暂的浮点运算)
# 运行0.1秒,确保CPU指标有微小跳动
echo "scale=50; 4 * a(1)" | bc -l > /dev/null &
PID_CPU=$!
sleep 0.1
kill $PID_CPU 2>/dev/null
# 2. 磁盘I/O活动 (写入并删除一个1MB的随机文件)
# 使用dd从/dev/urandom读取,确保活动具有随机性
dd if=/dev/urandom of=$TEMP_FILE bs=1M count=1 iflag=fullblock status=none
rm -f $TEMP_FILE
# 3. 网络活动 (ping一个稳定的外部地址,模拟网络请求)
ping -c 1 -W 1 8.8.8.8 > /dev/null
# 间隔时间:每隔30分钟执行一次循环 (1800秒)
sleep 1800
done
将上述内容保存为 /root/keepalive.sh。
步骤二:赋予执行权限
为了让脚本能够运行,您需要给予它执行权限。
chmod +x /root/keepalive.sh
步骤三:后台运行脚本
使用 nohup 命令将脚本放入后台运行,并将其输出重定向,防止SSH会话断开后脚本停止。
bash /root/keepalive.sh &
# 或者使用更推荐的 nohup
# nohup /root/keepalive.sh > /dev/null 2>&1 &
运行后,您可以使用 ps aux | grep keepalive.sh 来确认脚本是否正在运行。
步骤四:配置开机自启动(可选,推荐)
为了确保VPS重启后脚本仍能继续工作,建议使用Cron的 @reboot 功能来配置自启动。
- 打开 crontab 编辑器:
crontab -e
- 在文件末尾添加以下一行:
@reboot sleep 60 && /root/keepalive.sh &
解释:sleep 60 确保系统启动并网络稳定后再运行脚本,避免启动失败。
配置完成后,您的VPS将每30分钟进行一次轻微的活动,有效避免被自动清理机制标记为“闲置资源”。
汤不热吧