このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

【Linux】crontabファイルの表示・編集・削除:crontabコマンド

crontabコマンドの概要

 Linuxシステムにおいて、定期的なタスクの自動実行は非常に重要です。例えば、定期的なバックアップ、ログのローテーション、システムメンテナンスなど、これらのタスクを手動で行うのは手間がかかり、ヒューマンエラーのリスクもあります。そこで役立つのがcronジョブです。cronジョブを管理するための主要なツールがcrontab (クロンタブ、あるいはクローンタブ、クーロンタブ)コマンドです。このコマンドを使用することで、ユーザーは自分のcrontabファイルを表示、編集、削除することができます。

【構文】
crontab [オプション]

主なオプションと説明

オプション説明
-eユーザーのcrontabファイルを編集します。
-lユーザーのcrontabファイルを表示します。
-rユーザーのcrontabファイルを削除します。
主なオプションと説明

ユーザーのcrontabファイルの項目

ユーザーのcrontabファイルには、以下の項目が含まれます。

フィールド意味値の範囲
実行する分0-59
実行する時間0-23
実行する日1-31
実行する月1-12 または Jan-Dec
曜日実行する曜日0-7 または Sun-Sat
コマンド実行するコマンド任意のコマンドやシェルスクリプト
ユーザーのcrontabファイルの項目

コマンドの使用例

1.crontabファイルの表示

 まず、現在のユーザーのcrontabファイルを表示し、crontabファイルが存在しないことを確認します。

・「crontab -l」コマンドを実行します。

 この「no crontab for user01」メッセージは、現在のユーザーに対してcrontabファイルがまだ定義されていないことを示します。

user01@ubuntu-vm:~$ crontab -l
no crontab for user01

2.crontabファイルの編集

 次に、1分ごとに日時を出力するcrontabファイルを作成し、/home/user01/test.logに追記します。※「/home/user01/test.log」の「user01」部分は、ログインしているユーザー名に置き換えてください。

crontabファイルの編集

・「crontab -e」コマンドを実行します。

user01@ubuntu-vm:~$ crontab -e

エディタが開くので、以下の内容を追加

 エディタが開くので、以下の内容を末尾に追加します。※起動するエディタはLinuxのディストリビューションで異なります。

* * * * * date >> /home/user01/test.log

 日時を1分ごとに出力します。出力先は、user01のホームディレクトリである「/home/user01」のtest.logファイルに追記していきます。

【crontabファイルの内容】

  GNU nano 6.2             /tmp/crontab.28jguj/crontab
# Edit this file to introduce tasks to be run by cron.
# 
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
(省略)
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
# 
# For more information see the manual pages of crontab(5) and cron(8)
# 
# m h  dom mon dow   command
* * * * * date >> /home/user01/test.log

変更を保存してエディタを終了

「Ctrl」+「S」キーで保存して、「Ctrl」+「X」キーでnanoエディタを終了させます。

3.crontabファイルの表示

・「crontab -l」コマンドを実行します。

 再度、crontabファイルを表示し、crontabファイルが作成されたことを確認します。この内容は、1分ごとにdateコマンドの出力を/home/user01/test.logに追記する設定がされたこと意味します。

user01@ubuntu-vm:~$ crontab -l
# Edit this file to introduce tasks to be run by cron.
# 
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
(省略)
# 
# m h  dom mon dow   command
* * * * * date >> /home/user01/test.log

4.test.logの確認

「test.log」を確認します。

・「cat test.log」コマンドを実行します。

日時が「test.log」ファイルに追記されていることが分ります。

user01@ubuntu-vm:~$ cat test.log 
2024年  7月 14日 日曜日 22:59:01 JST
2024年  7月 14日 日曜日 23:00:01 JST

数分、待機しいてから「test.log」を確認します。

・「cat test.log」コマンドを実行します。

日時が1分ごとに自動的に「test.log」ファイルに追記されていることが分ります。

user01@ubuntu-vm:~$ cat test.log 
2024年  7月 14日 日曜日 22:59:01 JST
2024年  7月 14日 日曜日 23:00:01 JST
2024年  7月 14日 日曜日 23:01:01 JST
2024年  7月 14日 日曜日 23:02:01 JST

5. crontabファイルの削除

次に、crontabファイルを削除します。

・「crontab -r」コマンドを実行します。

user01@ubuntu-vm:~$ crontab -r

6.crontabファイルの削除の確認

再度、crontabファイルを表示し、削除されたことを確認します。

・「crontab -l」コマンドを実行します。

この「no crontab for user01」メッセージは、crontabファイルが削除されたことを示します。

user01@ubuntu-vm:~$ crontab -l
no crontab for user01

7.この演習で作成したファイルを削除します。

・「rm test.log」コマンドを実行し、「ls」コマンドで削除されたかどうかを確認します。

user01@ubuntu-vm:~$ rm test.log
user01@ubuntu-vm:~$ ls
snap          テンプレート  ドキュメント  ピクチャ      公開
ダウンロード  デスクトップ  ビデオ        ミュージック

まとめ

 crontabコマンドは、ユーザーの定期的なジョブを管理するために使用される重要なツールです。主なオプションとして、-e(編集)、-l(表示)、-r(削除)があり、これらを使用してcrontabファイルを効率的に管理できます。具体的な使用例として、1分ごとに日時を出力する設定を行い、その設定を確認し、最終的に削除する手順を示しました。

オプション説明
-eユーザーのcrontabファイルを編集します。
-lユーザーのcrontabファイルを表示します。
-rユーザーのcrontabファイルを削除します。
まとめ

 このように、crontabコマンドを活用することで、定期的なタスクの管理と自動化を簡単に行うことができます。