主题
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-08 | PostgreSQL 每日逻辑备份(03:30,保留 7 天) |
tenodx-stack-backup | — | 2026-11-08 | 栈配置+kuma.db+NapCat 配置备份(03:35,保留 7 天) |
.placeholder | 102 B | 2022-03-23 | 占位文件 |
e2scrub_all | 201 B | 2022-01-09 | ext4 在线一致性检查 |
sysstat | 396 B | 2021-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.timer | 04:05 | 03:48 | 固件元数据刷新 |
apt-daily-upgrade.timer | 06:33 | 21h 前 | 自动安装安全更新 |
update-notifier-download.timer | 10:16 | 17h 前 | 检查更新 |
systemd-tmpfiles-clean.timer | 10:26 | 17h 前 | 清理临时文件 |
apt-daily.timer | 14:43 | 9h 前 | 更新包索引 |
motd-news.timer | 22:03 | 36min 前 | MOTD 新闻拉取 |
dpkg-db-backup.timer | 11-09 00:00 | 4h 前 | 备份 dpkg 数据库 |
logrotate.timer | 11-09 00:00 | 4h 前 | 日志轮转 |
fstrim.timer | 11-09 01:21 | 6 天前 | SSD/云盘 TRIM |
man-db.timer | 11-09 08:53 | 3h 前 | man 手册索引重建 |
update-notifier-motd.timer | 11-11 16:30 | 6 天前 | MOTD 更新检查 |
e2scrub_all.timer | 11-15 03:10 | 49min 前 | 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阿里云快照策略比脚本备份更可靠,建议优先在控制台配置自动快照。