【Linux初心者向け】cronの使い方と、動かない時に確認したい3つの注意点

スポンサーリンク
スポンサーリンク
サーバー構築
スポンサーリンク
スポンサーリンク

導入

このブログのキャッチコピーは「未来の自分のための技術メモ、時々あなたのためのヒント。」ですが、今回はあなたのサーバー管理をぐっと楽にしてくれる、魔法のような「自動化」のヒントです。

サーバーを運用していると、「毎日深夜にバックアップを取りたい」「1時間おきに特定のプログラムを実行したい」といった、決まった時間に決まった作業を繰り返す必要が出てきます。

これを人間の手で毎日行うのは大変ですよね。そんな時に活躍するのが、Linuxに標準で備わっている「cron(クロン)」というスケジュール実行の仕組みです。

この記事では、cronの基本的な使い方と、初心者が陥りがちな「ハマりどころ」を分かりやすく解説します。


cronとは? サーバーの「スケジュール帳」

cronは、一言で言うと**「サーバーのスケジュール帳(またはアラーム時計)」**です。

crontabという設定ファイルに、「何曜日の何時に、どのコマンドを実行するか」を書き込んでおくだけで、あとはcronがその時間になると、あなたの代わりに自動でコマンドを実行してくれます。

これにより、面倒な定型業務から解放され、より創造的な作業に時間を使うことができるようになります。まさに「時間効率」を高めるための必須ツールです。


基本の書き方:crontabの構文

cronの設定は、crontab -eというコマンドで編集画面を開き、以下のような書式で記述します。

分 時 日 月 曜日 実行したいコマンド

5つの *(アスタリスク)が時間設定の部分です。

  • * * * * * : 毎分
  • 0 3 * * * : 毎日 午前3時0分
  • */15 * * * * : 15分ごと
  • 5 4 10 * * : 毎月10日の午前4時5分

最初は少し難しく感じるかもしれませんが、「分・時・日・月・曜日」の順番さえ覚えてしまえば、様々なスケジュールを組むことができます。


初心者がハマる!3つの落とし穴と解決策

crontab -eで設定したはずなのに、「なぜか動かない…」というのは、誰もが一度は通る道です。その原因のほとんどは、以下の3つのポイントに集約されます。

1. 「PATH」が通っていない問題

私たちが普段ターミナルでmysqldumpのようなコマンドを実行できるのは、.bash_profileなどで「コマンドの置き場所(PATH)」が設定されているからです。

しかし、cronがコマンドを実行する際には、この.bash_profileは読み込まれません。そのため、「mysqldumpなんてコマンドはどこにあるか分かりません」とエラーになってしまうのです。

  • 解決策:コマンドを/usr/bin/mysqldumpのように、フルパス(絶対パス)で記述しましょう。これが最も確実で、トラブルの少ない方法です。

2. 「実行権限」がない問題

実行しようとしているシェルスクリプト(例: backup.sh)に、実行権限が付与されていないケースもよくあります。

  • 解決策:chmod +x /path/to/backup.shのように、スクリプトに**実行権限(x)**を与えておきましょう。

3. 「謎のメール」が大量に届く問題

cronは親切なことに、実行したコマンドが何か少しでも文字を出力(標準出力・標準エラー出力)すると、「実行結果を報告しますね!」と、crontabを設定したユーザー宛にメールを送ろうとします。

これが原因で、サーバーに大量のメールが溜まってしまうことがあります。

  • 解決策:コマンドの末尾に、>/dev/null 2>&1という「おまじない」を付けましょう。これは「コマンドの出力は、成功してもエラーになっても、全て/dev/null(ゴミ箱のような場所)に捨ててください」という意味です。

設定例:

5 4 * * * /path/to/backup.sh >/dev/null 2>&1

まとめ

今回は、サーバー作業を自動化するcronの基本的な使い方と、初心者がつまずきやすいポイントについて解説しました。

  • コマンドはフルパスで書く
  • スクリプトには実行権限を与える
  • 出力は>/dev/null 2>&1で捨てる

この3つの「ヒント」を覚えておくだけで、cronに関するトラブルのほとんどは解決できるはずです。ぜひ、あなたのサーバーの定型業務を自動化して、快適な運用を目指してみてください。

コメント

タイトルとURLをコピーしました