# Cron 設定ガイド ## 概要 毎朝8時に自動的にAI Newsを投稿するためのcron設定方法 --- ## 設定手順 ### 1. crontab編集 ```bash crontab -e ``` ### 2. 以下の行を追加 ```bash # AI News 自動投稿 - 毎朝8時 0 8 * * * cd /var/www/tkim.planitai.co.jp/blog/batch/auto-post-ai-news && /usr/bin/node auto-post-ai-news.js >> logs/cron.log 2>&1 ``` ### 3. 保存して終了 - vi/vim の場合: `ESC` → `:wq` → `Enter` - nano の場合: `Ctrl+X` → `Y` → `Enter` ### 4. 設定確認 ```bash crontab -l ``` --- ## Cron設定の説明 ``` 0 8 * * * │ │ │ │ │ │ │ │ │ └─── 曜日 (0-7, 0と7が日曜日) │ │ │ └───── 月 (1-12) │ │ └─────── 日 (1-31) │ └───────── 時 (0-23) └─────────── 分 (0-59) ``` - `0 8 * * *` = 毎日8時0分 --- ## その他の設定例 ### 毎日午前9時 ```bash 0 9 * * * cd /var/www/tkim.planitai.co.jp/blog/batch/auto-post-ai-news && /usr/bin/node auto-post-ai-news.js >> logs/cron.log 2>&1 ``` ### 平日(月〜金)の午前8時 ```bash 0 8 * * 1-5 cd /var/www/tkim.planitai.co.jp/blog/batch/auto-post-ai-news && /usr/bin/node auto-post-ai-news.js >> logs/cron.log 2>&1 ``` ### 2時間ごと ```bash 0 */2 * * * cd /var/www/tkim.planitai.co.jp/blog/batch/auto-post-ai-news && /usr/bin/node auto-post-ai-news.js >> logs/cron.log 2>&1 ``` --- ## ログローテーション設定 ### logrotate設定ファイル作成 ```bash sudo nano /etc/logrotate.d/ai-news-auto-post ``` ### 以下の内容を追加 ``` /var/www/tkim.planitai.co.jp/blog/batch/auto-post-ai-news/logs/*.log { daily rotate 30 compress delaycompress missingok notifempty create 0644 root root } ``` ### 設定テスト ```bash sudo logrotate -d /etc/logrotate.d/ai-news-auto-post ``` --- ## トラブルシューティング ### Cronが実行されない場合 #### 1. Cronログを確認 ```bash # システムのcronログ sudo tail -f /var/log/cron # または sudo tail -f /var/log/syslog | grep CRON ``` #### 2. スクリプトのログを確認 ```bash tail -f /var/www/tkim.planitai.co.jp/blog/batch/auto-post-ai-news/logs/cron.log ``` #### 3. 手動実行でテスト ```bash cd /var/www/tkim.planitai.co.jp/blog/batch/auto-post-ai-news node auto-post-ai-news.js ``` #### 4. Node.jsパスを確認 ```bash which node # 結果を crontab の /usr/bin/node 部分に反映 ``` #### 5. 環境変数を確認 Cronは通常のシェル環境と異なるため、.envファイルが正しく読み込まれているか確認: ```bash cd /var/www/tkim.planitai.co.jp/blog/batch/auto-post-ai-news cat .env ``` --- ## メール通知設定(オプション) ### Cronの実行結果をメールで受け取る crontabの先頭に以下を追加: ```bash MAILTO=your-email@example.com 0 8 * * * cd /var/www/tkim.planitai.co.jp/blog/batch/auto-post-ai-news && /usr/bin/node auto-post-ai-news.js >> logs/cron.log 2>&1 ``` ### メール送信の無効化 crontabの先頭に以下を追加: ```bash MAILTO="" ``` --- ## 実行確認 ### 次回実行予定の確認 cronの次回実行時刻を計算: ```bash date -d "tomorrow 08:00" "+%Y-%m-%d %H:%M:%S" ``` ### ログファイルの監視 ```bash # リアルタイムでログを監視 tail -f logs/ai-news-$(date +%Y%m%d).log # または全てのログ tail -f logs/*.log ``` --- ## Cron設定の削除 ### 特定の行を削除 ```bash crontab -e # エディタで該当行を削除して保存 ``` ### 全てのcronを削除 ```bash crontab -r ``` ⚠️ **注意**: これは全てのcron設定を削除します。 --- ## 参考情報 - Cron式ジェネレーター: https://crontab.guru/ - Logrotate設定: `man logrotate` - Crontab設定: `man 5 crontab` --- **最終更新**: 2025-11-23