この記事には広告を含む場合があります。
記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
バックグラウンドで実行する方法
PHPやRuby、PythonなどのプログラムやSHELLコマンドをバックグラウンドで実行したいときがあります。並列で処理したいや実行時間が長い処理に有効なため、知っていると重宝するときがあるので確認してみましょう。
実装方法
バックグランド実行したいときはnohupコマンドと「&(アンパサンド)」を利用します。
nohup 実行したいコマンド &
nohupコマンドは、ログアウト時などに送信されるHUPシグナルを受け取らずにコマンドを実行します。「&(アンパサンド)」はコマンドをバックグラウンドで実行します。
つまりnohupコマンドと「&(アンパサンド)」を同時に設定することにより、ログアウトなどによって中断されずに、処理をバックグランドで実行することができます。
サンプルコード
コマンド実行の場合
1 2 3 |
root@localhost:# nohup hogehoge.sh root@localhost:# nohup hogehoge.php & > /dev/null |
PHPによる実行の場合
1 2 3 |
<? shell_exec('nohup hogehoge.php & > /dev/null'); |
留意事項
コマンドやスクリプトで実行を行うと、結果はデフォルトで「./nohup.out」ファイルに出力されます。もちろん以下のようにファイルを指定すれば、任意のファイルに出力することができます。
「output.txt」に出力する場合
1 |
nohup hogehoge.sh & > /output.txt |
ファイルを出力しない場合
1 |
nohup hogehoge.sh & > /dev/null |
Linuxの知識については下記の本も参考になるので、スキルアップにお役立てください。