MIT License

技术解读

以下内容由 GitRead 中文社区 编辑团队基于项目 README 与官方资料整理, 结合中文开发者的常见使用场景补充技术选型建议。具体以项目官方文档为准。

项目背景与痛点

在数字化时代,服务器的健康状态直接影响着各项服务的稳定性和可用性。甲骨文公司的云端服务由于其高可用性和弹性伸缩性,成为众多企业的首选。然而,在实际使用过程中,用户往往会遇到资源无法长期保持活跃,导致服务器资源在非活跃状态下被释放或暂时关闭的问题。

“服务器资源占用脚本”正是为了解决这一问题而设计的,旨在定期触发服务器上的活动,确保服务器持续被云端服务判定为活跃状态,从而避免不必要的资源释放。这对于需要长时间保持在线状态的服务至关重要。

核心技术揭秘

该项目的核心在于通过自动化的访问脚本确保服务器持续对外提供服务,避免因长时间无响应而被云服务提供商标记为“非活跃”。下面是项目的整体架构:

graph TD A[用户提交请求] --> B[脚本初始化] B --> C[环境变量配置] C --> D[启动周期检测] D --> E[执行保活脚本] E --> F{"是否成功"} F -->|"成功"| G[记录状态] F -->|"失败"| H[触发报警] G --> I[循环等待] H --> I I --> D

此脚本通过配置好的环境变量启动后,持续监控服务器状态,自动执行保活脚本,确保服务器的活跃性。同时,成功与失败的状态都会被记录,实现对系统状态的实时监控和报警机制。

功能亮点与差异

该项目的亮点在于其简单易用的同时具备高度定制化的可能。脚本默认行为满足大部分通用需求,且提供的环境变量配置允许用户自定义执行频率、报错重试次数等,从而适应不同业务场景的需求。另外,该脚本支持多种脚本语言的执行,不仅限于Shell或Python,大大提高了脚本的普适性。

相较于其他竞品,该项目的一个主要优势在于其依赖较少,易于部署,尤其是对于熟悉Shell脚本的用户而言。同时,其公开透明的源代码鼓励了社区的参与,使得项目的优化和问题修复能够迅速进行。

应用场景与落地建议

在生产环境中使用该项目时,需要注意配置合理的定时任务间隔,避免因配置不合理而对服务器本身造成过多的负担。此外,应定期审查脚本日志,确保脚本按预期运行,同时关注云端服务提供商的计费和资源管理政策,避免因资源长时间占用而不必要的成本负担。

此脚本特别适用于需要长期保持在线状态的业务场景,如数据仓库、Web服务或是其他需要不间断工作的应用。

综合评价

“服务器资源占用脚本”是一个简洁有效的工具,解决了长期保持服务器资源活跃的问题。其开放透明的设计和高度可定制的特性为用户提供了极大的灵活性。虽然项目的复杂性相对较低,但也正因如此,它能广泛应用于各类场景。对于开发者来说,这是提高系统稳定性和可用性的强力工具。

简要分析

热度分
3480
价值分
1622
活跃状态
活跃

语言占比

Shell

README

Oracle-server-keep-alive-script

Hits

甲骨文服务器保活脚本

这个项目是给低负载机器做保活用的,占用项可选:CPU、内存、带宽。

运行脚本已统一为 POSIX sh 兼容,也可以直接用 bash 启动。

英文文档见 README_EN.md。

支持范围

  • Linux:Debian、Ubuntu、RHEL/CentOS/Oracle Linux/AlmaLinux/Rocky、Fedora、Amazon Linux、Arch、Alpine、openSUSE/SLES、Void、Gentoo 等常见发行版。
  • BSD:FreeBSD、OpenBSD、NetBSD、DragonFly BSD 等带 cron 和标准 POSIX 工具的系统。
  • 调度:Linux 且有 systemd 时走 systemd;非 systemd 的 Linux 和 BSD 走 cron 监督器。
  • 包管理器:apt-get、dnf、yum、microdnf、zypper、apk、pacman、pkg、pkg_add、pkgin、xbps-install、emerge。

系统差异会自动降级处理。比如 BSD 没有 systemd 就走 cron;没有 speedtest 工具时,带宽模式会回退到默认速率估算,不会直接报错退出。

