travis.ymlの書き方[随時更新]
対象のブランチを指定する
branches: only: - master - develop
環境変数を操作するためのexportコマンド
bashrcとかに書くんじゃなくて一時的にセットしたい時とか、 shellscriptから操作する時とかに使う。
セットして出力する
export HOGE_APP="hogehogehoge" export | grep HOGE HOGE_APP=hogehogehoge
削除したい時
unset HOGE_APP
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」項目で示されているカレントプロセスが使った時間です
JCPUはttyからってことで実質該当のユーザーが使ったCPUの時間ってことであってるかな。 PCPUはWHATで表示されているカレントプロセスが使った時間。