← back to Watches
scripts/setup-cron-jobs.sh
88 lines
#!/bin/bash
###############################################################################
# Setup Automated Cron Jobs for Omega Watch Price History
###############################################################################
set -euo pipefail
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
log() {
echo -e "${GREEN}[$(date +'%H:%M:%S')]${NC} $1"
}
PROJECT_DIR="/root/Projects/watches"
log "Setting up cron jobs..."
# Create cron job entries
CRON_ENTRIES="
# Omega Watch Price History - Automated Tasks
# Daily backup at 2:00 AM
0 2 * * * ${PROJECT_DIR}/scripts/backup-system.sh backup >> ${PROJECT_DIR}/logs/backup-cron.log 2>&1
# Weekly backup every Sunday at 3:00 AM
0 3 * * 0 ${PROJECT_DIR}/scripts/backup-system.sh weekly >> ${PROJECT_DIR}/logs/backup-cron.log 2>&1
# Monthly backup on the 1st at 4:00 AM
0 4 1 * * ${PROJECT_DIR}/scripts/backup-system.sh monthly >> ${PROJECT_DIR}/logs/backup-cron.log 2>&1
# Rotate old backups daily at 5:00 AM
0 5 * * * ${PROJECT_DIR}/scripts/backup-system.sh rotate >> ${PROJECT_DIR}/logs/backup-cron.log 2>&1
# Clean old logs every week (keep last 30 days)
0 6 * * 0 find ${PROJECT_DIR}/logs -name '*.log' -mtime +30 -delete
# Health check every hour (optional - health monitor runs continuously)
# 0 * * * * curl -s http://localhost:7600/api/health > /dev/null || echo \"\$(date): Health check failed\" >> ${PROJECT_DIR}/logs/health-alerts.log
# PM2 save every 6 hours (backup process list)
0 */6 * * * pm2 save >> ${PROJECT_DIR}/logs/pm2-save.log 2>&1
# Analytics report generation (if you add this feature)
# 0 1 * * * node ${PROJECT_DIR}/analytics/generate-daily-report.js >> ${PROJECT_DIR}/logs/analytics-cron.log 2>&1
"
# Backup existing crontab
log "Backing up existing crontab..."
crontab -l > "${PROJECT_DIR}/logs/crontab-backup-$(date +%Y%m%d_%H%M%S).txt" 2>/dev/null || true
# Check if entries already exist
if crontab -l 2>/dev/null | grep -q "Omega Watch Price History"; then
log "⚠️ Cron jobs already configured"
echo ""
echo "Current cron jobs:"
crontab -l | grep -A 20 "Omega Watch Price History" || true
echo ""
read -p "Do you want to replace them? (y/n) " -n 1 -r
echo ""
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
log "Keeping existing cron jobs"
exit 0
fi
# Remove old entries
log "Removing old cron jobs..."
crontab -l | grep -v "Omega Watch Price History" | grep -v "${PROJECT_DIR}" | crontab -
fi
# Add new entries
log "Adding new cron jobs..."
(crontab -l 2>/dev/null || true; echo "${CRON_ENTRIES}") | crontab -
log "✓ Cron jobs configured successfully"
echo ""
echo "=========================================="
echo "Scheduled Tasks:"
echo "=========================================="
crontab -l | grep -A 20 "Omega Watch Price History" || true
echo "=========================================="
echo ""
log "Cron logs will be saved to: ${PROJECT_DIR}/logs/"
log "To view cron jobs: crontab -l"
log "To edit cron jobs: crontab -e"