まずは普通に &
通常、以下のコマンドでPHPのビルトインウェブサーバが立ち上がりますが、 Ctrl+C
を押さないと止まりません。
php -S localhost:80
これをバックグラウンドで走らせておきたいケースがありましたので、コマンドの末尾に &
を付けたのですが、 Stopped
になってしまい、なぜか機能しませんでした。
php -S localhost:80 &
[user@xxx host]# php -S localhost:80 & [1] 1502 [user@xxx host]# jobs [1]+ Stopped php -S localhost:80
出力を /dev/null に飛ばす
手動で &
無しで実行してから Ctrl+z
でバックグラウンドに追いやる方法ですと、 Stopped
にならずにうまくいくようですが、自動的にシェル上でこれをしたいので、別法をとります。
php -S localhost:80 >/dev/null 2>&1 &
このように出力を /dev/null
に向けてしまえばOKです。
[root@49289851a9de host]# php -S localhost:80 >/dev/null 2>&1 & [1] 1513 [root@49289851a9de host]# jobs [1]+ Running php -S localhost:80 > /dev/null 2>&1 &
Running
になってますね!
終了したい時は fg #1
などとしてから、 Ctrl+c
で完了です。
確認した環境
- CentOS 7.3 on docker
- PHP 5.4.16