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エントリを作成します:

  1. 最初のエントリは毎分の先頭(:00)にスクリプトを実行
  2. 2番目のエントリは30秒待ってからスクリプトを実行(:30)

制限事項

  • プロセスオーバーヘッド: 各cron呼び出しが新しいシェルプロセスを生成
  • 重複保護なし: スクリプトが30秒以上かかると実行が重複
  • スケーリング: 10秒や15秒間隔にはより多くのエントリが必要

より良い代替手段

本番環境でのサブ分スケジューリングには以下を検討してください:

  • OnUnitActiveSec=30ssystemdタイマー
  • スリープ間隔付きのループベースデーモン
  • イベント駆動処理のメッセージキュー

ユースケース

サブ分スケジューリングはニアリアルタイムデータ処理、厳格なSLA要件のヘルスチェックエンドポイント、株価ティッカー更新、チャットボットポーリング、迅速なフィードバックループが必要な開発/テストシナリオで必要になることがあります。

試してみる — Crontab Cheat Sheet

フルツールを開く