内置30+脚本,「定时工具」让NAS更牛,极空间部署CronMaster

2025-12-16 12:24:24 6点赞 24收藏 5评论

想要 NAS 玩得好,任务计划少不了。

目前国内的主流 NAS 品牌在任务计划这个功能上都有所欠缺,一方面是出于安全性的考虑,以免家庭用户误操作导致系统级任务失效,另一方面则是这个功能的需求相比于家庭娱乐场景优先级不高,所以迟迟没有开发。

不过任务计划功能不上线,不代表 NAS 用户没需求。对任何使用 NAS 久一点的用户来说,任务计划都是一个需求优先级非常高的功能,它可以让我们对 NAS 的掌控力更强,并且也支持让我们配置更多的自定义脚本、任务计划,来满足个人使用需求。

今天,Cherry 为大家带来的是一款基于 Docker 的任务计划管理面板 —— CronMaster,通过这个项目,原本我们需要手动完成的任务都可以通过 Cron 自动完成,对于追求自动化体验的 NAS 用户来说效果极佳。

项目特征:

• 现代 UI:美观、响应式界面,支持暗/亮模式。

• 系统信息 : 显示主机名、IP 地址、运行时间、内存、网络和 CPU 信息。

• 计划任务管理 : 查看、创建和删除带注释的计划任务。

• 脚本管理 : 随时查看、创建和删除 bash 脚本,用于在您的计划任务中使用。

• 任务执行日志记录 : 可选的 cron 任务日志记录功能,支持自动清理,捕获标准输出、标准错误、退出代码和时间戳。

• 实时更新 (SSE): 支持长时间运行任务的实时状态更新和日志实时流式传输(当启用日志记录时)。

• 智能任务执行 : 启用日志记录的任务在后台运行并支持实时更新,未启用日志记录的任务同步执行,超时时间为 5 分钟。

• 身份验证 : 支持安全的基于密码和/或 OIDC (SSO) 的身份验证,并具备适当的会话管理。

• REST API: 完整的 REST API,支持可选的 API 密钥认证,用于外部集成。

• Docker 支持 : 完全基于 Docker 容器运行。

• 简易设置 : 常见 cron 计划的快速预设。

内置30+脚本,「定时工具」让NAS更牛,极空间部署CronMaster

一、部署 Cronmaster

本次部署使用极空间私有云 Z4 Pro,这台 4盘位设备配备了 N97 处理器,兼顾性能和低功耗,是新手入门4盘位的一台很不错的选择。如果更追求性价比和扩展需求,极空间Q4/Q4 双擎版也是不错的选择。

在极空间 ZOS 系统里,官方有很多默认的监控监控脚本,这些服务都关乎到 ZOS 系统的稳定运行,所以这里要提醒大家千万不要去修改这些监控脚本!!千万不要!

打开极空间 Docker 应用,新建一个 Compose项目,将我下面的代码直接复制到代码框内。

内置30+脚本,「定时工具」让NAS更牛,极空间部署CronMaster

🔻yaml 代码

services:

cronmaster:

image: ghcr.io/fccview/cronmaster:latest

container_name: cronmaster

user: "root"

ports:

# ⭐下面这个是外网访问端口,自己修改

- "40123:3000"

environment:

- NODE_ENV=production

- DOCKER=true

- NEXT_PUBLIC_CLOCK_UPDATE_INTERVAL=30000

# ⭐下面这个是管理员密码,自己修改

- AUTH_PASSWORD=Cherry4nas@666

- HOST_CRONTAB_USER=root

volumes:

- /var/run/docker.sock:/var/run/docker.sock

- 路径/scripts:/app/scripts

- 路径/data:/app/data

- 路径/snippets:/app/snippets

pid: "host"

privileged: true

restart: always

init: true

注意到 yaml 代码里有三个【路径】,这个是需要我们进行替换的。替换方法很简单,点击代码框上方的【查询路径】,在你最常用的文件夹下新建一个【cronmaster】文件夹,然后进入后点击复制路径(格式一般是 /tmp/zfsv3/sata14/电话/data/docker/cronmaster),将复制出来的路径进行替换。

内置30+脚本,「定时工具」让NAS更牛,极空间部署CronMaster

由于该项目下载的镜像包是 ghcr.io 的镜像,所以下载可能会有点慢。可以通过自定义拉取或者加速库来解决。

