Crontab 30秒ごと(回避策)
cronの最小解像度は1分ですが、sleepの回避策を使用してサブ分スケジューリングを実現できます。30秒ごとにジョブを実行する方法。
Special Strings* * * * * /cmd; sleep 30 && /cmd
詳細な説明
cronで30秒ごとにジョブを実行する
標準cronの最小解像度は1分です — * * * * *(毎分)よりも頻繁にジョブをスケジュールすることはできません。しかし、sleep コマンドを使用した一般的な回避策でサブ分間隔を実現できます。
回避策
* * * * * /path/to/script.sh
* * * * * sleep 30 && /path/to/script.sh
これは2つのcrontabエントリを作成します:
- 最初のエントリは毎分の先頭(:00)にスクリプトを実行
- 2番目のエントリは30秒待ってからスクリプトを実行(:30)
制限事項
- プロセスオーバーヘッド: 各cron呼び出しが新しいシェルプロセスを生成
- 重複保護なし: スクリプトが30秒以上かかると実行が重複
- スケーリング: 10秒や15秒間隔にはより多くのエントリが必要
より良い代替手段
本番環境でのサブ分スケジューリングには以下を検討してください:
OnUnitActiveSec=30sのsystemdタイマー- スリープ間隔付きのループベースデーモン
- イベント駆動処理のメッセージキュー
ユースケース
サブ分スケジューリングはニアリアルタイムデータ処理、厳格なSLA要件のヘルスチェックエンドポイント、株価ティッカー更新、チャットボットポーリング、迅速なフィードバックループが必要な開発/テストシナリオで必要になることがあります。