Linux
Node.js
nohup

Node.jsアプリをLinux環境で常駐化させる nohup編

Node.jsアプリを動かすときは、node app.jsnpm startなどのコマンドを実行します。
しかし、コマンド実行したターミナルからログアウトしてしまうと、アプリも終了してしまいます。
AWSでEC2立ち上げて、sshでつないで、npm startして、アプリが動いた!のでsshを切る、とアプリも終了してしまいます。

sshを切ってもアプリを起動しておくには、いくつか方法があります。
その中でも今日はnohupコマンドを使う方法です。

コマンド

常駐化するには以下のようにコマンドを実行してアプリを起動します。

$ nohup node app.js &

nohup command [コマンドの引数]

&によってコマンドがバックグラウンドで実行されます。
nohupをつけることで、ログアウトしてもアプリが実行され続けます。
nohupで実行されたコマンドの、標準出力と標準エラー出力はnohup.outに出力されます。nohup.outはプログラムを実行しているディレクトリに作られます。(書き込み権限がない場合は、$HOMEに作られます。)

出力先を変更する

標準出力と標準エラー出力の出力先を変更する場合は、nohupコマンドを実行する際に以下のようにします。

$ nohup node app.js > out.log 2> error.log &

> out.logで標準出力の出力先がout.logになり、2> error.logで標準エラー出力の出力先がerror.logになります。