# instinct: 定期実行タスクのロックファイルを作成する前に既存のロックファイルが残っていないか確認する
定期実行タスクでロックファイルを作成する前に、既存のロックファイルが残存していないかを確認する必要がある。`.claude/scheduled_tasks.lock`などのロックファイルが前回の実行で正常に削除されなかった場合、次回実行時に衝突が発生し、タスクがスキップされたり、デッドロック状態に陥る可能性がある。対策として、ロックファイル作成前に存在チェックを行い、古いロックファイル(タイムアウト超過)は強制削除するロジックを実装する。workflow全般の定期タスク設計時に適用すること。
## ポイント
- ロックファイル作成前に `os.path.exists()` や `test -f` で既存ロックを確認する
- プロセスIDや作成タイムスタンプをロックファイルに記録し、タイムアウト超過の場合は強制削除する
- 異常終了(クラッシュ・強制停止)でロックファイルが残留するケースを想定した設計にする
- cronやPM2で定期実行される処理は特に注意が必要(手動実行より検知が遅れる)
## 関連ページ
[[PM2 dangling process detection]] [[PM2サービス再起動前にinvestlab-dailyが停止している理由をログで確認する]] [[INSERT/UPDATE を含むバッチ実行前に UNIQUE 制約や外部キー制約を確認する]] [[MCP→公式CLI移行で週次タスク安定化]]
## 関連概念(未作成)
`ロックファイルのタイムアウト・自動削除パターン` `PIDファイルによるプロセス生死確認` `fcntlによるファイルロック(Pythonファイルロック実装)`
instinct: 定期実行タスクのロックファイルを作成する前に既存のロックファイルが残っていないか確認する