新宿区で働くプロジェクトマネージャーのブログ

新宿区で働くプロジェクトマネージャーのブログ

ヒヤリハットであるうちに。その1:プロンプト

たくさんのサーバやインスタンスのコンソールを同時に開くことって、 システム屋さんなら頻繁にあると思います。 そんな時に、今どのサーバを操作しているんだったかな?って混乱することありますよね。

本番サーバに対してテストサーバの設定を間違ってしちゃったりしたら、 そりゃーヒヤリハットじゃすまされないです。

大概は、そんな事故の前に何かしらの方法で今いるサーバを確認します。

unameコマンドでホスト名を確認する。

例えば、

uname -a

コマンドを使って、今操作しているサーバの情報を見たりします。

AWSのAmazonLinuxAMIの場合は以下のような結果になります。

[ec2-user@ip-172-31-26-155 ~]$ uname -a
Linux ip-172-31-26-155 4.1.10-17.31.amzn1.x86_64 #1 SMP Sat Oct 24 01:31:37 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
[ec2-user@ip-172-31-26-155 ~]$

うーん、これを見てもどのインスタンスなのかわからない。。。

[ec2-user@ip-172-31-26-155 ~]$ uname -n
ip-172-31-26-155

ホスト名が視覚的に理解できるものでなく、 割り当てられたローカルIPアドレスになっていた。 これはAWSが自動で割り当ててるのかな。

ではでは。ホスト名をわかりやすいものに変更。

[root@ip-172-31-26-155 ec2-user]# hostname TASUKU-PROD-WEB

もう一度、サーバ情報を見てみると、

[root@ip-172-31-26-155 ec2-user]# uname -a
Linux TASUKU-PROD-WEB 4.1.10-17.31.amzn1.x86_64 #1 SMP Sat Oct 24 01:31:37 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

ホスト名がわかりやすいもので設定されていていい感じ!

[root@ip-172-31-26-155 ec2-user]# uname -n
TASUKU-PROD-WEB

uname -nならホスト名だけなのでもっとわかりやすい。


プロンプトにホスト名を表示させる

いま操作しているコンソールのサーバ情報を毎回コマンドで確認するのはちょっと面倒。 なので、プロンプトに現在操作しているサーバがわかるように設定しよう!と思います。

プロンプトの表示内容が設定されているファイルを開きます。

[ec2-user@ip-172-31-26-155 ~]$ vim ~/.bashrc

# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

# User specific aliases and functions

上記のユーザホームにある.bashrcファイルでは、 グローバル定義の/etc/bashrcを参照するように記述されている。

/etc/bashrcでは、プロンプトに表示する内容を、PS1という変数で 設定しているので、ユーザホームにあるファイルの末尾に、 へPS1を定義してあげればプロンプトの設定を変更できる。

今回は、 『時間 - ユーザ@ホスト名 - ホームからのディレクトリパス』 といった表記になるように以下を設定。

PS1='[\e[0;37m][ [\e[0;32m]\t - [\e[0;33m]\u@\h - [\e[0;36m]\w [\e[0;37m]]'

結果は、

f:id:utan1999:20160221021946p:plain

とても見やすくて安心して作業できる。 おまけにクライアントのログ機能で記録しておけば、 時間もわかるのでコマンド履歴だけでなく通常のログとして扱える。

事故を未然に防ぐことには、 効率的で生産的な作業にもつながるのだと実感。