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を実行させるには次の書式だ。

17 00 * * 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

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

短期間でエンジニアになる方法

・「まったくの初心者だけどエンジニアになりたい!」

・「プログラマーとして転職をしたい!」

という方はリナックスアカデミーの資料を見てみてください。短期間で未経験からエンジニアになることができるスクールとして15年間選ばれ続けてきた理由やノウハウが載った資料です。

エンジニアの入り口に立つために必要な勉強技術の最新動向本当に使えるIT資格学習に役立つ国からの奨励金などの情報が詰まっています。

無料で2,3日中にお手元にお届けします。


資料を見てみる

SNSでもご購読できます。

コメントを残す

*