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で表示されているカレントプロセスが使った時間。
freeコマンドでlinuxメモリの状態を確認する
サーバー管理上メモリの使用状況は非常に重要な点となるので
free
コマンドの使い方を整理しておく。
まずはとりあえず
free -h
で状態を見てみる
オプション * -m (メガバイトで表示) * -t スワップも表示 * -s 指定した秒で繰り返し表示 * -h とりあえずざっくり読みやすくしてくれる
$ free -h total used free shared buff/cache available Mem: 3.4G 531M 243M 168M 2.6G 2.3G Swap: 0B 0B 0B
ここで表してるもの Mem:列 total ->実メモリの容量
used -> 実メモリの使用量
free -> 実メモリの空き容量
shared -> 共有メモリ量
buff/cache -> (実メモリの used) - (buffers + cached )
avaliable -> この値は、新しいアプリがスワップせずに使える容量はどれくらいか。といった値を示しているようです
sharedは複数のプロセスで共有されてるメモリ領域 buffとcacheはその名の通りOSが確保しているバッファとキャッシュの領域。 なのでこの領域は事実上プロセスが確保できる領域のはず。
実際の使用メモリ量は
used - buffers - cached
実際の空きメモリ量は
free + buffers + cached
実運用上で最も見ることになるのはこの二つと思われ(保有しているメモリの量とプロセスが使えるメモリ量)
total buff/cache Mem: 3.4G 2.6G
メモ
バッファとキャッシュとは? www.math.kobe-u.ac.jp
Linux(っていうか UNIX かな?) では, 各プロセスにメモリを割り振った残りを バッファ(buffer)とキャッシュ(cache)に利用して, ディスク入出力の負荷を減らしている.
osがよしなにやってくれてる領域で、プロセスから必要になったら解放してくれる。 って認識で合ってるのかな。
CakePHP3でのマイグレーションについて最低限の事だけ書いておく
参考
http://book.cakephp.org/3.0/ja/migrations.html http://qiita.com/ran/items/c45d0228858accea0e86
まずは現在のステータスを確認
bin/cake migrations status
マイグレーションファイルを作成する 引数にカラム名と使える方を渡しておくと雛形作ってくれる
bin/cake bake migration CreateUser name:string age:integer birthday:date time
/app名/config/Migrations/以下にマイグレーションファイル作ってくれる
マイグレーション実行
bin/cake migrations migrate
マイグレーションはバージョン管理されてるのでロールバックとか出来る
bin/cake migrations rollback
カラムの変更をしてみる
動詞(DDL)->対象カラム->TBL名 targetのカラム名
bin/cake bake migration RemoveBirthdayUser birthday
基本的なアプリケーション実装のライフサイクルは tbl作成 -> tbl情報をもとにbakeでcontrollerとmodelを作成するっぽい
CakePHP3でのリクエストパラメータの取り方
基本的な事
HEADER
$this->request->header('X-HOGE');
POST
$this->request->data('postのキー'),
リクエスト(URL)パラメータ
- アプリケーション側で名前つきで扱いたい時のマッピング
/config/routes.php
に
$routes->connect('/hoge/foo/:bar_number', ['controller' => 'Good', 'action' => 'bad']);
/hoge/foo/123 でアクセスされた時に GoodControllerのbadアクションが呼ばれて、
$this->request->param('bar_number');
で取得できる。
GET
$this->request->query('getのキー');