クリーム色の背景、色付き表示、高コントラスト、大きな文字のほうが読みやすいですか?配色と文字を選ぶと、すべてのページに一度で反映されます。

無料レッスン

cronでバックアップを予約する

このレッスンのあとで: cron の1行を読んで、いつ動く仕事かを答えることができる。

45分のレッスンコマンド2件Linux 管理のラボ:ユーザー、権限、cron、systemd をブラウザーで

cronとは何か

cron(クロン)とは、決めた時刻に、決めた仕事を自動で動かす仕組みです。スマホが夜中に写真をバックアップするのと、同じ考え方です。

人が毎晩ログインして実行する必要はありません。1行を書いておけば、サーバーが忘れずにやってくれます。

このレッスンのゴール

メモ

cron の1行を読んで、いつ動く仕事かを答えることができる。

キーワード

ことばいみ
cron決めた時刻に仕事を動かす仕組み
バックアップ大事なデータの予備のコピー
スクリプト命令を並べて、まとめて動かせるようにしたファイル
cron式分、時、日、月、曜日の5つで時刻を書いた形
ログいつ何が起きたかを書き残した記録

学生が入力するセルは、このプレビューでは空白です。

始める前に

メモ

上のバーの Start the lab を押し、マシンが動き出すまで待ってください。このレッスンの Run は、読むだけです。ラボの課題の cron の設定は、あとで自分で行います。

バックアップは何をするのか

バックアップは、大事なデータを別の場所にコピーしておくことです。壊れたり消えたりしても、コピーから元に戻せます。

このラボのサーバーには、共有フォルダを別の場所へコピーするスクリプトがあります。中身を読んでみましょう。

バックアップのスクリプトを読む

コマンド
cat /usr/local/bin/backup.sh

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

権限と持ち主を見る

コマンド
stat -c '%a %U' /usr/local/bin/backup.sh

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

例: スクリプトの各行の意味

行意味
mkdir -p /var/backups/projectsコピー先のフォルダを、なければ作る
cp -a /srv/projects/. /var/backups/projects/共有フォルダの中身を、そのままコピーする
echo ... >> /var/log/backup.log終わった時刻を、ログに1行足す

学生が入力するセルは、このプレビューでは空白です。

cron式は5つの欄でできている

cron式は、空白で区切った5つの欄で時刻を書きます。左から順に、分、時、日、月、曜日です。

* は「すべて」という意味です。曜日は、日曜日が0、月曜日が1、土曜日が6です。そのあとに、動かす命令を書きます。

例: cron式の読み方

cron式動く時刻
0 3 * * *毎日、午前3時ちょうど
45 22 * * 5毎週金曜日の、午後10時45分
0 8 1 * *毎月1日の、午前8時
*/10 * * * *10分ごと
0,30 9 * * 1毎週月曜日の、9時ちょうどと9時30分

学生が入力するセルは、このプレビューでは空白です。

cronに仕事を登録するには

仕事は、crontab -e で自分用の表に書くか、/etc/cron.d の中にファイルとして置きます。後者のファイルでは、時刻の欄のあとに、実行するユーザーの名前も書きます。

次の例は読むだけで、ここでは実行しません。

例: 毎週日曜の仕事

コード: bash
# 毎週日曜日の午前4時に、ログを整理するスクリプトを root で動かす
0 4 * * 0 root /usr/local/bin/tidy-logs.sh

よくある間違い

注意

「5 」は、5分ごとに動くと考える人がよくいます。これは、毎時5分に1回動く意味です。5分ごとにしたいときは、「/5 *」と書きます。

さらに挑戦: 動いたか確かめる

予約した仕事は、動いたかどうかを確かめないと意味がありません。バックアップのスクリプトは、終わるたびにログへ1行足します。

tail でログの最後を読めば、昨夜動いたかがわかります。ログに書かれた時刻が1日前なら、何が考えられますか。

このラボとソースについて: Linux 管理のラボ:ユーザー、権限、cron、systemd をブラウザーで

授業で使いますか?このモジュールを学生に割り当てると、教員用ガイド、自動採点つきの課題、学生ごとのラボを使えます。