Run Daily Production Jobs at 1:00 PM | CronBase
0 13 * * * Every day in the afternoon at one o'clock.
The `0 13 * * *` cron expression schedules a task to run daily at exactly 1:00 PM (13:00) according to the system's local timezone configuration. This afternoon cadence is ideal for mid-day reporting, synchronization tasks, secondary backups, or sending daily transactional digests to users.
- Minute
- 0
- Hour
- 13
- Day of Month
- *
- Month
- *
- Day of Week
- *
Next 5 Runs
- in 16h 21m
- in 1d 16h
- in 2d 16h
- in 3d 16h
- in 4d 16h
* Tools
Code & Implementations
#!/usr/bin/env bash\n# Production-ready crontab deployment script for 1:00 PM daily job\nset -euo pipefail\n\n# Define the job to execute daily at 1:00 PM\nCRON_ENTRY="0 13 * * * /usr/local/bin/daily-sync.sh >> /var/log/daily-sync.log 2>&1"\n\n# Install cron job safely without destroying existing crontab entries\n(crontab -l 2>/dev/null | grep -Fv "/usr/local/bin/daily-sync.sh"; echo "$CRON_ENTRY") | crontab -\necho "Successfully scheduled daily sync job at 1:00 PM" › Setup notes
Save this script as deploy-cron.sh, make it executable using chmod +x, and run it on your Linux target server to register the cron schedule safely.
const cron = require('node-cron');\nconst logger = require('./logger'); // Production logger\n\n// Schedule task to run daily at 1:00 PM (13:00)\nconst task = cron.schedule('0 13 * * *', async () => {\n logger.info('Starting daily mid-day synchronization task...');\n try {\n await performDailySync();\n logger.info('Daily synchronization task completed successfully.');\n } catch (error) {\n logger.error('Failed to execute daily synchronization:', error);\n }\n}, {\n scheduled: true,\n timezone: "UTC" // Explicitly pin to UTC to avoid daylight saving time shifts\n});\n\nasync function performDailySync() {\n // Place production database sync or API polling logic here\n} › Setup notes
Install the node-cron package via npm install node-cron. Import this schedule block into your main application entry point to daemonize the daily routine.
from apscheduler.schedulers.blocking import BlockingScheduler\nimport logging\n\nlogging.basicConfig(level=logging.INFO)\nlogger = logging.getLogger('daily_cron')\n\ndef execute_daily_job():\n logger.info("Starting daily maintenance job scheduled for 1:00 PM...")\n try:\n # Production logic goes here\n pass\n except Exception as e:\n logger.error(f"Error during daily job execution: {str(e)}")\n\nif __name__ == '__main__':\n scheduler = BlockingScheduler(timezone="UTC")\n # Run daily at 13:00 (1:00 PM)\n scheduler.add_job(execute_daily_job, 'cron', hour=13, minute=0)\n logger.info("Scheduler started. Job configured for daily execution at 13:00 UTC.")\n try:\n scheduler.start()\n except (KeyboardInterrupt, SystemExit):\n pass › Setup notes
Install apscheduler via pip install apscheduler. Run this script inside a persistent background process or Docker container.
package main\n\nimport (\n\t"log"\n\t"time"\n\t"github.com/robfig/cron/v3"\n)\n\nfunc main() {\n\t// Use UTC to ensure predictable daily execution intervals\n\tloc, err := time.LoadLocation("UTC")\n\tif err != nil {\n\t\tlog.Fatalf("Failed to load timezone: %v", err)\n\t}\n\n\tc := cron.New(cron.WithLocation(loc))\n\t\n\t// Standard cron: 0 13 * * * (minute, hour, day, month, week)\n\t_, err = c.AddFunc("0 13 * * *", func() {\n\t\tlog.Println("Daily 1:00 PM job execution triggered successfully.")\n\t\tif err := runDailyTask(); err != nil {\n\t\t\tlog.Printf("Error executing daily task: %v", err)\n\t\t}\n\t})\n\tif err != nil {\n\t\tlog.Fatalf("Error scheduling cron job: %v", err)\n\t}\n\n\tlog.Println("Cron scheduler initialized for daily 13:00 UTC job...")\n\tc.Start()\n\tselect {} // Keep application running\n}\n\nfunc runDailyTask() error {\n\t// Production business logic goes here\n\treturn nil\n} › Setup notes
Import github.com/robfig/cron/v3 in your Go module, run go mod tidy, and run the main entry point to initiate the persistent cron scheduler.
package com.example.cron;\n\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.springframework.scheduling.annotation.Scheduled;\nimport org.springframework.stereotype.Component;\n\n@Component\npublic class DailyTaskScheduler {\n\n private static final Logger logger = LoggerFactory.getLogger(DailyTaskScheduler.class);\n\n // Runs daily at 1:00 PM (13:00) in the specified timezone\n @Scheduled(cron = "0 0 13 * * *", zone = "UTC")\n public void runDailyMaintenance() {\n logger.info("Initiating daily scheduled maintenance task at 13:00 UTC...");\n try {\n processDailyData();\n logger.info("Daily maintenance completed successfully.");\n } catch (Exception e) {\n logger.error("Critical error during daily maintenance execution: ", e);\n }\n }\n\n private void processDailyData() {\n // Implement production business logic\n }\n} › Setup notes
Ensure @EnableScheduling is declared on your Spring Boot application's main configuration class for Spring to recognize and invoke this daily task.
apiVersion: batch/v1\nkind: CronJob\nmetadata:\n name: daily-sync-job\n namespace: production\nspec:\n schedule: "0 13 * * *"\n concurrencyPolicy: Forbid\n successfulJobsHistoryLimit: 3\n failedJobsHistoryLimit: 5\n jobTemplate:\n spec:\n template:\n spec:\n containers:\n - name: sync-worker\n image: registry.example.com/production/sync-worker:v1.2.0\n resources:\n limits:\n cpu: "1"\n memory: 1Gi\n requests:\n cpu: "500m"\n memory: 512Mi\n restartPolicy: OnFailure › Setup notes
Apply this configuration using kubectl apply -f daily-cronjob.yaml. This will spin up an isolated pod every day at 1:00 PM to execute the job safely.
Last verified:
Keep this cron job monitored 24/7
UptimeRobot alerts you the moment a scheduled job stops responding. Free plan monitors up to 50 endpoints — no credit card required.
Platform Equivalents
AWS EventBridge
Standard cron expressions often need conversion for AWS EventBridge schedules.
cron(0 13 * * ? *) Systemd Timer
OnCalendar*-*-* 13:00:00
[Unit]
Description=Timer for cron expression: 0 13 * * *
[Timer]
OnCalendar=*-*-* 13:00:00
Persistent=true
[Install]
WantedBy=timers.target
Last verified:
Frequently Asked Questions
What happens to the 1:00 PM run during daylight saving time changes?
If your system timezone is set to a local zone that observes DST, the job will execute at 1:00 PM local time, which means the absolute interval between runs will be 23 or 25 hours on transition days. To avoid this, configure your server and cron daemon to use UTC.
How can I prevent this mid-day job from impacting database performance?
To minimize production impact at 1:00 PM, direct all heavy read operations to a read-only database replica. You should also implement strict query limits, batch processing, and low-priority CPU scheduling (like nice/ionice in Linux) on the worker node.
Can I restrict this daily 1:00 PM schedule to run only on weekdays?
Yes, you can modify the day-of-week field (the fifth field) to restrict execution. Changing the expression to '0 13 * * 1-5' will execute the task at 1:00 PM Monday through Friday, skipping Saturday and Sunday entirely.
How should I handle overlapping executions if a job runs longer than 24 hours?
Implement a locking mechanism, such as flock in Bash, a Redis-based distributed lock, or set concurrencyPolicy: Forbid in Kubernetes. This ensures that if the previous day's 1:00 PM job is still running, the new instance will be skipped or queued.
What is the best way to monitor if this daily job failed to run?
Use a dead man's switch monitoring service (like Healthchecks.io or Opsgenie) that expects a ping every 24 hours at approximately 1:05 PM. If the ping is missed, it alerts your on-call team, ensuring you catch silent cron daemon failures.
* Explore
Related expressions you might need
Last verified: