⚙️ 自動化

定期タスク設定

適切な cron 構文とシェルスクリプトでスケジュールタスクを作成・管理します

★★☆ 中級 15 min 2025年1月13日

ユースケース

スケジュールタスクの設定には、cron 構文の理解と信頼性の高いスクリプトの作成が必要です。Cowork は、適切な形式の cron ジョブと付属のスクリプトを生成できます。

プロンプト例

Mac で複数のスケジュールタスクを設定する必要があります:

1. 毎日午前 2 時: ~/Documents を外付けドライブにバックアップ
2. 毎週月曜日午前 9 時: ~/Data/logs/ から週次レポートを生成
3. 6 時間ごと: ローカルフォルダをリモートサーバーと同期
4. 毎月 1 日: ~/Downloads から古いファイル(90 日以上)をアーカイブ

以下をお願いします:
- cron エントリを生成
- 各タスク用のシェルスクリプトを作成
- エラーログを含める
- すべてを ~/Scripts/scheduled/ に保存

Cowork の動作

  1. スケジュール分析: 要件を cron 式に変換します
  2. スクリプト生成: 各タスク用のシェルスクリプトを作成します
  3. エラー処理: ログとエラー通知を追加します
  4. ドキュメント: セットアップ手順を生成します
  5. ファイル作成: スクリプトと crontab エントリを保存します

出力サンプル

# ~/Scripts/scheduled/crontab_entries.txt

# 毎日午前 2 時にバックアップ
0 2 * * * /Users/you/Scripts/scheduled/daily_backup.sh >> /var/log/backup.log 2>&1

# 毎週月曜日午前 9 時に週次レポート
0 9 * * 1 /Users/you/Scripts/scheduled/weekly_report.sh >> /var/log/reports.log 2>&1

# 6 時間ごとに同期
0 */6 * * * /Users/you/Scripts/scheduled/sync_remote.sh >> /var/log/sync.log 2>&1

# 毎月 1 日午前 3 時にアーカイブ
0 3 1 * * /Users/you/Scripts/scheduled/monthly_archive.sh >> /var/log/archive.log 2>&1
#!/bin/bash
# ~/Scripts/scheduled/daily_backup.sh

set -e
LOG_PREFIX="[$(date '+%Y-%m-%d %H:%M:%S')] BACKUP:"
BACKUP_SRC="$HOME/Documents"
BACKUP_DST="/Volumes/ExternalDrive/Backups"
BACKUP_NAME="documents_$(date '+%Y%m%d').tar.gz"

echo "$LOG_PREFIX バックアップを開始..."

if [ ! -d "$BACKUP_DST" ]; then
    echo "$LOG_PREFIX エラー: バックアップ先がマウントされていません"
    exit 1
fi

tar -czf "$BACKUP_DST/$BACKUP_NAME" -C "$HOME" Documents

# 最新の 7 つのバックアップのみ保持
cd "$BACKUP_DST"
ls -t documents_*.tar.gz | tail -n +8 | xargs -r rm

echo "$LOG_PREFIX バックアップ完了: $BACKUP_NAME"

Cron 構文リファレンス

┌───────────── 分 (0 - 59)
│ ┌───────────── 時 (0 - 23)
│ │ ┌───────────── 日 (1 - 31)
│ │ │ ┌───────────── 月 (1 - 12)
│ │ │ │ ┌───────────── 曜日 (0 - 6)
│ │ │ │ │
* * * * *

ヒント

  • スケジュール設定前にスクリプトを手動でテストする
  • スクリプト内では絶対パスを使用する
  • 適切なエラー処理を含める
  • macOS ではより細かい制御のために launchd の使用を検討する
  • 失敗時のメール通知を追加する