「同じ作業を毎日同じ時間に手で実行している」という状態から抜け出したいなら、結論としてはcronで実行タイミングを制御し、シェルスクリプトで処理内容をまとめる、この組み合わせから始めるのが未経験にとって最短のルートです。この記事では、cronとシェルスクリプトを使った自動化の第一歩を、仕組みの理解から最初の1本を動かすところまで、現場目線で解説します。
なぜ自動化から手をつけるといいのか
未経験の学習で自動化が後回しにされがちな理由は、覚えることが多そうに見えるためです。しかし実際には、Linuxコマンドとシェルスクリプトの基本が分かっていれば、あとはcronという「決まった時刻に実行を予約する仕組み」を覚えるだけで、最初の自動化は組めます。
現役でインフラの現場にいる立場から言うと、監視運用の現場ではバックアップ取得やログのローテーション、死活監視の定期実行など、同じ処理を決まった時間に繰り返す仕組みの多くがcron任せになっています。仕組みを理解しておくと、入社後の設定変更や障害対応の際に「何が動いているはずか」を把握しやすくなります。
cronとは何か。仕組みと書き方の基本
cronは、Linuxに標準で搭載されている、指定した時刻・間隔でコマンドやスクリプトを自動実行するための仕組みです。動作の中心は「crontab」と呼ばれる設定ファイルで、1行に1つの実行ルールを書きます。
書式は次の5つの項目と実行内容を並べる形です。
分 時 日 月 曜日 実行するコマンド例えば、毎日午前3時にバックアップスクリプトを実行したい場合は次のように書きます。
0 3 * * * /home/user/scripts/backup.sh設定の確認・編集は主に次のコマンドを使います。
- crontab -l: 現在登録されている設定を一覧表示する
- crontab -e: 設定を編集する(エディタが開く)
- crontab -r: 設定をすべて削除する(誤って全削除しないよう注意が必要)
シェルスクリプト×cronで最初の自動化を組む
cronは「いつ実行するか」を決めるだけの仕組みなので、「何を実行するか」はシェルスクリプト側で用意します。シェルスクリプトの基本的な書き方は、シェルスクリプト入門で解説しているので、まだ不安がある場合は先に確認しておくと理解が早まります。
最初の題材としては、ディスク使用率を確認してログに残すだけの短いスクリプトが取り組みやすいです。
#!/bin/bash
DATE=$(date "+%Y-%m-%d %H:%M")
USAGE=$(df -h / | awk 'NR==2 {print $5}')
echo "$DATE ルート領域の使用率: $USAGE" >> /home/user/logs/disk_usage.logこのスクリプトを作成し、実行権限を付けたうえでcrontabに登録すれば、1時間ごとにディスク使用率が自動で記録される仕組みが完成します。実行権限の付け方でつまずいた場合は、Permission deniedの直し方を参照してください。
つまずきやすいポイントと確認方法
cronを使い始めた人がほぼ共通してつまずくポイントを整理すると、次の表のようになります。
| 症状 | よくある原因 | 確認・対処 |
|---|---|---|
| 手動では動くのにcronでは動かない | PATHが通っていない・カレントディレクトリの前提が違う | スクリプト内でコマンドをフルパスで書く |
| 実行されたか分からない | 標準出力・エラーの行き先を確認していない | ログファイルへのリダイレクトを追加する |
| 設定した時刻に動かない | crontabの書式や曜日指定の勘違い | crontab -l で登録内容を見直す |
| 実行権限がなく失敗する | chmod +xを忘れている | ls -l でx権限がついているか確認する |
原因の多くは、手動実行時とcron実行時で環境(PATHなど)が違うことに起因します。動作確認は手動実行だけで終わらせず、実際にcronから一度動かして、想定どおりログが残るかまで確認する習慣をつけておくと安心です。
学ぶ順番とInfraDojoでの練習方法
cronとシェルスクリプトは、Linuxの基本コマンドとログの読み方がある程度身についてから取り組むほうがスムーズです。エラーが出たときに、コマンド自体の問題なのか、cronの設定の問題なのかを切り分けられないと、原因調査に時間がかかります。ログの調べ方に不安がある場合は、ログ調査のやり方から先に固めておくのもおすすめです。
InfraDojoなら、ブラウザ上のLinux環境でcrontabの編集やスクリプトの実行を実際に試しながら学べるため、自分の環境を壊す心配なく手を動かせます。学習の全体像はインフラキャリアロードマップ(Linuxコース)にまとまっているので、自動化を学ぶ位置づけを確認したい人は参考にしてください。
よくある質問
Q. cronとシェルスクリプト、どちらを先に学ぶべきですか?
シェルスクリプトを先に学ぶことをおすすめします。cronは「決まった時刻に実行を予約する」だけの仕組みなので、実行する中身であるシェルスクリプトが多少なりとも書けないと、自動化の練習になりません。まずは数行の短いスクリプトを書けるようになってから、cronで実行タイミングを制御する練習に進むと理解しやすいです。
Q. 自動化スキルは未経験の転職活動でアピールになりますか?
アピール材料にはなります。ただし複雑な自動化ツールである必要はなく、ディスク使用率やログの状態確認といった小さなスクリプトをcronで定期実行させた経験を、自分の言葉で説明できることのほうが重要です。何を自動化し、なぜその仕組みにしたかを話せる状態にしておくと、実務での再現性が伝わりやすくなります。
Q. cronの設定を間違えて本番環境を壊さないか不安です。
不安に感じるのは自然なことです。学習段階では、本番相当の環境ではなく、壊しても影響のない演習環境で試すのが安全です。実際の現場でも、新しいcron設定はまずログ出力だけの軽い処理で動作確認してから、本来の処理に置き換えていく進め方が一般的です。