いますぐ実践! Linuxシステム管理

[バックナンバーのトップへ] [Linux システム管理のトップへ]


いますぐ実践! Linux システム管理 / Vol.097 / 読者数:1014名

こんばんは、うすだです。

自分で言うのもなんですが、毎週毎週、からからに乾いたぞうきんを絞るようにして、 ネタを放出してまいりました。

しかし、当メルマガの本来の目的は、システム管理を任されたけど、 なにをすればいいかのわからない、という迷える小羊なかたのため、 習うより慣れろ的にすぐ実行して試せることを、ご紹介することでした。

というわけで、唐突ではありますが、初心に戻ろうと思います。
自分がシステム管理者として経験した、こうすると便利だったということの中で、 OS やディストリビューションにあまり依存しなかったものを、 なるべくわかりやすく、お送りする所存でございます。

ですので、今までよりも内容に歯応えが感じられないな、 と思われる貴兄もいらっしゃるかもしれません。そのときはご了承ください。

…なんて、風呂敷を広げてしまいましたが、いきなりネタにつまり、 来週早々逆戻りしてしまう、ということが考えられなくもないわけですが…。

まあ、とにかくがんばってまいりますので、
今週も、はりきってるところを見てやってくださいまし。

今週のお題 - 各ユーザのホームの容量を監視する

わたしがシステム管理をほぼ本業としていた頃は、サーバでも、 ディスクの容量が数GB というのが普通でした。(何年前だ…?)
ですので、当然、だれかがディスクを浪費すると、ホームがあふれ出し、 その他大勢のユーザさんが途方に暮れる、という光景が見られました。

現代においては、個人の PC でさえ、数百GB が当たり前となりました。
しかしながら、ディスクはあれば使うものです。それが無限でない限り、 必ずいつかは、容量不足という境地に達してしまうように思います。

クォータを導入して、きっちり上限を定めれば、 あとは自動的に処理されるようになります。しかし、 ソフトリミットがあるといってもあまり融通がききませんし、 抵抗勢力に阻まれて導入自体できないという問題があるかもしれません。

Vol.085 - ファイルシステムの使用量を制限する
http://www.usupi.org/sysad/085.html
Vol.086 - ファイルシステムの使用量を制限する / スーパー
http://www.usupi.org/sysad/086.html

というわけで今週は、ホームを監視して、 浪費しているひとをすぐに発見できるような仕込みをしてみたいと思います。


さて、ファイルシステムの空き容量を知りたいときに実行するコマンドといえば、 df ですよね。

  # df
  Filesystem         1K-blocks      Used Available Use% Mounted on
  /dev/hda2          76095208K 68826576K  3403204K  96% /
  /dev/hda1             51206K    11890K    36672K  25% /boot
  none                 321884K        0K   321884K   0% /dev/shm

こんな感じで、各ファイルシステムの容量と使用量、残りの空き容量などが、 一覧で出力されます。
引数にディレクトリを指定すると、 そのディレクトリが所属するファイルシステムだけを出力してくれます。

  # df /home
  Filesystem         1K-blocks      Used Available Use% Mounted on
  /dev/hda2          76095208K 68826576K  3403204K  96% /

この例ですと、/home は / に含まれますので、/ の結果が出力されます。


かたや、あるディレクトリ以下のディスク使用量を知るためのコマンドといえば、 du ですね。

  # du -sk /home/usu
  232352  /home/usu

-s オプションで合計のみ出力、-k オプションで単位を 1kB に指定しています。 つまり、/home/usu 以下は 232,352 kB の容量があります。

また、複数のディレクトリを指定すると、それぞれの結果を出力してくれます。

  # du -sk /home/*
  169236  /home/jin
  75492   /home/kentaro
  240     /home/test
  ...後略...

ただ、そのままですと、指定した引数の順番で出力されます。
使用量の多い順に並んでいたほうが便利、という貴兄は、 sort コマンドを用いてください。

  # du -sk /home/* | sort -nr
  232352  /home/usu
  169236  /home/jin
  75492   /home/kentaro
  ...後略...

ちなみに、sort のオプションは、-n で数値を対象、-r で逆順、です。
これを、メールで報告させるには、さらに Mail コマンドに渡します。

  # du -sk /home/* | sort -nr | Mail -s "/home usage" root

