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

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

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

会社から支給されているノートPCですが、 ずっと無線LANが使えない状態が続いていました。 (ちなみに、ノリで openSUSE を入れています。)

別途ドライバを入手し、コンパイルして入れてみたりしたのですが、全然動きません。 「ワイヤレスを有効にする」という項目にチェックを入れることすらできませんでした。

ですが、先日、どうしてだかは失念しましたが、 DVDドライブ付近にあるスイッチに目が止まりました。
ずっと、DVDに関連するスイッチだと思い込んでいたのですが、 よく見るとアンテナっぽい絵が描いてあります。

…もしや、と思ってスイッチを反対側に入れてみると… ワイヤレスを有効にできるではありませんか! そして、設定したら、 無線LANで通信が問題なくできるではありませんか!!

というわけで、釈然とはしませんが、ノマドなひとに向けて、 小さな一歩を踏み出すことができたかな、と思っております。

今回得た教訓をあえて表現すると、周囲を見渡せ、でしょうか。

…やや投げやりですが、今回も、それなりにはりきってまいります。

今回のお題 - watch でコマンドを延々と実行する

ディスクが壊れたとか、ネットワークがつながらないなどといった、 明確なトラブルの場合、超迅速に復旧する必要があります。
ただ、原因がはっきりしていることも多いように思います。

ですが、なんだかレスポンスが悪いとか、たまにおかしくなることがあるといった、 微妙な現象の場合、上記ほど早急な解決はしなくてよいのかもしれませんが、 原因もはっきりしないことが多いように思います。

そんなときは、状況を定期的に確認しつつ、問題が発生しないか試す、 ということを行うのではないでしょうか。

その場で、ささっと刹那的に、状況を観察するのに便利なコマンドがあります。 それが、「watch」コマンドです。
今回は、そんな watch コマンドの使い方をご紹介します。

watch コマンドとは?

watch コマンドとは、ある一定間隔ごとにコマンドを実行して、 表示してくれる便利なひとです。たとえば、 dateコマンドを定期的に実行するには以下のように実行します。

  $ watch date

2秒毎にdateコマンドが実行され、表示がその都度更新されます。
(ほとんど意味はありませんが…。)

ちなみに、終了するには Ctrl-c を押します。

デフォルトでは2秒間隔でコマンドが実行されます。 これを変更するには「-n」オプションを使用します。 -nオプションと秒数を指定して実行すると、その間隔ごとに実行されます。 たとえば、5秒毎にuptimeコマンドを実行するには、以下のように実行します。

  $ watch -n 5 uptime

前回実行した結果と違う箇所をハイライトで表示するには、 「-d」もしくは「--differences」オプションを使用します。たとえば、 1秒毎に dateコマンドを実行し、差分をハイライトで表示するには、 以下のように実行します。

  $ watch -n 1 -d date

ただ、dateコマンドの場合、下記のように表示されますが、 先頭の説明と日付の行は要らないかなと思います。

  Every 1.0s: date                       Sun Jul  1 01:44:33 2012

  2012  7  1  01:44:33 JST

そんなときには、「-t」オプションを使用します。たとえば、下記のように実行すると、

  $ watch -n 1 -d -t date

先頭行がなくなって、表示がシンプルになります。

  2012  7  1  01:48:14 JST

Ubuntuなどの場合、他にもオプションがありますが、説明はこのくらいにして、 実際の使用例をご紹介していきます。

よく使う(かもしれない)実行例

それでは、実際によく使う例(ただし主観)を、いくつかご紹介します。
まずは、ディスク容量の確認です。以下では、dfコマンドを10秒毎に実行しています。

  $ watch -n 10 df

ただ、どのくらい減っているか確認したい場合は、whileでぐるぐる回す方が、 前の値も確認できてわかりやすいかもしれません。

  $ while [ 1 ]; do
  > df /
  > sleep 10
  > done

メモリやスワップの状況を確認するには、freeやvmstatなどのコマンドを実行します。 以下では、2つのコマンドをまとめて実行しています。

  $ watch "free; vmstat"

連結されて見にくいなと思ったら、echo などで分けます。

  $ watch "free; echo; vmstat"

ただし、メモリが逼迫しているときに実行すると、 みんなから顰蹙を買う恐れがありますので、注意しましょう。

