Cron Expression 0 9 1 * *
Cron expression 0 9 1 * * means At 9:00 AM, on the 1st.
Cron expression 0 9 1 * * runs at 9:00 AM on the first day of every month. It is a common monthly trigger for billing, accounting close, and first-day reporting tasks.
Cron Expression
Common use cases
- Monthly invoice generation
- First-of-month usage and subscription resets
- Monthly finance exports for bookkeeping
- Recurring first-day audit or compliance checks
How to use this cron schedule
Cron expression 0 9 1 * * is the canonical first-day-of-month morning schedule. The first two fields select 9:00 AM, the third field `1` selects day-of-month one, and the remaining fields allow every month and every weekday. This gives you a stable monthly trigger that is easy to communicate to non-technical teammates: run once, at 9 AM, on the first day of each month. For many business workflows, that timing aligns with office hours and avoids midnight processing contention.
This pattern works well for billing jobs, monthly statement generation, quota resets, and analytics snapshots. Compared with running at midnight, 9:00 AM leaves room for upstream systems to complete overnight imports before your monthly pipeline starts. If your process depends on third-party APIs, build idempotency into your job logic so reruns are safe when providers fail temporarily. A first-of-month task is often high impact, so add alerting and dashboards that confirm success before finance or ops teams begin their day.
One caveat: this schedule is day-of-month driven, not weekday aware. If the first of the month lands on a weekend, the job still runs. If you need first business day behavior, keep this cron as a trigger and add a small weekday check in code, or move to a scheduler that supports richer calendar rules. For portable cron usage across Linux, GitHub Actions, and containerized workloads, `0 9 1 * *` remains one of the cleanest monthly expressions to maintain.
Want to customize this schedule?
Open it in the visual builder to tweak the expression interactively.
Open in BuilderNeed to monitor this cron job?
Cronhub tracks your scheduled jobs and alerts you if they fail or run late.
Platform usage examples
# Edit your crontab
crontab -e
# Add this line to run expression 0 9 1 * *
0 9 1 * * /usr/bin/php /var/www/html/script.php
# Or run a shell script
0 9 1 * * /home/user/scripts/job.sh >> /var/log/job.log 2>&1# .github/workflows/scheduled.yml
name: Scheduled Job
on:
schedule:
- cron: '0 9 1 * *'
jobs:
run:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run job
run: echo "Running expression 0 9 1 * *"apiVersion: batch/v1
kind: CronJob
metadata:
name: my-scheduled-job
spec:
schedule: "0 9 1 * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: job
image: my-image:latest
restartPolicy: OnFailureRelated developer tools
More free tools for engineering workflows that pair with scheduled jobs:
Frequently asked questions
What is the cron expression for expression 0 9 1 * *?
The cron expression is 0 9 1 * *. Cron expression 0 9 1 * * runs at 9:00 AM on the first day of every month. It is a common monthly trigger for billing, accounting close, and first-day reporting tasks.
How do I schedule a cron job to run expression 0 9 1 * * in Linux?
Open your crontab with "crontab -e" and add a new line: 0 9 1 * * /path/to/your/script.sh — this schedules your script to run expression 0 9 1 * *. Save and exit; the cron daemon picks up the change immediately.
What does the cron expression "0 9 1 * *" mean?
Cron expression 0 9 1 * * runs at 9:00 AM on the first day of every month. It is a common monthly trigger for billing, accounting close, and first-day reporting tasks.
Can I use "0 9 1 * *" in GitHub Actions?
Yes. In your workflow YAML, set the schedule trigger: on: schedule: - cron: '0 9 1 * *'. GitHub Actions uses standard 5-field Unix cron syntax, so this expression works as-is.