hostname コマンドは要注意です。実は結構危険なコマンドです。
引数に文字列を与えると それが ホスト名として設定されてしまいます。当たり前の様ですが、タイプミスでうっかりホスト名の後に文字列を入れて実行した場合の悪影響は莫大です。
一般的なアプリケーションサーバなどは動作しないでしょう。ほとんどが異常終了すると思われます。(2014年5月)
例1:
# hostname testserver # hostname /? # hostname /? |
この例では hostname のヘルプを見るのに誤った引数を与えてます。(正しくは hostname --help あるいは man hostnameです)
通常でしたらコマンドエラーが発生しますが、この例では /? を変更するホスト名としてパラメータを受け付けてしまってます。よってホスト名が /? に設定されています。ホスト名が変更されてしまうため、一般的なアプリケーションサーバは動作しなくなります。
例2:
# hostname testserver # hostname ←全角スペース # hostname |
この例は見た目は分かりにくいのですが hostname の引数に全角スペースが入っています。
hostname コマンド入力時にうっかりと全角キーでも押したのでしょう。
結果としてホスト名が全角スペースに設定され、障害の原因となってしまっています。
回避方法:
ホスト名を確認するには hostname コマンドではなく uname -a コマンドを使用しましょう。カーネル情報などが表示されますが、ホスト名も同時に表示されています。
# uname -a Linux tesetserver 2.6.32-220.el6.x86_64 #1 SMP Wed Nov 9 08:03:13 EST 2011 x86_64 x86_64 x86_64 GNU/Linux |
スポンサード リンク
以上、思いもよらない場所で重大障害の原因が隠れている場合があります。十分に気をつけて、さらに回避できるものは可能な限り回避しましょう。
参考:Redhat Enterprise Linux 6における host コマンドのUsage
Usage: hostname [-v] {hostname|-F file} set hostname (from file) domainname [-v] {nisdomain|-F file} set NIS domainname (from file) hostname [-v] [-d|-f|-s|-a|-i|-y|-A|-I] display formatted name hostname [-v] display hostname hostname -V|--version|-h|--help print info and exit dnsdomainname=hostname -d, {yp,nis,}domainname=hostname -y -s, --short short host name -a, --alias alias names -i, --ip-address addresses for the hostname -I, --all-ip-addresses all addresses for the host -f, --fqdn, --long long host name (FQDN) -A, --all-fqdns all long host names (FQDNs) -d, --domain DNS domain name -y, --yp, --nis NIS/YP domainname -F, --file read hostname or NIS domainname from given file This command can read or set the hostname or the NIS domainname. You can also read the DNS domain or the FQDN (fully qualified domain name). Unless you are using bind or NIS for host lookups you can change the FQDN (Fully Qualified Domain Name) and the DNS domain name (which is part of the FQDN) in the /etc/hosts file. |
[redhat linux 技術ドキュメント トップ]
[FAQ CENTER トップ]