topコマンドのように、プロセス一覧を確認することも可能です。
たとえば、 RSS(Resident Set Size / 物理メモリの使用量)が大きい順の結果を出力するには、 以下のように実行します。

  $ watch ps aux --sort -rss

また、確立されているTCPのセッションを定期的に確認するのに、 以下を実行することもあります。

  $ watch "netstat -tan | grep ESTABLISHED"

他にも、mailq や ntpq、iostat、mpstat など、いろいろありますね。
(後は、各自でご確認くださいませ。)

 

あと、余談ですが、watch の結果をファイルに残せないかなと思い、 teeコマンドに渡してみたのですが、

  $ watch iostat | tee iostat.log

最初の結果より後は、差分を表示しているようで、中身を確認してみたのですが、 最初の結果以外はよくわからん! といった感じでした。

  $ strings iostat.log

おわりに

以上、watchコマンドの使い方を、さらっとご紹介しました。

システムの状態を定期的に確認したいという場合は、 Munin や Cactiなどの監視ソフトをちゃんと入れるべきだと思います。

それとは別に、その場でちゃちゃっと確認などする場合に、 watch を使うと便利なのではないかと思います。

そんな機会がなくても、ぜひ、試しに実行してみてください。

宿題の答え

前回の宿題は、

  auditctlで未設定のとき、何が記録されるのか確認しましょう。

でした。

…ああ、問題文が曖昧でした。デフォルトだと何が記録されて、 何が記録されないかをはっきりさせたかった、ということです。
デフォルトの状態だと、以下のように、何も設定されていません。

  # auditctl -l
  No rules

ですが、だからといって何も出力されないわけではありません。
…と思って、いろいろ試したり、ソースコードを眺めたりしたのですが、 今のところよくわかっておりません。すみません…。
(今日、半日かけて追いかけて、わかりませんでした…。)

デフォルトは「disabled」なように見えるのですが、 audit_format()などで出力されたものは出力されています。

こちらは引き続き確認しますので、わかり次第ご紹介いたします…。OTZ

今回の宿題

今回の宿題は、

  watch で、一定の回数を実行したら終了するようにしてみましょう。

です。

またしても思いつきな宿題ですが、今度は、できませんでしたにならないよう、 あらゆる手を尽くして実現にこぎつけたいと思います。

あとがき

先週、カメを飼っていたときに使っていた水槽を、解体しました。

カメは、思った以上にフレンドリーで素敵な生き物でした。
ですが、いまの会社に入る前、ヒーターの不具合で超加熱されてしまい、 帰らぬカメとなってしまいました。

水槽自体はいただきものだし、うっかりヒビも入っているし、 もう水槽で生き物を飼うこともないだろうと思い、ようやく重い腰を上げました。

ただ、ネットで調べても、 危ないから業者に頼んだ方がいいという意見のオンパレードで、 具体的な方法にはなかなかたどり着けません。

結局、わずかな情報をもとに、試行錯誤してみることにしました。
そのとき思ったことは、以下の3点です。

  1. 知識だけではわからない、やってみないとわからないことがある
  2. 事前に情報を集めて、あらゆる可能性を考慮して挑んだ方がいい
  3. それでも、思わぬところで想定外のことが起きる

恐々と、それでも結局指を切ったりしながら、 半日かけて解体できた結果わかったことが、上記のような、超当たり前なことでした。

でも、わたしにとっては、それなりに重みのある言葉となりました。
水槽ごときでおおげさだというのはわかっていますが、それでも、 体験をしたからこそ言えるのだと、ちょっと幸せな気持ちで思い返しています。

 

というわけで、読んでわかったと思っても、やったことがなければ、 実際に手を動かしてみてください。

書いてある通りの結果が得られるだけかもしれません。ですが、実行することで、 何かに気づくことができる可能性が少なからずあるはずです。

その可能性に蓋をしたければ、それでも構いませんが、そうでないなら、 ぜひ、やってみましょう。実践! 実践!! 実践あるのみです!!

 

…わたくしごとで恐縮ですが、この土日は風邪で死んでおりました。
そんな日に限って、仕事の対応があったりしますね。
…めげずに、がんばりましょう!

 

今回も、ここまで読んでいただき、たいへんありがとうございました。
次回は、7月15日(日) の未明にお会いしましょう!

 

「いますぐ実践! 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://usupi.org/k/ (モバイル栗日記)


[バックナンバーのトップへ] [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

▼ せんでん




▼ 最近読んだ本

▼ 気に入ってる本