为什么要在 NAS 上跑

家里那台小主机装了 fnOS 之后,最爽的不是存电影,而是它可以 7×24 小时替我干活。

以前每天醒来第一件事是挨个 App 点签到,现在全部交给定时任务。

一个最小的定时任务

用 Docker 起一个 Python 容器,把脚本挂进去:

docker run -d --name jobs \
  -v /opt/jobs:/app \
  -e TZ=Asia/Shanghai \
  --restart always \
  python:3.11-slim \
  python /app/run.py

脚本里用 schedule 库排期,比 crontab 好调试:

import schedule, time

def task():
    print("do something")

schedule.every().day.at("08:00").do(task)

while True:
    schedule.run_pending()
    time.sleep(30)

踩过的坑

  • 时区:容器默认 UTC,-e TZ=Asia/Shanghai 别忘了
  • 重启策略:一定要 --restart always,断电后自动拉起
  • 日志:挂载出来,不然容器一删日志全没
  • 失败告警:脚本出错要主动推送,否则你永远不知道它挂了

小结

定时任务的价值在于把你从重复劳动里解放出来,但前提是它得稳定。先跑通,再加告警,最后才谈优化。