BASH_VERSION

表題の通り、”bash“の”version“について。

■ 環境

  • Mac OSX El Capitan
  • Ubuntu 16.04

■ BASH_VERSION

`bash`のversionを得る為には変数として入っているらしい。

Macで実行。

$ echo ${BASH_VERSION}
3.2.57(1)-release
$

Ubuntu 14.04で実行。

$ echo ${BASH_VERSION}
4.3.48(1)-release
$

他にもショートカットキー(?)があるようだ。

control + X
control + V

Macで実行。

$
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin15)
$

Ubuntu 16.04で実行。

$
GNU bash, version 4.3.48(1)-release (x86_64-pc-linux-gnu)
$

以上。

VIPの数が一致しない

keepalived“を使っていて設定を変更した際に、表題を意味するような警告メッセージが出力されていた。

■ 環境

  • Keepalived 1.2.13
  • CentOS 6.9

■ keepalived.con

keepalived“で冗長構成を取っている2台で、Virtual IPを複数つけている。そのうちのひとつが不要になったので”BACKUP STATE“の”keepalived.conf“にある”virtual_ipaddresses“からIPを外し`service keepalived reload`たところ、”/var/log/messages“に下記のようなメッセージが出力されていた。

Oct 20 19:03:44 host002 Keepalived_vrrp[3379]: receive an invalid ip number count associated with VRID!
Oct 20 19:03:44 host002 Keepalived_vrrp[3379]: bogus VRRP packet received on eth0 !!!
Oct 20 19:03:44 host002 Keepalived_vrrp[3379]: VRRP_Instance(V_EXT) ignoring received advertisment...

どうやら”virtual_ipaddress“の個数が違うのが原因のようである。現状”MASTER STATE“となっているホスト側でも同じ処理をしたところメッセージ出力は止まった。次からは同時にやってしまうことにする。

以上。

readlink -f

表題を忘れやすいのでメモ。

■ 環境

  • Amazon Linux

■ readlink

ファイルやディレクトリの絶対パスが取得したい時がある。シンボリックリンクだったり、スクリプト中の実行ディレクトリの場所だったり。そんな時に使ってる。

$ readlink -f .
/home/ec2-user
$

上記の使い方であると`pwd`と一緒なので特に意味がない。下記のような場合に本領を発揮する。

$ pwd
/etc/rc5.d
$ ls -l S99local
lrwxrwxrwx 1 root root 11 Oct  1 08:54 S99local -> ../rc.local
$ readlink -f S99local
/etc/rc.d/rc.local
$

以上。

colordiff

先日表題のコマンドを知ったので試してみた。

■ 環境

  • colordiff 2.8.1
  • Mac OSX El Capitan

■ colordiff

インストール。

$ brew update
$ brew install colordiff

インストールされたものを確認する。

$ brew ls colordiff
/usr/local/Cellar/colordiff/1.0.18/.bottle/etc/colordiffrc
/usr/local/Cellar/colordiff/1.0.18/bin/cdiff
/usr/local/Cellar/colordiff/1.0.18/bin/colordiff
/usr/local/Cellar/colordiff/1.0.18/share/man/ (2 files)
$

これを見て`cdiff`コマンドは、`colordiff`コマンドのaliasかと思ったのだがどうやら違った。使い方が少々違う。下記のようなファイルで試してみた。

$ cat test1
aaa
bbb
ccc
ddd
eee
fff
ggg
$ cat test2
aaa
bbb
ccc
ddd
ddd
eee
fff
ggg
$

通常の`diff`コマンドで試す。

$ diff test1 test2
4a5
> ddd
$ diff -u test1 test2
--- test1    2017-10-17 11:18:51.000000000 +0900
+++ test2    2017-10-17 11:18:59.000000000 +0900
@@ -2,6 +2,7 @@
 bbb
 ccc
 ddd
+ddd
 eee
 fff
 ggg
$

`colordiff`コマンドでは上記がカラー表示された。満足である。`cdiff`でも同じことができるのかと思いきや、、下記のようになってしまった。

$ cdiff test1 test2
aaa
bbb
ccc
ddd
eee
fff
ggg
aaa
bbb
ccc
ddd
ddd
eee
fff
ggg
$

単純に`cat`で連結されただけのように見える。どうやら使い方が違うようである。

$ diff -u test1 test2 | cdiff

これで同じ結果が得られた。

以上。

server_names_hash_bucket_size

nginxで表題に関するwarningが出ていた。

■ 環境

  • nginx 1.12.1
  • CentOS 6.9

■ server_names_hash_bucket_size

設定を変更したので`configtest`で確認してみたところ、下記のwarningが出力されていた。

$ /usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/etc/nginx.conf
nginx: [warn] could not build optimal server_names_hash, you should increase either server_names_hash_max_size: 512 or server_names_hash_bucket_size: 64; ignoring server_names_hash_bucket_size
nginx: the configuration file /usr/local/nginx/etc/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/etc/nginx.conf test is successful
$

今回大量に”server“コンテキストを追加していたので、”server_names_has_max_size 512“に引っかかったのかと思ったが、大量とはいえどもそこまで追加していない。どうやら”server_names_hash_bucket_size 64“の方に引っかかっていたようである。”server_name“に長い名前が付いているとこのメッセージが出るようだ。

nginx.conf“の”http“コンテキストに下記を追加したところwarningは出力されなくなった。

server_names_hash_bucket_size 128;

以上。