| 用途 | 统一任务脚本的可靠性与可观测性 |
|---|---|
| 要素 | set -euo pipefail / flock / 日志 / timeout |
模板
模板
#!/usr/bin/env bash
set -euo pipefail
NAME=app-backup
LOG=/var/log/app/${NAME}.log
LOCK=/var/lock/${NAME}.lock
log() { echo "$(date -Is) [$$] $*" >> "$LOG"; }
# 单实例
if ! flock -n 9; then log "skip: already running"; exit 0; fi
log "start"
if timeout 3600 /opt/app/backup.sh >> "$LOG" 2>&1; then
log "done rc=0"
else
rc=$?
log "fail rc=$rc"
exit $rc
ficrontab 引用
crontab 引用
30 2 * * * /opt/scripts/app-backup.sh搭配日志轮转(logrotate)与失败告警(监控扫 rc≠0),任务才真正可运营。