Skip to content

06 — 计划任务 ​

采集时间:2026-11-08 04:00 CST


1. cron ​

root crontab ​

空 —— 没有任何自定义 cron 任务。

bash
crontab -l        # no crontab for root

/etc/cron.d ​

文件大小日期作用
tenodx-monitor-host—2026-11-08监控推送(每 5 分钟:磁盘 / ss-local / privoxy → Uptime Kuma)
tenodx-postgres-backup—2026-11-08PostgreSQL 每日逻辑备份(03:30,保留 7 天)
tenodx-stack-backup—2026-11-08栈配置+kuma.db+NapCat 配置备份(03:35,保留 7 天)
.placeholder102 B2022-03-23占位文件
e2scrub_all201 B2022-01-09ext4 在线一致性检查
sysstat396 B2021-02-03系统性能数据采集(sar)

监控推送任务(2026-11-08 新增) ​

文件: /etc/cron.d/tenodx-monitor-host
内容: */5 * * * * root /opt/stacks/uptime-kuma/host-checks.sh >> /var/log/tenodx-monitor-host.log 2>&1
脚本: /opt/stacks/uptime-kuma/host-checks.sh

为什么需要它:Uptime Kuma 跑在容器里,而 ss-local(1080) 和 privoxy(8118) 只绑 127.0.0.1,任何容器都连不到。宿主 cron 是唯一能看到它们的视角, 所以这三项(磁盘 / SOCKS5 / privoxy)改用 push 类型,由本脚本主动推心跳。

新增"只绑 loopback 的宿主服务"时:在 host-checks.sh 里加一个检查 + 在 monitors.json 里加一条 push 类型,然后跑 sync.sh。

栈备份任务(2026-11-08 新增) ​

文件: /etc/cron.d/tenodx-stack-backup
内容: 35 3 * * * root /opt/stacks/backup-stacks.sh >> /var/log/tenodx-stack-backup.log 2>&1
输出: /var/backups/stacks/stacks-<时间戳>.tar.gz(保留 7 天)

备份内容(约 36 KB):

  • /opt/stacks/* —— 所有 compose.yaml、.env、脚本、monitors.json
  • Uptime Kuma kuma.db(用 sqlite .backup 保证一致性)
  • NapCat config/(napcat.json、webui.json、onebot11.json)

大数据卷(postgres 数据、QQ 登录态)不在其中 —— PostgreSQL 由 pg_dump 单独备份。

PostgreSQL 备份任务(2026-11-08 新增) ​

文件: /etc/cron.d/tenodx-postgres-backup
内容: 30 3 * * * root /opt/stacks/postgres/backup.sh >> /var/log/tenodx-pg-backup.log 2>&1
脚本: /opt/stacks/postgres/backup.sh
输出: /var/backups/postgres/tenodx-<时间戳>.sql.gz
保留: 7 天(`find -mtime +7 -delete` 自动轮转)

备份脚本要点:

  • 用 pg_dump --no-owner --no-privileges | gzip(逻辑备份,不要直接拷贝运行中的数据目录)
  • 备份后做 gzip -t 完整性校验 + 非空检查,失败则删掉坏文件并返回非零
  • 文件权限 600,目录 700

恢复方式:

bash
gunzip -c /var/backups/postgres/tenodx-YYYYMMDD-HHMMSS.sql.gz \
  | docker exec -i tenodx-postgres psql -U tenodx -d tenodx

✅ 恢复演练已通过(2026-11-08 04:32):1000 行数据备份 → 删表 → 恢复到临时库 → 行数完全一致。 说明备份链路真实可用,不是"能打包但恢复不了"。

⚠️ 备份目前只在本地 /var/backups/postgres,未异地化。 生产环境建议加阿里云 OSS 同步(需 AccessKey),或另配快照策略。

用户 crontab ​

/var/spool/cron/crontabs/ 为空。

/etc/cron. ​

使用系统默认内容,无自定义脚本。


2. systemd timers(15 个) ​

Timer下次触发上次触发关联服务
fwupd-refresh.timer04:0503:48固件元数据刷新
apt-daily-upgrade.timer06:3321h 前自动安装安全更新
update-notifier-download.timer10:1617h 前检查更新
systemd-tmpfiles-clean.timer10:2617h 前清理临时文件
apt-daily.timer14:439h 前更新包索引
motd-news.timer22:0336min 前MOTD 新闻拉取
dpkg-db-backup.timer11-09 00:004h 前备份 dpkg 数据库
logrotate.timer11-09 00:004h 前日志轮转
fstrim.timer11-09 01:216 天前SSD/云盘 TRIM
man-db.timer11-09 08:533h 前man 手册索引重建
update-notifier-motd.timer11-11 16:306 天前MOTD 更新检查
e2scrub_all.timer11-15 03:1049min 前ext4 全盘检查
apport-autoreport.timer——崩溃报告(未激活)
snapd.snap-repair.timer——Snap 修复(未激活)
ua-timer.timer——Ubuntu Advantage(未激活)

3. 关键结论 ​

项判断
是否有自定义定时任务✅ 有 3 个:监控推送 / PG 备份 / 栈配置备份(均 2026-11-08 新增)
是否有备份任务✅ 有(数据库 + 容器配置;仍缺 /etc 与整机快照)
是否有监控✅ 有:Uptime Kuma 9 项监控,宿主 cron 推送 3 项
自动安全更新✅ 已开启(apt-daily-upgrade.timer)
日志轮转✅ logrotate 正常运行
时间同步✅ chrony(systemd service,非 timer)

仍然缺少的备份 ​

内容建议
/etc 配置快照每周打包 + 保留 4 份
系统整机阿里云快照策略(控制台配置,最可靠)
备份异地化上传 OSS,避免实例损坏时备份一起丢

⚠️ 注意:没有任何备份任务 ​

这台机器上目前没有业务数据,所以暂无备份需求。但一旦部署业务,必须补上:

需要备份的内容建议方式
应用代码 / 配置Git 仓库 + 异地推送
数据库每日 mysqldump / pg_dump + 上传 OSS
/etc 配置快照每周打包 + 保留 4 份
系统整机阿里云快照策略(控制台配置,建议每周一次)

建议补充的 cron 示例 ​

bash
# /etc/cron.daily/etc-backup —— 每日备份 /etc
#!/bin/bash
tar czf /var/backups/etc-$(date +%F).tar.gz /etc --exclude=/etc/mtab
find /var/backups -name 'etc-*.tar.gz' -mtime +14 -delete

阿里云快照策略比脚本备份更可靠,建议优先在控制台配置自动快照。

TenoDX · 内部文档