Crontab コマンドは、cron デーモンが cron ジョブを実行するために使用する cron テーブルを管理します。この記事では、crontab コマンドのさまざまなコマンド ライン オプションについて説明します。
1.オプション -u を使用して他のユーザーの Crontab を調整する
-u はユーザーを表します。この後に、システムで有効なユーザー名が続く必要があります。 -u オプションだけでは何もしません。他のオプションと組み合わせる必要があります。実際には、他の crontab コマンド ライン オプションと組み合わせることができます。
-u ユーザー名を指定しない場合、crontab コマンドは現在のユーザーで実行されます。たとえば、次のすべての crontab コマンドは、現在ログインしているユーザーに対して実行されます。
crontab -l crontab -e crontab -r ..
-u ユーザー名を指定すると、指定されたユーザー名で crontab コマンドが実行されます。たとえば、次の crontab コマンドはすべて oracle ユーザーで実行されます。
crontab -u oracle -l crontab -u oracle -e crontab -u oracle -r ..
2.オプション -l を使用して cron テーブルを表示
-l はリストを表します。これにより、現在のユーザーの crontab が表示されます。 root としてログインしているので、root ユーザーの cron ジョブが表示されます。
# crontab -l 53 00 * * 7 /bin/sh /home/root/bin/server-backup
他のユーザーの cron ジョブを表示するには、-l オプションと -u オプションを組み合わせます。
# crontab -u oracle -l 01 00 * * * /bin/sh /home/oracle/bin/rman-backup
15 の crontab の例では、cron ジョブ エントリを使用する実用的な方法について説明しています。
3.オプション -e を使用して cron テーブルを編集
-e は編集を表します。これにより、現在のユーザーの crontab を編集できます。 root としてログインしているので、Vim エディターで root の cron ジョブが自動的に開き、編集できるようになります。
# crontab -e 53 00 * * 7 /bin/sh /home/root/bin/server-backup ~ ~ /tmp/crontab.7dgqju
上記からわかるように、/tmp/crontab.7dgqju は crontab によって自動的に作成される一時ファイルで、ここで cron ジョブを編集できます。
編集を保存して Vim エディタを終了すると、変更を行ったかどうかに応じて、次のいずれかのメッセージが表示されます。
# crontab -e crontab: no changes made to crontab # crontab -e crontab: installing new crontab
注:編集のために cron ジョブを開くために crontab が使用するエディターは、VISUAL または EDITOR 環境変数に依存します。デフォルトでは、Linux 環境で Vim エディターを使用します。ただし、VISUAL/EDITOR 環境変数を使用して変更できます。
他のユーザーの cron ジョブを編集するには、-e オプションと -u オプションを組み合わせます。
# crontab -u oracle -e crontab: installing new crontab
crontab エントリ自体の意味を理解するには、5 分 (または時間、日、または月) ごとに Cron ジョブを実行する方法を参照してください。
4.ファイルからCrontabをロード
crontab を手動で編集して新しいジョブを追加する代わりに、すべての cron ジョブをファイルからアップロードすることもできます。これは、同じ cron ジョブ エントリを持つ多数のサーバーを維持する必要がある場合に役立ちます。
次の例では、すべての cron ジョブが /home/root/mycronjobs.txt ファイルにあります。
# cat /home/root/mycronjobs.txt 53 00 * * 7 /bin/sh /home/root/bin/server-backup 01 00 * * * /bin/sh /home/root/bin/check-user-quota
mycronjobs.txt ジョブを現在のユーザーの crontab にアップロードするには、次の手順を実行します:
# crontab /home/root/mycronjobs.txt
cron ジョブが正常にアップロードされていることを確認します。
# crontab -l 53 00 * * 7 /bin/sh /home/root/bin/server-backup 01 00 * * * /bin/sh /home/root/bin/check-user-quota
注:このアップロード方法を使用するときは注意してください。これにより、新しいものをアップロードする前に現在のすべての cron ジョブ エントリが消去されるためです。
ファイルから別のユーザーに cron ジョブをアップロードするには、-u オプションと組み合わせます。
# crontab -u oracle /home/oracle/mycronjobs.txt
5.オプション -s を使用して SELinux セキュリティを追加
-s は SELinux を表します。これにより、現在の SELinux セキュリティ コンテキストを含む crontab に MLS_LEVEL 変数が追加されます。
-s オプションを使用するには、ファイルから cron ジョブをアップロードする必要があります。
# cat /home/root/mycronjobs.txt 53 00 * * 7 /bin/sh /home/root/bin/server-backup 01 00 * * * /bin/sh /home/root/bin/check-user-quota # crontab -s /home/root/mycronjobs/my.txt SELINUX_ROLE_TYPE=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 53 00 * * 7 /bin/sh /home/root/bin/server-backup 01 00 * * * /bin/sh /home/root/bin/check-user-quota
システムに応じて、上記は SELinux セキュリティ コンテキスト文字列を含む SELUNUX_ROLE_TYPE 変数または MLS_LEVEL 変数のいずれかを追加します。環境で SELinux を使用していない場合は、このオプションが何をするかについて心配する必要はありません。 SELinux は別のトピックであり、今後の記事で詳しく取り上げる可能性があります。
6.オプション -r を使用してすべての cron ジョブを削除
-r は削除を表します。これにより、以下に示すように、現在のユーザーのすべての cron ジョブ エントリが削除されます。
# crontab -l 53 00 * * 7 /bin/sh /home/root/bin/server-backup 01 00 * * * /bin/sh /home/root/bin/check-user-quota # crontab -r # crontab -l no crontab for root
-i は対話モードを表します。 -i と -r を組み合わせると、すべての crontab エントリを削除する前に確認を求められます。
# crontab -ir crontab: really delete root's crontab? n
他のユーザーの cron ジョブを削除するには、-r オプションと -u オプションを組み合わせます。
# crontab -u oracle -l 01 00 * * * /bin/sh /home/oracle/bin/rman-backup # crontab -u oracle -r # crontab -u oracle -l no crontab for oracle