crontabコマンドについてまとめました 【Linuxコマンド集】

  • このエントリーをはてなブックマークに追加
  • Pocket

crontabは定期的にジョブを実行するようスケジュールするcronを設定するコマンドだ。

定期的なログの取得などに活用できる。

このページでは、次のようなプロセスの実行状況をテキストファイルlogdata.txtに蓄積するシェルを定期的に動作させる方法を紹介する。

シェルファイルpslog.sh

date >> logdata.txt //取得時間の記録

ps -a >> logdata.txt //プロセス情報の記録

シェルファイルpslog.shはあらかじめ次のchmodコマンドにて実行権限を付与しておく。

$ chmod 755 pslog.sh

この時点で、コマンドラインから次のように入力すればpslog.shが実行される状態となっている。

$ ./pslog.sh

さらに、指定するジョブの絶対パスも調べておこう。

今回のファイルpslog.shの絶対パスを調べるには、現在のディレクトリの絶対パスを格納している環境変数$PWDを使って次のコマンドで調べることができる。

$ ls -ld $PWD/pslog.sh

crontab

絶対パスが/home/vagrant/pslog.shであることがわかった。

crontabコマンドのオプションたち

crontabコマンドは、オプションが必ず必要だ。

オプションの一覧

後から詳細をご紹介するが、まずは一覧で見てみよう。

オプション -e

cronを設定する

オプション -l

設定されているcronを表示する

オプション -r

cronを削除する

オプション -u

ユーザーを指定する。

-eオプション:cronを設定する

cronを設定するためにエディタでcronの設定ファイルを読み出す。書式は次のとおりだ。

$ crontab -e

crontab

すると、エディタが開き、cronを編集できる状態になった。

この例ではエディタviでcron設定ファイル/tmp/crontab.S8aqdW/crontabが開いた。

スクロールし、最終行に移動しcron設定を記述する。

cronの設定

cronの設定は、実行時間とジョブを半角空白を空けて記録する。

実行時間は、分、時、日、月、曜日を指定し、こちらも半角空白を空けて記録する。

時は24時間表記、曜日は0から6まで日曜日から土曜日までに対応し、さらに7はまた日曜に対応する。

数字の代わりに*を入力すると指定しないことになる。

毎月20日の23:59に、シェルスクリプト/home/vagrant/work.shを実行させるには次の書式だ。

59 23 20 * * ./home/vagrant/work.sh

毎週金曜日の17:00に、シェルスクリプト/home/vagrant/weekly.shを実行させるには次の書式だ。

00 17 * * 5 ./home/vagrant/weekly.sh

/5と表記すると間隔5を表すことができる。

例えば、5分おきに、シェルスクリプト/home/vagrant/work.shを実行させるには次の書式だ。

*/5 * * * * ./home/vagrant/work.sh

毎日の11時と23時に、シェルスクリプト/home/vagrant/work.shを実行させるには次のように2行併記する。

0 11 * * * ./home/vagrant/work.sh

0 23 * * * ./home/vagrant/work.sh

今回は、毎日のお昼12時に、シェルスクリプト/home/vagrant/pslog.shを実行させるため、次のような表記とする。

0 12 * * * ./home/vagrant/pslog.sh

保存し、コマンドプロンプトに戻るときにエラーチェックが行われ、正常であればinstalling new crontabとメッセージが表示される。

crontab

エラーがあれば更新せずエラーメッセージを表示する。

crontab

設定内容にエラーがあるとこのような表示になる。

-lオプション:設定されているcronを表示する

設定されているcron表示する。書式は次のとおりだ。

$ crontab -l

crontab

cron設定の内容が表示された。

-rオプション:cronを削除する

設定されているcronを削除する。

cronが複数設定されている場合は、すべて削除するので注意しよう。

書式は次のとおりだ。

$ crontab -r

crontab

cronの設定が削除された。

一部だけ削除する場合は、-eオプションで編集し、削除しよう。

-uオプション:ユーザーを指定する

rootでcrontabコマンドを実行する場合は、-uオプションでユーザー名を指定できる。

書式は次の通りだ。

$ crontab -u ユーザー名

ユーザーvagrantに設定されているcron内容を表示するには次のコマンドだ。

$ crontab -u vagrant -l

crontab

rootでvagrantの設定内容を確認したところ、何も設定されていなかった。

crontab関連コマンド

最後にcrontabコマンドに関連して、cron設定で使用するコマンドも紹介しておく。

chmodコマンド

ファイルの権限を設定する。

viコマンド

テキストファイルを編集する。

まとめ

このページでは、crontabコマンドを使い、定期的にジョブを実行する方法を解説した。

cronは刻々と変わる情報を自動的に蓄積できるため、応用範囲は広い。

使用しているコンピュータの状況をログとして残していくほか、Web上の天気サイトからある地点の気温データを抜き出して記録していくような使い方もできるだろう。

コンピュータプログラムを動作させるきっかけとして、人間の操作や、エラー発生時などのイベントがあるが、他にもcronを使うことで、定期的にプログラムを起動できることを覚えておこう。

  • このエントリーをはてなブックマークに追加
  • Pocket

このページの続きや関連ページは下記から一覧で確認できます。

IT講師に興味はありませんか?

・「今までIT講師をやってきたが、更に多くの講義を行いたい」

・「エンジニアとしてやってきたが講師業に魅力を感じている」

・「講師として活躍するためにベースとなる知識を知りたい」

・「様々な分野や言語の講師にチャレンジしてみたい」


という方はぜひIT講師募集のページをご覧ください。


リスキルテクノロジーでは「受講している方々にITを好きになってもらう」ことを目標に、同じ目標に向かって歩んで行ける講師の方を常に探しています。


システム開発やインフラ構築などのエンジニアリング経験を活かし、新入社員などの未経験者や経験の浅い初学者の方々に対してITトレーニングを行っていただくことになります。


テキストやカリキュラムは事前に用意されており、それらを元に講義を進めていくため、IT講師をはじめて実施する方でも安心してトレーニングを実施できます。


IT講師募集のページを見る

SNSでもご購読できます。

コメント

  1. 通りすがり より:

    毎週金曜日に実行するcronは「17 00 * * 5 ./home/vagrant/weekly.sh」ではなく「00 17 * * 5 ./home/vagrant/weekly.sh」ではないでしょうか?
    また、実行日時は「分、時、月、日、曜日」の順ではなく「分、時、日、月、曜日」だと思います。

    1. リカレントテクノロジー より:

      ご指摘ありがとうございます。修正させていただきます。

コメントを残す

*

未経験からの育成制度も充実
IT講師に興味はありませんか?

リスキルテクノロジーでIT講師の積極募集を開始! 経験・未経験問わずご応募可能。育成制度で講師スキル向上も目指せます

IT講師に応募する