crontabってどう書くの?
「分 時 日 月 曜日 コマンド」の形式。0 3 * * * /usr/local/bin/backup.shは「毎日3時0分にバックアップ実行」。*/5 * * * *は「5分ごと」。0 9 * * 1は「毎週月曜9時」。*は「全て」、*/nは「n間隔」。crontab -eで編集、crontab -lで確認するよ
よくあるトラブルは?
①環境変数が通らない(cronはログインシェルと環境が違う。PATHをcrontab内で明示的に設定するか、コマンドを絶対パスで書く)、②出力先が不明(MAILTO=やリダイレクトでログを残す)、③タイムゾーンの罠(UTCで動いている場合がある)、④権限不足。cronのログは/var/log/syslogで確認できるよ
クラウドではどうする?
サーバーレスでcronジョブを実行する方法がいくつかある。AWSならEventBridge+Lambda、GCPならCloud Scheduler+Cloud Functions、AzureならTimer Trigger+Azure Functions。サーバーが不要で、実行時間分だけの課金。Vercelのcron機能やGitHub Actionsのscheduleトリガーも手軽だよ
cronの代替ツールは?
systemdのtimerユニットはcronの後継として使えて、ログ管理や依存関係が優れている。複雑なワークフローならApache Airflow、Prefect、Dagster。KubernetesならCronJobリソース。単純な定期実行ならcronで十分だけど、依存関係やリトライが必要なジョブにはワークフローエンジンの方が適しているよ