内置30+脚本,「定时工具」让NAS更牛,极空间部署CronMaster

容器启动完成以后,在容器标签页下可以通过远程访问直接打开管理页面,也可以通过【配置远程访问】设置容器快捷方式,这样在PC桌面、手机端都可以直接打开。

整个过程无需你家里有公网 IP 就可以随时访问,相当不错。

内置30+脚本,「定时工具」让NAS更牛,极空间部署CronMaster

二、Cronmaster 使用及常用脚本分享

管理员的登录密码,就是我们在 yaml 里配置的密码,如果忘记修改了,那默认的是Cherry4nas@666

内置30+脚本,「定时工具」让NAS更牛,极空间部署CronMaster

先来看界面风格,CronMaster 这个项目分为左右两栏。

左侧是当前 NAS (服务器)的性能信息,包括运行时间、内存使用量、CPU使用率、GPU信息、网络流量、性能一览,所有的硬件信息都是30秒刷新一次,相对还是比较实时、准确的。

内置30+脚本,「定时工具」让NAS更牛,极空间部署CronMaster

右侧的话,是当前 NAS 的 Cron 任务列表,支持详细展示和简略展示

🔻详细展示包括了 定时时间(含Cron 翻译成自然语言)、脚本路径、运行用户等。

内置30+脚本,「定时工具」让NAS更牛,极空间部署CronMaster

🔻简略信息的话只包括 Cron、脚本路径。

内置30+脚本,「定时工具」让NAS更牛,极空间部署CronMaster

功能上,主要功能包括筛选、备份、新建Cron;然后单独每一个 Cron 支持启停改删等常用功能,还提供了快速开启日志归档、复制任务的快捷指令。

内置30+脚本,「定时工具」让NAS更牛,极空间部署CronMaster

新建的任务计划,支持 Command 指令,以及复杂的脚本指令。前者就不多介绍了,主要我看来介绍一下后者。

内置30+脚本,「定时工具」让NAS更牛,极空间部署CronMaster

在复杂脚本指令里,允许用户编Shell脚本,并且内置了近 30种兼容 NAS 的脚本可以直接导入。

这些脚本包括但不限于:影音文件移动、文件复制、重启服务、清除日志、数据库备份、遍历文件、检查 SSL、检查端口、备份文件、rsync 同步等等。

内置30+脚本,「定时工具」让NAS更牛,极空间部署CronMaster

1️⃣清理极空间悬垂镜像

#!/bin/bash # --- 配置区 --- # 定义需要保留的 Docker 镜像名称或 ID (用空格分隔) # 建议保留重要的基础镜像,如: alpine, ubuntu, busybox 等 EXCLUDED_IMAGES=( "nginx:latest" "mariadb:10.5" "my-important-app:v1" ) # 定义日志文件路径 LOG_FILE="/var/log/docker_cleanup.log" # ---------------- echo "--- $(date) ---" >> "$LOG_FILE" echo "开始检查并清理无用 Docker 镜像..." >> "$LOG_FILE" # 1. 获取所有当前运行容器所使用的镜像ID RUNNING_IMAGE_IDS=$(docker ps -a --format "{{.Image}}" | xargs -I {} docker images --filter "reference={}" -q | sort -u) # 2. 获取所有镜像ID ALL_IMAGE_IDS=$(docker images -q) # 3. 找出所有未被使用的镜像ID UNUSED_IMAGE_IDS="" for image_id in $ALL_IMAGE_IDS; do IS_USED=false for running_id in $RUNNING_IMAGE_IDS; do if [ "$image_id" == "$running_id" ]; then IS_USED=true break fi done if ! $IS_USED; then # 4. 检查是否在排除列表内 IS_EXCLUDED=false for excluded_ref in "${EXCLUDED_IMAGES[@]}"; do # 检查镜像引用名称是否匹配 if docker images --format "{{.Repository}}:{{.Tag}}" | grep -q "$image_id.*$excluded_ref"; then IS_EXCLUDED=true break fi # 检查镜像ID是否匹配(尽管ID不常用于排除,但留作备用) if [ "$image_id" == "$excluded_ref" ]; then IS_EXCLUDED=true break fi done if ! $IS_EXCLUDED; then UNUSED_IMAGE_IDS="$UNUSED_IMAGE_IDS $image_id" fi fi done if [ -z "$UNUSED_IMAGE_IDS" ]; then echo "未发现需要清理的无用镜像。" >> "$LOG_FILE" else echo "以下镜像将被清理 (ID): $UNUSED_IMAGE_IDS" >> "$LOG_FILE" # 执行清理操作 docker rmi $UNUSED_IMAGE_IDS >> "$LOG_FILE" 2>&1 echo "清理完成。" >> "$LOG_FILE" fi echo "--- 清理任务结束 ---" >> "$LOG_FILE"

