收起左侧

通过Cron,我实现了智能定时关机,并可用于管理其他自定义定时计划任务

6
回复
986
查看
[ 复制链接 ]

7

主题

13

回帖

0

牛值

江湖小虾

2025-12-25 12:06:09 显示全部楼层 阅读模式

1. 功能背景与应用场景

基于原贴(https://club.fnnas.com/forum.php?mod=viewthread&tid=45172)的基础上,完善了编辑器交互逻辑和智能关机脚本,核心能力:

  • 智能关机逻辑:仅在网络空闲 + GPU空闲 双重条件满足时触发关机

  • 我个人的应用场景

    1. 主飞牛每晚自动备份数据到备份机(飞牛系统)
    2. 备份完成后备份机自动关机,配合涂鸦智能开关 + 备份机BIOS来电自启功能
    3. 实现效果:备份机定时开机、备份完成后关机并切断 电源,且可通过涂鸦APP远程控制开机

2. 核心实现原理

  • 任务拆分:每个执行脚本(如关机脚本)独立编写为单独的bash脚本(关机脚本包含在压缩包内)

  • 任务编排:通过任务编辑器设置各任务的执行时间,生成 cron.json配置文件

  • 生效方式:修改 cron.json后,在飞牛系统执行以下命令应用新的任务列表:

    bash cron_manager.sh
    

3. 配置方式

关机脚本的参数无需修改脚本本身,直接编辑 shutdown.config配置文件即可完成自定义。


总结

  1. 核心功能:备份机仅在网络、GPU均空闲时智能关机,适配飞牛备份场景;
  2. 关键操作:修改 cron.json后需执行 bash cron_manager.sh使任务生效;
  3. 配置入口:关机脚本参数统一在 shutdown.config中修改,无需改动脚本源码。
  4. **详细说明:**编辑器有详细的使用说明可自行参考。

upload 附件:利用cron实现智能定时关机.zip←下载压缩包在这里

PixPin_2025-12-25_11-44-46.png

PixPin_2025-12-25_11-58-59.png

收藏
送赞 1
分享

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

2

主题

58

回帖

0

牛值

初出茅庐

2025-12-25 16:00:07 显示全部楼层

good idea, 我之前也写过一个类似的关机脚本 但我有个需求就是有数据传输(内网or外网 飞牛的传输行为)【非下载】的时候, 就停止关机 直到 20分钟左右没有数据传输 我那个需求不会写逻辑,找不到飞牛处理传输行为(到底是通过硬盘读写呢 还是网络判断..) 没有头绪

4

主题

43

回帖

0

牛值

初出茅庐

2025-12-25 16:45:55 显示全部楼层

我是编程文盲,看到了楼主的创意,很合我意。感谢楼主,收藏了。victory handshake

3

主题

12

回帖

0

牛值

江湖小虾

2025-12-28 03:00:56 显示全部楼层

我建议飞牛系统增加个自动休眠模式最好了

7

主题

25

回帖

0

牛值

江湖小虾

2026-1-1 01:01:22 显示全部楼层

怎么安装? 元旦快乐

核心文件说明 任务编辑器.html:本页面,用于配置任务并生成 cron.json。 cron.json:任务配置文件,包含所有任务的名称、脚本路径、时间计划与状态。 cron_manager.sh:管理脚本,负责将 cron.json中的任务安装到  详情 回复
2026-1-1 07:01

7

主题

13

回帖

0

牛值

江湖小虾

2026-1-1 07:01:40 楼主 显示全部楼层
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=225796&ptid=48610][color=#999999]William.Liew 发表于 2026-1-1 01:01[/color][/url][/size] 怎么安装? 元旦快乐[/quote]

核心文件说明

  • 任务编辑器.html:本页面,用于配置任务并生成 cron.json
  • cron.json:任务配置文件,包含所有任务的名称、脚本路径、时间计划与状态。
  • cron_manager.sh:管理脚本,负责将 cron.json中的任务安装到系统Crontab中。
  • bash/推荐存放您的任务脚本(如执行关机脚本 shutdown.sh )的目录。

🚀 完整使用流程

  1. 编写脚本:将您的任务(如关机、备份)写成bash脚本(本项目已经编写),上传到服务器的某个目录(如自建的docker文件夹 /vol1/1000/docker/cron/bash)。
  2. 配置任务:在电脑上打开 任务编辑器.html,在页面"脚本路径前缀"填写执行脚本目录,在表格中新增任务,使用每行的Cron表达式生成器设置时间。
  3. 生成配置:JSON内容会自动实时生成,点击 下载 cron.json 或者 复制 JSON,用修改后的json替换服务器上的配置文件 cron.json。
  4. 部署任务:通过SSH连接服务器,提权到root账户 sudo -i,切换到 cron_manager.sh 所在目录,执行 bash cron_manager.sh
  5. 编辑任务:如需停止任务,在此页面将状态改为"停用",修改后替换服务器上的 cron.json,再次执行管理脚本 bash cron_manager.sh即可。

0

主题

3

回帖

0

牛值

江湖小虾

2026-2-3 21:51:05 显示全部楼层

飞牛加个定时关机就这么难吗?

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则