これを cron で定期的に実行させれば、 それなりには監視していることになりそうです。


ただ、このままでは、ぜんぜん危機的状況でないときも、 定期的にメールが飛んできてしまいます。
できることなら、使用量がある割合以上になったときにだけ報告させて、 メールの量を減らしたいですよね。

しかし、使用% だけを得るには、どうすればいいのでしょうか。
いくつか方法がありそうですが、 ここでは sed コマンドを使ってみようと思います。
先ほどの df コマンドの出力から、必要な行だけを出力します。

  # df /home | tail -1
  /dev/hda2          76095208K 68826576K  3403204K  96% /

ここで、sed コマンドを使って、数字% という文字列の、 数字の部分だけを取り出します。

  # df /home | tail -1 | sed "s/^.* \([0-9]*\)%.*$/\1/"
  96

…おお、取り出せました。
この結果が、ある閾値以上のときだけ、 du コマンドを実行すればいいということになります。


以上をまとめますと、こんなシェルスクリプトになります。

  #!/bin/sh
  [ $# -ge 1 ] && HOMEDIR=$1 || HOMEDIR="/home"
  [ $# -eq 2 ] && HOMETHR=$2 || HOMETHR=95
  HOMEUSE=`df $HOMEDIR | tail -1 | sed "s/^.* \([0-9]*\)%.*$/\1/"`
  if [ $HOMEUSE -ge $HOMETHR ]; then
      du -sk $HOMEDIR/* | sort -nr
  fi

1つでも引数があると、最初の引数をホームディレクトリに設定します。
特に指定しなければ、ホームディレクトリは /home です。
引数が2つの場合は、第2引数を閾値として使います。 そうでなければ 95% に設定します。
変数 HOMEUSE には、先ほどの使用% が入ります。これが閾値以上なら、 ホーム直下の各ディレクトリの使用量を du コマンドで計測します。

ただ、このままでは、標準出力に出力されます。
メールで報告させたい場合は、たとえば以下のようにしてみましょう。

  #!/bin/sh
  [ $# -ge 1 ] && HOMEDIR=$1 || HOMEDIR="/home"
  [ $# -ge 2 ] && HOMETHR=$2 || HOMETHR=95
  [ $# -eq 3 ] && MAILTO=$3  || MAILTO=root
  HOMEUSE=`df $HOMEDIR | tail -1 | sed  "s/^.* \([0-9]*\)%.*$/\1/"`
  if [ $HOMEUSE -ge $HOMETHR ]; then
      du -sk $HOMEDIR/* | sort -nr | Mail -s "$HOMEDIR usage" $MAILTO
  fi

第3引数でメールの宛先を指定します。指定しなければ root 宛にメールが届きます。


以上、ホームの使用量をチェックして、浪費しているひとがいないか確認する方法を、 さらっとご紹介しました。

よくわからんなーという貴兄は、上記でご紹介した、 コマンドライン上で試せるものを、まずは実行してみてください。

ちょっと物足りないなーという貴兄は、チェックする頻度について考えてみる、 というのはいかがでしょうか。(閾値に近いほど頻繁にチェックするとか、 一度メールしたら頻度を下げるとか、まだ考えることがありそうです。)

宿題の答え

先週の宿題は、

  view を使う場合と listen-on を使う場合の利点を、考えましょう。

でした。

view を使う場合の利点は、こんなところでしょうか。

  • ネットワークに関係なく、クライアント毎に、細かく分けられる。
    (listen-on はネットワーク・インターフェース毎。)
  • 1つの設定ファイルにまとめて記述できる。
    (listen-on はそれぞれに設定ファイルが必要。)

かたや、listen-on を使う場合の利点は、こんなところでしょうか。

  • 全く別のプロセスとして動作するため、お互いの情報が漏洩しない。
  • view の中で指定できない設定を行うことができる。
    (options でしか設定できないもの(たとえば blackhole など)や、 ログをそれぞれに分けるなど。)

…あ、あれ、意外と思いつかないものですね。
すみませんが、こんなのはどう? とかありましたら、ご連絡いただけますと幸いです。

今週の宿題

今週の宿題は、

  ホームの残りの空き容量が、指定された kB 以下のときに、ホーム以下
  の各ディレクトリの使用量をメールするスクリプトを作りましょう。

です。

今週のお題では、使用量の割合で判断していましたので、ここでは、 絶対的な空き容量で判断させてみたいと思います。

あとがき

冒頭でえらそーに申し上げましたように、 初心に回帰したつもりの内容をお送りしましたが、いかがでしたでしょうか。
ひとことでも結構ですので、感想をいただけますと、幸いです。

読者のかたには、どうみても玄人さんなひとがいらっしゃいます。
なるべくナチュラルに、ニュートラルにと思いながら、書いていたつもりでしたが、 どうも玄人さんの方々を意識し過ぎて、 ニッチなネタ(?)を追い求めて迷走していたような気がします。

そういう情報は、検索すればそれなりにありますし、逆に、 ちょっとしたスクリプトを書いて楽をする、という情報は、 あまり見当たらないように思います。 (検索にうまく引っかからないだけかもしれませんが。)

ともかく、そういったあたりが、このメルマガを書く動機だったよなぁ、 ということに、今週気づきまして、ちょい路線変更を試みようと思ったのでした。

そもそも、あまり感想などをいただくことがほとんどないのですが、 もしニッチネタのほうがいいよ、というご意見が多ければ、 またぞうきん絞り的内容に戻そうと思います。

しつこいですが、ご意見などありましたら、どしどしお寄せください。
よろしくお願いします。

 

今週も、ここまで読んでいただき、ありがとうございました。
それでは、また来週に、お会いしましょう!

 

「いますぐ実践! Linux システム管理」の解除は、以下からできます。
http://www.usupi.org/sysad/ (まぐまぐ ID:149633)

バックナンバーは、こちらにほぼ全部そろっています。
http://www.usupi.org/sysad/backno.html

「栗日記」−栗の絵を毎日描いてますが、土日はみるひとが少ないなー。
http://www.usupi.org/kuri/ (まぐまぐ ID:126454)
http://usupi.seesaa.net/ (栗日記ブログ)
http://www.fumido.co.jp/kuriniki/ (栗日記ぎゃらりー)


[バックナンバーのトップへ] [Linux システム管理のトップへ]

トップ

バックナンバー
    [日付順] [目的別]

プロフィール

▼ リンク

独学Linux
Linuxデスクトップ環境に関する情報が満載です。 メルマガもありますよ。
Server World
CentOS 6をサーバとしたときの設定例が、これでもかというくらいたくさん載っています。 CentOS以外のディストリビューション(Fedora, Ubuntu)も充実しています。
LINUXで自宅サーバーを構築・導入(Fedora9)
Fedora9のインストールの仕方から管理方法まで、詳しく載っています。 SearchManには情報がもりだくさんです。
マロンくん.NET
〜サーバ管理者への道〜
Linuxをサーバとして使用するための、いろいろな設定方法が載っています。 マロンくんもかわいいです。 なんといっても、マロンくんという名前がいいですね!!
日経Linux
今や数少なくなってしまったLinuxの雑誌。ニュースやガイドもあります。
Linux Square − @IT
@ITが提供する、Linux の情報が満載。 載っていない設定方法はないんじゃないでしょうか。
gihyo.jp…技術評論社
Linuxに限らず様々な技術情報が満載のサイト。 SoftwareDesign誌も、 ソフトウェア技術者は必見です。
SourceForge.JP Magazine
Linux に限らず、オープンソース関連の記事が網羅されています。
ITmediaエンタープライズ:Linux Tips 一覧
Tips というより FAQ 集でしょうか。わからないことがあれば覗きましょう。
IBM developerWorks : Linux
開発者向けですが、勉強になりますよ。
Yahoo!ニュース - Linux
Yahoo!のLinuxに関するニュース一覧です。
栗日記
システム管理とかと全然関係ありませんが、毎日栗の絵を描いています。
システム管理につかれちゃったとき、癒されたいときに、ご覧ください。:-)
WEB RANKING - PC関連
ランキングに参加してみました。押してやってください。

▼ 作ってみました

Add to Google

▼ せんでん




▼ 最近読んだ本

▼ 気に入ってる本