
表弟上礼拜想给他的群晖配个定时备份,在套件中心翻了快二十分钟,发我截图问:定时任务要装哪个套件?我说你翻错地方了,这东西不在套件中心装,它就躺在控制面板最底下那一排,叫「任务计划」,系统自带,一行都不用装。
后来我琢磨他不是个例。我家那台NAS半夜三四点硬盘灯自己闪,好几个人问过我是不是中招了——拆开看全是任务计划里那几条活儿在按点上班。这一篇就把这一页翻明白:任务在哪建、我家在跑哪几条、邮件通知那个勾怎么选,还有飞牛那台没有这页怎么办。
先说清楚:任务计划就是NAS的闹钟页
控制面板拉到最底下,「任务计划」跟「硬件和电源」「通知设置」排在一块儿。点进去左上角「创建」,会分成两大类,先把这两类分清,后面少走弯路。
第一类叫计划的任务,按时间表跑。往下再分四种:用户定义的脚本(万能位,你贴什么命令它跑什么)、回收站(定时清空各共享文件夹的删除文件)、哔声控制(就是机身那个蜂鸣器,报警响个不停的时候可以在这里治)、服务(定点重启某个系统服务)。第二类叫触发的任务,不按点跑,按事件跑,比如开机那一刻执行一嘴。
这里有个新手最容易搞混的点:触发的任务里没有「计划」这个选项卡,开机就跑,想让它每天凌晨三点四十一准点干活,得建计划的任务,不是开机触发。群晖官方文档写得很明白,开机触发的那个没有计划设置。
我家两台NAS在跑的五条任务
把我家在跑的定时活儿抄出来给你参考,都是这两三年一条一条加上去的:
| 任务 | 频次 | 干什么 |
| 异地备份 | 每天 03:40 | 照片库增量推到我妈家那台,走rsync |
| 水位加SMART巡检 | 每天 | 存储池超85%或SMART异常就往手机推一条 |
| SMART短测 | 每月一次 | 两三分钟扫一遍盘面,比等到盘响了再看强 |
| 回收站清理 | 每天 | 删满30天的文件真删,回收站不无限膨胀 |
| 失败告警 | 跟着任务走 | 哪条任务跑挂了报哪条,Bark推手机 |
异地备份那条之前写过全流程,--delete误删的坑也在那篇里。水位巡检脚本是照告警那篇抄的,一个查水位一个查SMART健康状态,两三行的事。回收站那条提醒一句,群晖这个任务类型清的就是你删除文件先进去的那个目录,跟快照是两码事,误删救援走快照,日常瘦身走它。
还有一条不在任务计划里的,单独拎出来说:03:20开机、04:30关机那条,是「硬件和电源」里的电源计划,不在任务计划这一页。俩长得像亲兄弟,实际一个管干活一个管上下班。我妈家那台备份机就靠这个组合,一天上班七十分钟,一年少通电八千多小时。
手把手建第一条:五步,外加邮件通知那个勾
拿水位巡检这条当例子,照着点就行:
第一步,控制面板→任务计划→创建→计划的任务→用户定义的脚本。第二步,「常规」页给任务起个名,用户那栏选root。别嫌用root糙,选了权限不够的普通账号,脚本跑到一半摸不着文件夹,任务显示成功实际啥也没干,这种半路死最难查——群晖自家的脚本教程都专门提醒过权限这坑。第三步,「计划」页选每天,时间填04:10,错开备份那趟。第四步,「任务设置」页把脚本贴进用户定义的脚本那个框。第五步,确定保存。
保存完先别关页面,右键那条任务点「运行」,手动跑一遍。看它当场吐结果,比等到半夜四点发现写错一个变量强十倍。
然后是邮件通知那个勾,我在这上头吃过亏。「任务设置」页有两个选项:一个叫通过电子邮件发送运行详情,每次跑完都发;一个叫仅在脚本异常终止时发送运行详情,挂了才发。图省事勾了第一个,头三天还挺有安全感,一礼拜后每天一封成功邮件,看都不看直接划掉,真失败那天的那封混在里头根本没瞅见。所以现在我的规矩是:天天跑的活儿勾第二个,失败才吱声,再配一条Bark推手机做双保险,就是告警那篇的通道。前提是控制面板→通知设置里先把电子邮件配好,SMTP那套,QQ邮箱用授权码不是登录密码。
cron表达式:群晖基本用不上,飞牛绕不开
群晖的图形界面点选日期时间就行,不用手写表达式。但有个边界要知道:计划页的「每小时」只有1小时、2小时、3小时、4小时这几个预设档,想要「每37分钟跑一回」这种,图形界面给不了,得SSH进去改crontab,属于进阶操作,新手别碰。
表达式本身不难,五段式:分钟、小时、日、月、星期。每天凌晨3点40写成 40 3 * * *,星号代表「随便」。你在Linux教程里见到的定时任务全是这套语法,看懂这五个格子,大半的cron文章就不用再查了。
顺带一句,任务全错位的头号嫌疑人是对时。路由器和NAS断电后时间归零,凌晨的任务跑到中午十二点才触发,查了半天脚本没毛病,是钟错了。NTP对时那篇写过原理,NAS后台确认一下时间服务器填的是国内源就行。
飞牛那台怎么办:没有这一页
我家主力是飞牛,同样的活儿在它身上跑,就得换路子了。我把系统设置翻了个底朝天,没有群晖这种任务计划页——不是藏得深,是真没有,官方论坛一水儿的帖子在催这个功能。
社区常见两条路。一是Docker里装个计划任务容器,把脚本挂进去跑,容器化了重启也不丢,代价是多学一层Docker。二是SSH进去直接编辑crontab,轻是轻,但论坛有人反馈系统重启后条目被重置过,我自己那台倒是一直没丢。稳妥起见,crontab里的条目我都单独存了一份文本在共享文件夹里,真丢了照着粘回来,两分钟的事。
所以我家现在的分工是:要紧的、挂了必须知道的活儿,尽量往群晖那侧放,吃它图形界面加邮件告警的现成福利;飞牛上跑的巡检脚本,配了Bark做告警兜底,谁那头出事都能摸到信儿。
排班三规矩,再给个对号表
任务建多了会自己打架,三条规矩记一下。一,错峰:全量备份别跟SMART长测排在同一个钟头,俩都是狂读盘的活儿,撞一起互相拖,重启和备份的窗口同理,都要错开。二,别跟硬盘休眠打架:任务半夜每半小时醒一回,盘就别想睡了,硬盘睡不着的排查里那一堆嫌疑,定时任务就是常客。三,电源计划和任务计划分开放脑子里的两个格子:先定几点开机几点关机,再往这个窗口里塞活儿,留足冷机就绪的缓冲,我妈家那台开机比备份早二十分钟就是这道理。
| 你想让它 | 去哪建 |
| 每天定点跑个脚本 | 计划的任务→用户定义的脚本 |
| 开机自动执行一嘴 | 触发的任务 |
| 定时清空回收站 | 计划的任务→回收站 |
| 半夜定时开关机 | 硬件和电源→电源计划(不在任务计划) |
| 蜂鸣器闭嘴 | 计划的任务→哔声控制 |
建完第一条任务,回头把「仅在异常终止时发送」那个勾检查一遍,这一勾比脚本本身还金贵——任务跑没跑没人盯着,挂了能吱声的那条,才是真在替你值夜班的。

发表评论