shellでの条件式

if文を書くときに高級言語よりもだいぶ癖があるので少しずつ書いていく

bracket []

[]はtestコマンドの略, if文で使いやすい

if [ -n “${HOGE_APPLICATION}” ]; then echo “hoge!” fi

-n は non zeroの略なので(1文字以上ならtrueになる)空文字チェックになる。



ブラケット前後の半角スペース必須


## double bracket [[]]

double bracketの方がsingle bracketよりも機能が充実していて&&, ||, Pattern matching, 正規表現などが使えるらしい

使えるのならとりあえずdouble bracketにしておけばいいのかな?



## 引用元

[http://qiita.com/yohm/items/3527d517768402efbcb6]

shellで連続してコマンドを打ちたい時の繋ぎ文字

前提として コマンドは 正常終了時にステータス0 異常終了時は1

を返す

連続してコマンドを打ちたい時の繋ぎ文字としては下記の3つがあり

; && ||

;(セミコロン)

前のコマンドが終わり次第次が実行

&&(アンパサンド2つ)

前のコマンドが0(正常終了)なら次を実行

||(パイプ2つ)

前のコマンドが1(異常終了)なら次を実行

実行した結果に応じて次の処理を変えたい時に使い分ける。

netstatを使って「TCPで繋がる」と思ってるものを確認する

サーバーを作った時に作ったサーバのTCPのレイヤーで接続可能か知りたい時がある。 大体の場合は 「つながる想定(セキュリティの設定とか)なんだけど繋がらない」って時にサーバーに入って確認する

netstat -anp | grep 8080

なんとなく 「誰」 が 「どこに」 どこのポートを使って接続してるのかがわかる

unicornの例

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      18431/unicorn.rb -E

stateはメモしておく

  • ESTABLISHED -> 接続確立済みで現在接続中
  • TIME_WAIT -> 接続終了待ちの状態
  • LISTEN -> 接続可能な状態(待ち受けてる)

ユースケースに則った使い方は別記事にしようと思う

因みに使ってるportを調べたい時は

lsof -i:8080

が便利そうだというのを見つけた。 これはまた別で。

wコマンドでuptime(稼働時間)とか現在時刻とか確認する

topでもいいんだけど 「知りたい情報だけサラっと見たい」ってのもスマートな気がするのでメモ。

$ w

と1文字打つだけ

$ w
 11:44:01 up 246 days, 20:16,  2 users,  load average: 0.00, 0.02, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
surfing pts/0    ***************** 11:35    6:09   0.03s  0.03s -bash
surfing pts/1    ***************** 11:42    1.00s  0.03s  0.00s w

ヘッダ部分

  • 11:44:01 -> 現在時刻,timezoneがずれてないかとか見る
  • up 246 days, 20:16 -> 起動されてから何日経ってるか, 最近rebootされてないかとか見る
  • 2 users -> 今何人ログインしてるか
  • load average: 0.00, 0.02, 0.05 -> 1分, 5分, 15分のロードアベレージ

下段

USER -> ログインしてるユーザー

TTY -> tty

FROM -> アクセス元

IDLE -> アイドル時間(現在時刻-最後にttyアクセスした時間)

JCPUは、TTYから実行されている全プロセスが使った時間であり、PCPUは、「WHAT」項目で示されているカレントプロセスが使った時間です

codezine.jp

JCPUはttyからってことで実質該当のユーザーが使ったCPUの時間ってことであってるかな。 PCPUはWHATで表示されているカレントプロセスが使った時間。