diff --git a/modules/website/wordpress/wordpress-cron-manager.sh b/modules/website/wordpress/wordpress-cron-manager.sh index d862bd2..d48d8fc 100755 --- a/modules/website/wordpress/wordpress-cron-manager.sh +++ b/modules/website/wordpress/wordpress-cron-manager.sh @@ -413,7 +413,11 @@ safe_add_cron_job() { fi # Add the job to crontab - (crontab -u "$user" -l 2>/dev/null; echo "$cron_time $cron_cmd") | crontab -u "$user" - 2>/dev/null + # CRITICAL: Must verify crontab -l succeeded before piping back + # If crontab -l fails, we would pipe only the new job, losing existing jobs! + local current_crontab + current_crontab=$(crontab -u "$user" -l 2>/dev/null) || return 1 + (echo "$current_crontab"; echo "$cron_time $cron_cmd") | crontab -u "$user" - 2>/dev/null return $? } @@ -430,7 +434,10 @@ safe_remove_cron_jobs() { fi # Remove jobs matching pattern - crontab -u "$user" -l 2>/dev/null | grep -v "$pattern" | crontab -u "$user" - 2>/dev/null + # CRITICAL: Must verify crontab -l succeeded before piping back + local current_crontab + current_crontab=$(crontab -u "$user" -l 2>/dev/null) || return 1 + echo "$current_crontab" | grep -v "$pattern" | crontab -u "$user" - 2>/dev/null return $? }