nginxコマンドの出力結果をパイプしてみた
by
YouYou
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
nginxコマンドの出力結果を パイプしてみた
Slide 2
Slide 2 text
Name:ユータ Occupation:インフラエンジニア Twitter:@Y0u281 (オーでなくゼロです) ブログ:https://zenn.dev/yuta28 → 普段触るもの:AWS Ansible Linux Mint 自己紹介 Twitter
Slide 3
Slide 3 text
目次 ● 背景 ● 原因 ● やったこと ● まとめ
Slide 4
Slide 4 text
背景 ● 運用しているメディアサーバーの棚卸し ○ Apacheかnginxか ● 出力結果を加工してバージョン情報だけ抽出 $ httpd -v Server version: Apache/2.2.34 (Unix) Server built: Nov 1 2017 18:47:16 $ httpd -v | head -n 1 | cut -f 3 -d " " Apache/2.2.34
Slide 5
Slide 5 text
背景 ● nginxだとうまくいかない🤔 ● ファイルにも出力されない $ nginx -v nginx version: nginx/1.18.0 $ nginx -v | head -n 1 | cut -f 3 -d " " nginx version: nginx/1.18.0 $ nginx -v > test.txt nginx version: nginx/1.18.0 $ cat test.txt $
Slide 6
Slide 6 text
原因 ファイルディスクリプタが違っていた!!
Slide 7
Slide 7 text
ファイルディスクリプタについて ● ファイル操作に割り当てられる整数値 ● 以下が一般的 ○ 0:stdin(標準入力) ○ 1:sdout(標準出力) ○ 2:stderr(標準エラー出力) ● 出力結果を渡すパイプはデフォルトでは標準出力のみ対応 $ httpd -v | head -n 1 | cut -f 3 -d " " Apache/2.2.34
Slide 8
Slide 8 text
やったこと $ nginx -v 2>&1 | cut -f 3 -d " " nginx/1.18.0 書式 説明 コマンド1 | コマンド2 コマンド1 の「標準出力」をコマンド2 の「標準入力」に引き渡す コマンド1 2>&1 | コマンド2 コマンド1 の「標準出力」と「エラー出力」をコマンド2 の 標準入力に引き渡す 引用 Linux - ストリーム、パイプ、リダイレクトの使用
Slide 9
Slide 9 text
まとめ なぜnginxは標準エラー出力? 🤔🤔🤔 ● 標準出力 ● 標準エラー出力 それぞれ引き渡しが異なる
Slide 10
Slide 10 text
ありがとうございました 詳細は私のブログで ↓ nginxコマンドの出力内容をパイプし てみた