Linuxコマンドでdateと入力すれば
「 2015年 6月 8日 月曜日 23:28:40 JST」
のように、日付が返ってくる。
shellでどこまでツールを作れるかtry
今までは主にPHPでツールを作ってきたので、大体の事は問題なくできてきた。
ライブラリなども豊富にあるプログラム言語では、問題などあまり感じたことが無かった。
今回はshellだけを用いて計測ツールを作る上で、どうしてもミリ秒が取得したくなった。
shellと言っても、awkやsedなどの言語も組み合わせで使うことは可能だ。
何故なら大体のターミナルコマンドには常備されているからだ。
今回行いたいことは、「wgetでwebサイトからデータ取得をした際に、どのくらいの時間がかかったかミリ秒単位で計測したい」というものだ。
あっけなく解決・・・?!
すこしググるとLinuxコマンドでのミリ秒取得は、Nオプションを使うことで「ナノ秒」の取得ができる事が判明した。
$ date +%N
> 249158971
$ date +%6N
> 092199
$ date +%3N
> 623
説明するまでもないが、”+%N”で9桁表示のミリ秒が表示され、
”+%6N”で6桁、”+%3N”で3桁という具合だ。
なんて簡単なんだ・・・
想定外の自体が発生
このまま問題なく進む予定だったが、自宅の愛器MacBookAirのターミナルコマンドでは、Nオプションが動作しないことが判明
$ date +%N
> N
なんじゃこりゃ、「N」って表示される・・・文字列扱い・・・どうやらdateコマンドはバージョンによって、Nオプションがないそうだ。
会社のmacでも試したが、OSは最新なのに、dateコマンドは古いバージョン・・・orz
Debian系もCentOS系も問題なくナノオプションが使えるのに、BSD系のmacは使えないという事のようだ。
Macに対応
macは「gdate」というモジュールを使う事でlinuxの「date」コマンドと同じ事ができるようだ。
brew で「coreutil」モジュールをインストールすると、一緒に入るようなので、入れてみる
※brewのインストールは下のURLを参照ください。
http://brew.sh/index_ja.html
$ brew install coreutils
$ gdate +%N
> 436352000
$ gdate +%6N
> 065620
$ gdate +%3N
> 769
できました。
さて、shellでmacとlinuxの分岐でも書くとするか。
0 件のコメント:
コメントを投稿