Skip to main content

cron-start

Start the cron job scheduler to run scheduled tasks.

npx balda cron-start
npx balda cron-start src/crons/**/*.ts

Arguments

  • pattern: Glob pattern for cron job files (default: src/crons/**/*.{ts,js})

Flags

  • -p, --patterns <patterns...>: Additional glob patterns for cron jobs

What it does

  1. Loads cron job files matching the provided patterns
  2. Registers all jobs decorated with the @cron decorator
  3. Starts the scheduler using node-cron
  4. Keeps the process alive to execute jobs at scheduled times

Cron Expression Format

Standard cron syntax (5 or 6 fields):

┌────────────── second (optional)
│ ┌──────────── minute (0-59)
│ │ ┌────────── hour (0-23)
│ │ │ ┌──────── day of month (1-31)
│ │ │ │ ┌────── month (1-12)
│ │ │ │ │ ┌──── day of week (0-7, 0|7 = Sunday)
│ │ │ │ │ │
* * * * * *

Examples

# Use default pattern (src/crons/**/*.{ts,js})
npx balda cron-start

# Custom pattern
npx balda cron-start app/tasks/**/*.ts

# Multiple patterns
npx balda cron-start src/crons/**/*.ts --patterns src/schedules/**/*.ts

Cron Job Example

import { BaseCron } from 'balda';
import { cron } from 'balda';

export default class DailyReportCron extends BaseCron {
@cron('0 0 * * *', { timezone: 'America/New_York' })
async handle() {
this.logger.info('Generating daily report...');
// Daily report generation logic
}
}

Common Cron Patterns

'*/5 * * * *'      // Every 5 minutes
'0 */2 * * *' // Every 2 hours
'0 0 * * *' // Daily at midnight
'0 0 * * 0' // Weekly on Sunday
'0 0 1 * *' // Monthly on the 1st
'0 9 * * 1-5' // Weekdays at 9 AM

Configuration Options

@cron('0 0 * * *', {
timezone: 'America/New_York', // Timezone for schedule
runOnInit: false, // Run immediately on start
})
tip

Run cron jobs in a separate process from your web servers. Use process managers like PM2 or systemd to keep the scheduler running.

info

Generate cron jobs with npx balda generate-cron for proper structure and type safety.