2️⃣内存过低,自动重启虚拟机、docker

#!/bin/bash # --- 配置区 --- # 内存使用率阈值(百分比) MEMORY_THRESHOLD=85 # 重启目标列表 (按优先级从高到低排列) # 1. Docker 容器名称列表 (例如: "qbit" "portainer") DOCKER_TARGETS=("my-heavy-container1" "my-heavy-container2") # 2. 虚拟机名称列表 (如果极空间支持 QEMU/KVM 命令,可能需要调整) # 假设使用 virsh (QEMU/KVM 管理工具) VM_TARGETS=("win10-vm" "ubuntu-server") # 定义日志文件路径 LOG_FILE="/var/log/memory_monitor.log" # ---------------- # 获取当前内存使用率 (百分比) # Linux 命令: free | grep Mem | awk '{print ($3/$2) * 100}' MEMORY_USAGE=$(free | grep Mem | awk '{print int(($3/$2) * 100)}') echo "--- $(date) ---" >> "$LOG_FILE" echo "当前内存使用率: $MEMORY_USAGE%" >> "$LOG_FILE" if [ "$MEMORY_USAGE" -ge "$MEMORY_THRESHOLD" ]; then echo "!!! 警告:内存使用率 ($MEMORY_USAGE%) 超过阈值 ($MEMORY_THRESHOLD%),开始执行应急重启..." >> "$LOG_FILE" # --- 应急措施 1: 重启 Docker 容器 --- for container in "${DOCKER_TARGETS[@]}"; do echo "尝试重启 Docker 容器: $container" >> "$LOG_FILE" # 检查容器是否存在且正在运行 if docker ps -a --format "{{.Names}}" | grep -q "^$container$"; then docker restart "$container" >> "$LOG_FILE" 2>&1 echo "容器 $container 已重启。" >> "$LOG_FILE" # 重启一个目标后,等待几秒钟让内存释放,然后退出脚本 sleep 10 exit 0 else echo "容器 $container 未找到或未运行,跳过。" >> "$LOG_FILE" fi done # --- 应急措施 2: 重启虚拟机 --- # 注意: 极空间环境可能不支持 virsh,请根据实际情况调整 for vm_name in "${VM_TARGETS[@]}"; do echo "尝试重启虚拟机: $vm_name" >> "$LOG_FILE" # 假设使用 virsh 命令 if command -v virsh &> /dev/null; then # 优雅关机再启动,或者直接重启 virsh shutdown "$vm_name" sleep 30 # 等待关机 virsh start "$vm_name" >> "$LOG_FILE" 2>&1 echo "虚拟机 $vm_name 已尝试重启。" >> "$LOG_FILE" exit 0 else echo "virsh 命令不存在,无法重启虚拟机 $vm_name" >> "$LOG_FILE" exit 0 fi done else echo "内存使用率正常,无需操作。" >> "$LOG_FILE" fi


总结

CronMaster 的部署,可以说是 NAS 私有云产品功能补充的一大助力,将极大的提高 NAS 用户对 NAS 的操作能力;同时可视化的界面和脚本编辑界面,则可以让我们更好的管理任务计划、脚本,把很多 NAS 系统无法体现的功能通过任务计划来执行。

最后再次提醒,ZOS 默认拥有 10条 监控任务,请务必不要动,否则会造成系统功能的损坏!!

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
5评论

  • 精彩
  • 最新
  • 置顶 不用羡慕群晖的任务计划,任何NAS都可以拥有

    校验提示文案

    提交
    白裙用户默默的飘过

    校验提示文案

    提交
    收起所有回复
  • 自己手动改,或者偷懒用1panel不就行了……

    校验提示文案

    提交
  • 哇 要收藏学习才行,我才刚开始搞nas

    校验提示文案

    提交
  • 以下是被折叠的评论 查看
已折叠部分评论
展开
收起
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
24
扫一下,分享更方便,购买更轻松