⚙️ 自動化
定期タスク設定
適切な 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 の動作
- スケジュール分析: 要件を cron 式に変換します
- スクリプト生成: 各タスク用のシェルスクリプトを作成します
- エラー処理: ログとエラー通知を追加します
- ドキュメント: セットアップ手順を生成します
- ファイル作成: スクリプトと 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の使用を検討する - 失敗時のメール通知を追加する