はじめに
PHPで踏み台通してMySQLに接続する際にやったこと。
PECLだと専用関数あるらしいが、ない環境だったためシェルつかってバックグラウンドでやることに。
バックグラウンド実行
変数に格納しているのは、停止のときに使うためです。
php
$cmd = "ssh -f -i /tmp/key.txt ssh_user@host_name";
exec($cmd);
オプション
- [ -f ] バックグランドで実行する
- [ -i ] 秘密鍵を使用する
バックグラウンドの停止
さっきのコマンドを元にPIDを取得して、killする。
php
//開始時に使ったコマンドを元に調べる
$_cmd = "ps aux | grep '[0-9] ".$cmd."' | awk '{print $2}'";
exec( $_cmd ,$output ,$return_var );
//$ouput[0]にPID入っているのでkill
exec('kill '.$output[0]);