こんにちは、ふじみや です。
Linuxではセキュリティリスクが高まらないように、定期的にシステムをアップデートさせることが必要です。また、例えば一定期間を経過したログファイルを削除するために定期的にスクリプトを実行したり、ご自身で作成されたプログラムを定期的に実行したい、といったこともあるのでないでしょうか。
今回は、そういった思いをお持ちの方向けに、Linuxの「cron(クローン)」機能についてご説明をしたいと思います。
cronとは
「cron」とは、一言でいうとLinuxにおいてタスクのスケジュール管理を行う機能のことです。
「crontab」コマンドでスケジュール管理を行うためのファイルを開き、「いつ」「何を行う」を記載することで、指定された時間に登録されたスクリプトを実行することができるようになります。
cronへの登録
それでは、今回は定期的にLinuxのシステムアップデートを行うようにしてみましょう。
sudo yum -y update
Cronの書き方
まずは、LinuxにSSH接続し、次のコマンドを入力してください。
crontab -e
そうするとエディタが開きますので、「i」を押下して入力モードにし、以下のように記載をしてみましょう。
入力が完了したら「esc」キーを押下後「:wq」で上書き保存しエディタを終了させてください。
# 毎分システムのアップデートを実行
*/1 * * * * sudo yum -y update
書き方は以下の通り「*」の位置によって意味するものが違います。
また、上記のように「*」の後ろに「/1」とすることで定期的にコマンドを入力することを示します。ですので、「1時間毎にコマンドを実行する」という設定をしたい場合には次のように記載をします。
# 1時間毎にシステムのアップデートを実行
* */1 * * * sudo yum -y update
「毎週日曜日の0時0分にコマンドを実行する」という設定は以下の通りとなります。曜日については「0」は日曜日を示し、「7」も日曜日を示しますのでご注意ください。
# 毎週日曜日0時0分にアップデートを実行
0 0 * * 0 sudo yum -y update
ちなみに、1分毎にコマンドを実行するようにしても、入力完了後にすぐ実行されるわけではないようですので少し待ちましょう。cronが実行されると次のようにコンソールに表示されます。
新しいメールが /var/spool/mail/ec2-user にあります
上記が表示されたら次を入力して内容を確認しましょう。この「cat」というコマンドはファイルの中身を閲覧するというものです。「cat」の代わりに「vim」などを使用してもファイルの中身を見ることは可能です。
cat /var/spool/mail/ec2-user
おそらく、最後のほうに以下のような記載があるのではないかと思います。これはcronを利用せずにシステムのアップデートを行った場合と同じ内容ですので、cronでもちゃんと実行されていたのが分かります。
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
No packages marked for update
cronの一時停止
一度cronに登録をしても、何か作業をしている間はcronが実行されないようにしておきたい、ということはよくあります(私の場合には、マイクラサーバーに誰もログインしていない場合にEC2インスタンスを自動停止させるスクリプトとか)。
そういった場合には、文頭に「#」を付けてコメントアウトしておきましょう。これはプログラミング時にも使える方法ですので、ぜひ覚えておきましょう。
# 毎分システムのアップデートを実行
# */1 * * * * sudo yum -y update
cronの削除
最後に、cronを削除したい場合について方法を2つご紹介します。
該当する行を削除
複数のcronを登録していて、そのうちの一つだけ削除をするときなどに使います。
やり方は非常にシンプルで、エディタ内で該当する行を削除するだけですが、「crontab -e」を入力した後にエディタを挿入モードにして、該当する行をバックスペースキーまたはデリートキーを押して削除、というのは手間がかかります。
こういった行をまるごと削除する場合には、エディタを挿入モードにせず、カーソルを削除したい行に移動させて「dd」と入力をするだけでカーソルが位置している行が削除されます。
削除後は忘れずに「:wq」と入力をして上書き保存してください。
crontabの削除
もう一つの方法は、crontabそのものを削除する方法です。これは次のコマンドを入力するだけです。
crontab -r
編集時は「-e」で、削除時は「-r」なので、打ち間違いには十分気をつけましょう。
まとめ
cronについては慣れないと少しわかりにくいですが、使えるようになると自動的にコマンドを入力することが可能になりますので非常に便利な機能です。
皆さんも定期的な実行が必要なプログラムなどがあれば、cronを使って自動化をさせてみましょう。
それではまた。
コメント