はじめに
このハンズオンでは、macOSでcronを実際に設定して動作を確認します。
この記事は、IBM Bobが作成したcronハンズオンを実践するという内容です。
準備
必要な環境
- macOS(cronは標準で動作しています)
- ターミナルアプリ
cronの動作確認
macOSではcronは自動的に動作しています。確認は不要です。
ステップ1:簡単なスクリプトを作成
まず、定期実行するスクリプトを作成します。
# ディレクトリを作成
mkdir -p ~/cron_practice
cd ~/cron_practice
# スクリプトファイルを作成
cat > hello.sh << 'EOF'
#!/bin/bash
echo "$(date): Hello from cron!" >> ~/cron_practice/cron.log
EOF
# 実行権限を付与
chmod +x hello.sh
動作確認
スクリプトが正しく動くか確認します。
./hello.sh
cat cron.log
期待される出力例
Thu Apr 30 23:00:00 JST 2026: Hello from cron!
ステップ2:1分ごとに実行する設定
cronに登録して、1分ごとに実行されるようにします。
# crontabを編集
crontab -e
エディタが開いたら、以下の行を追加します。
* * * * * /Users/ユーザー名/cron_practice/hello.sh
注意点
- フルパスで指定してください
-
~は使えないので、実際のパスに置き換えてください - 例:
/Users/hinano/cron_practice/hello.sh
設定の確認
# 設定を確認
crontab -l
ステップ3:動作確認
2〜3分待ってから、ログファイルを確認します。
cat ~/cron_practice/cron.log
期待される出力例
Thu Apr 30 23:00:00 JST 2026: Hello from cron!
Thu Apr 30 23:01:00 JST 2026: Hello from cron!
Thu Apr 30 23:02:00 JST 2026: Hello from cron!
1分ごとに新しい行が追加されていれば成功です!
やってみた感想
- 成功しているのか失敗しているのかがわからない
- 毎回実行権限をスクリプトにつける必要がある
- 毎回ログを確認しに行かなければならないのが面倒くさい
ステップ4:より実践的な例
例1:ディスク使用量を記録
cat > disk_check.sh << 'EOF'
#!/bin/bash
echo "=== $(date) ===" >> ~/cron_practice/disk.log
df -h >> ~/cron_practice/disk.log
echo "" >> ~/cron_practice/disk.log
EOF
chmod +x disk_check.sh
crontabに追加(毎日午前9時に実行):
0 9 * * * /Users/あなたのユーザー名/cron_practice/disk_check.sh
crontabにタスクが追加されました。こんな感じです。
hinano@Hinanos-MacBook-Air cron_practice % crontab -l
* * * * * /Users/hinano/cron_practice/hello.sh
0 9 * * * /Users/hinano/cron_practice/disk_check.sh
例2:古いログファイルを削除
cat > cleanup.sh << 'EOF'
#!/bin/bash
# 7日以上前のログファイルを削除
find ~/cron_practice -name "*.log" -mtime +7 -delete
echo "$(date): Cleanup completed" >> ~/cron_practice/cleanup.log
EOF
chmod +x cleanup.sh
crontabに追加(毎週日曜日の午前2時に実行):
0 2 * * 0 /Users/あなたのユーザー名/cron_practice/cleanup.sh
ステップ4:設定のクリーンアップ
練習が終わったら、設定を削除します。
# crontabを編集して、追加した行を削除
crontab -e
# または、すべて削除する場合
crontab -r
おわりに
macOSでcronの基本的な使い方を実践できました。
簡単な定期タスクひとつでもログが増えていくのに、多数の定期タスクをつけると大変だろうなと思いました。
どこが悪いのか、何が起きたのか確認するのに、ログが膨大すぎて見つけるの大変そう!
学んだこと
- スクリプトの作成と実行権限の設定
- crontabへの登録方法