treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

※https化しました。その影響でしばらくリンク切れなどがあるかもしれませんが徐々に修正していきます。 リンク切れなどのお気づきの点がございましたらコメントなどでご指摘いただけますと助かります。

hostnameとunameちょっとした違いだけど?

「hostnameコマンドは使わないでいただけますか?」

ん?突然どうしたの?
ある日突然、チームメンバーからこのように言われました。

「うちの伝統なんです。使うコマンドはunameコマンドにしてください。」

その理由は…

まず、冒頭の理由に入る前に、各コマンドを理解しておきましょう。

hostnameコマンド

Windowsでも使えるhostnameコマンド、単体で実行するとコンピュータ名を表示してくれます。いちいちコンピュータ(システム)のプロパティ画面を開かず(※)にコンピュータ名を確認できるので便利。
※sysdm.cplでシステムのプロパティ画面を表示すればコンピュータ名の表示がされますが、hostnameだとコマンドプロンプト画面にコンピュータ名だけが表示されるから画面を開く閉じるの動作がないという点で便利。

Linux にも当然このコマンドがあります。Windowsよりちょっと高機能。

  • -a:ホストのalias名があればそれを表示するオプションです。
  • -d:そのホストのDNSのドメイン名を表示する(FQDNのホストを除いた部分)
  • -f:FQDNでホスト名を表示、要するにフルネームを表示します。
  • -i:IPアドレスの表示、たぶんhostsファイルで設定しているIPアドレスなのでifconfigで実際に使うIPアドレスとは違うことも
  • -s:短いホスト名を表示、無印で実行したコンピュータ名表示とほぼ同じ(たぶんhostsファイルの短いホスト名を参照している)
  • -y:NIS情報を表示する(NISをつかったことないからわかんないっす)

と、このようにホスト名に関する情報表示を実行してくれます。ただしこのhostnameコマンド、
「hostname %変更したいホスト名%」
として実行するとroot権限が必要とはいえ、ホスト名を変更してくれます。

unameコマンド

unameはWindowsにはないLinux固有のコマンドです。そのためWindowsユーザにはあまり馴染みがないのですが、システム情報を表示する際にはかなり多用するコマンドとなります。基本Debianベースの話です。

  • -m:コンピュータの種類を表示、「x86_64」みたいな感じで表示されます。「--machine」でも同じオプションになります。
  • -n:ホスト名を表示、「hostname -s」と同じ(だと思う。)意味。「--nodename」でも同じオプションになります。
  • -r:OSのリリース番号を表示する。「--release」でも同じ意味
  • -s:OSの名称を表示する…けどDebianとか表示されるかと思ったらLinuxとしか表示されないけど。「--sysname」でも同じオプション
  • -v:OSのバージョンを表示します。でもJessieだから8.xと表示されるわけじゃなく、「#1 SMP Debian 3.16.36-1+deb8u2 (2016-10-19)」という感じで表示されます。逆に数字が見たい場合「cat /etc/debian_version」で確認っす。
  • -a:unameのオプションで表示される情報を全部表示します。「--all」と同じオプションです。

※オプションを付けない場合の実行は「uname -s」と同一になります。

OSバージョンを見たい時って、例えばDebian Wheezyだとバージョン7なので「7.x」ってのを期待してしまいますが、unameではこの数字が表示されない、ってところが面食らうかもしれませんね。

f:id:treedown:20170215134020p:plain

これを踏まえまして

冒頭の「ウチの伝統でhostnameコマンドを使わない理由は…」に戻りますが、

「理由は、ですね。」

続いた言葉は、それほど深刻ではないような表情なので、内心ギクッとしていたんですが、よかった。

「簡単にいうと、操作ミスでhostnameコマンドを誤動作させてホスト名を変更してしまった、という事例が昔ありまして。
で、ですね。その時のリーダーから
「hostnameコマンドは万が一でもホスト名を変更してしまうことがあるから使用禁止な。」
って言われたんですよ。
それ以来、ウチのチームではhostnameコマンドを使わず、unameコマンドで確認をするように統一しています。」

あー、なるほど。

rootで作業することがあるから、当然hostnameコマンドを誤動作させてホスト名が変わる、ってことはあり得る話なんだ。でもunameコマンドなら情報表示しかそもそもできないから万が一ってのはないよね、って話なのね。

これ以降、できるだけunameコマンドを使うようになりました。
でもWindowsならhostnameコマンドでもいいよね。