password

2011年12月4日日曜日

crontabの設定

サーバーとして使う場合、指定時間でシャットダウンさせたいときなどに、windowsのtaskに似た機能を実現するのが、crontabです。いろいろなサイトに使い方が載っているのですが、どうもうまく動きません。
Linuxの常識が十分理解できていないことが原因なのでしょうが、Windowsと異なる権限やファイルの属性の問題などで、面倒です。定時にシャットダウンさせたいという目的で、crontab -e というコマンドで設定ファイルを書けばいいのですが・・・。そこで、Linux専門家には「掟破り」と言われますが、自分のマシンは自分の自己責任で扱う、というWindowsの流儀で、便利な方法を使うことにしました。
それは、etc/にあるcrontabファイルに直接書き込むという方法です。crontabというのは、コマンドでもあり、ファイル名でもあります。ユーザー毎にcrontabというファイルがあるようなのですが、どこにあるのか分からず、crontab -eで作成しても、保存先が分からないので、このような荒業?を使いましたが、問題なく動きました。
1. アクセサリのターミナルを起動します。
2. sudo su でパスワードを入れてsudo gedit でエディターを起動します。
  こうしないと、ファイルの編集を保存できません。
3. geditが起動したら、etcにあるcrontabファイルをドラッグします。
  場所を指定して開くこともできます。でも、見えているアイコンをドラッグして開けます。
4. etcにあるcrontabファイルに、以下の記述を追加します。
  30 23 * * * root /sbin/shutdown -h now
  これは、毎日23時30分に、root権限でシャットダウンコマンドを実行する、という意味です。
  もともとのcrontabファイルには、20行くらいの記述がありますが、その最後に付け加えれば良いです。
  ユーザー毎に記述するcrontabには、ユーザー名(ここではroot)は記述しませんが、etcにあるcrontabには必要なようです。




自動的に電源を入れるのは、OSが起動していない状態では不可能ですが、Dellのデスクトップやサーバーマシンには、マザーボードのBIOSの設定で可能です。Dellを愛用する理由の一つに、Dellのマザーボードにはこの機能があります。BIOSを調べてみてください。
ここでの注意は、時間の設定です。日本のパソコンの時間は、世界標準時より+9時間ずれているので、実際に電源を入れたい時刻よりも-9時間ずらして設定する必要があります。これはシステム時刻と言って、世界中のマシンに共通のものです。
これで、サーバーとして、自動的に起動し自動的に終了する設定ができます。