安装

使用 sh:

curl -fsSL https://raw.githubusercontent.com/spiritLHLS/Oracle-server-keep-alive-script/main/oalive.sh -o oalive.sh
chmod +x oalive.sh
sh oalive.sh

或使用 bash:

curl -fsSL https://raw.githubusercontent.com/spiritLHLS/Oracle-server-keep-alive-script/main/oalive.sh -o oalive.sh
chmod +x oalive.sh
bash oalive.sh

在仓库目录内运行:

sh oalive.sh

脚本需要 root 权限安装服务、cron、配置和日志目录。

菜单

  • 1:安装或重装保活服务
  • 2:卸载保活服务
  • 3:更新安装引导脚本
  • 4:退出

也可以使用命令行参数:

sh oalive.sh --install
sh oalive.sh --uninstall
sh oalive.sh --status
sh oalive.sh --update

特点

  • CPU:默认使用 POSIX 兼容占用逻辑,按“单核配额百分比”工作;2 到 4 核机器默认 核心数 * 20%,其他机器默认 25%。在 systemd 环境会再写入 CPUQuota 做双重限制。
  • 内存:默认目标为总内存 25%,每轮占用 300 秒、休息 300 秒。会读取 Linux /proc/meminfo 或 BSD sysctl 指标,并按临时目录可用空间限幅。
  • 带宽:默认每 45 分钟触发一次,最长下载 6 分钟,速率按测速结果的 30%。下载源使用多个普通静态测试文件逐个探测;源全部不可用时跳过本轮并等待下次调度,不会反复请求失效的特殊下载地址。自定义模式可直接指定 Mbps、时长、间隔和下载源。
  • 调度:systemd 环境安装 cpu-limit.service、memory-limit.service、bandwidth_occupier.timer;cron 环境安装 oalive-cron-runner.sh 监督器。
  • 安全:所有任务都有原子目录锁,避免并发重入;卸载时按锁和精确脚本路径停止任务,不再靠模糊进程名匹配。
  • 日志:日志写入 /var/log/oalive,单文件默认 128 KiB 自动轮转到 .1。

文件位置

  • 配置:/etc/oalive/oalive.conf
  • 启用状态:/etc/oalive/enabled.conf
  • 日志:/var/log/oalive/
  • 状态:/var/lib/oalive/
  • 运行锁:/tmp/oalive-*.lock
  • 运行脚本:/usr/local/bin/cpu-limit.sh、/usr/local/bin/memory-limit.sh、/usr/local/bin/bandwidth_occupier.sh、/usr/local/bin/oalive-cron-runner.sh

卸载

sh oalive.sh --uninstall

卸载会停止 systemd 服务或删除 cron 块,清理运行脚本、配置、状态文件和锁。重复卸载是安全的。

自定义

安装后可以编辑 /etc/oalive/oalive.conf,再重启对应调度:

带宽下载源可以用单个 URL、逗号或空格分隔的 URL 列表,或一个“每行一个 URL”的文件覆盖默认候选。探测使用短 GET 请求,避免只支持 GET 的源被错误排除;BANDWIDTH_URL_CHECKS=0 表示检查全部候选。所有源都失败时本轮会记录并跳过。

BANDWIDTH_URL=""
BANDWIDTH_URLS="https://example.com/large-file.bin,https://mirror.example.com/large-file.bin"
BANDWIDTH_URL_FILE=""
BANDWIDTH_URL_CHECKS=0
BANDWIDTH_PROBE_TIMEOUT=5
BANDWIDTH_PROBE_RATE=16384

systemd:

systemctl daemon-reload
systemctl restart cpu-limit.service memory-limit.service
systemctl restart bandwidth_occupier.timer

cron:

sh /usr/local/bin/oalive-cron-runner.sh --check

更多手动定时示例见 README_CRON.md。英文版定时说明见 README_CRON_EN.md。

说明

资源占用能否影响云厂商回收策略,没有确定保证。

这个项目只提供可控、可卸载、低风险的占用任务,请按服务商条款和自己的实际用途自行判断。

友链

VPS融合怪测评项目:

一键虚拟化项目:

Stargazers over time

Stargazers over time

评论

暂无评论