質問: こんにちは。 現在node.jsでのwebアプリバックグラウンドをローカルで作成し、さくらのクラウドに資産を移動させたところです。 そしてnodeコマンドでの起動を確認し、サーバーでの起動も確認できました。 ただ、わざわざSSHでアクセスしていちいち起動をしていなければならない状態ですので、そのまま起動を維持させようと考えております。 調べた結果、ExpressアプリケーションのStrongLoop Process ManagerかPM2を利用するというところまでは調べています。 ですが、エラー時などにログを出すなどしておりますので、**常時稼働状態かつテスト時にログを参照できるようにしたい**と考えております。 まとめますと 1、現在さくらのクラウドで起動させる 2、コンソールを閉じた状態でも常時稼働状態にしておきたい 3、2の状態を維持したままテストを行うときにログを見れるようにしたい この内容で考えていますが、良い方法がありましたらご教授いただければと思います。
回答: 詳しい要件や対象アプリの仕様を知らないので具体的な事は書けませんが・・・ 普通にバックグラウンドジョブとして起動したのではダメなのですか? 起動時に `nohup` を指定するか、普通に起動してからバックグラウンドジョブに変更し、`disown` コマンドを使ってコンソールプロセスから切り離してしまえば、コンソールを閉じても稼働し続けますよ。 以下、ご参考。 ログアウトしてもバックグラウンド ジョブを継続する方法 うっかりnohup無しで長時間かかるコマンドを実行したときに後から終了しないようにする - Glide Note プロセスをバックグラウンドで動かす際の注意点としては、誤動作を避けるために、使わない「入出力」を閉じておくことと、エラーメッセージ等のロギング(ログローテーションを含む)をきちんとやっておくこと。 「テストを行うときにログを見れるよう」にする、という点については、ログ監視の便利なツールも数多くあるけれども、一番手軽なところでは、`tail` コマンドだけで十分かと思います。 以下、ご参考。 tail コマンド | コマンドの使い方(Linux) | hydroculのメモ tailコマンドのオプション「f」と「F」 - Qiita たとえば `tail -F 《ログファイル》` とやれば途中でログローテーションが発生しても最新のログをリアルタイムに出力出来ます。 そのまま画面上で確認することも出来ますし、リダイレクトしてテスト中のログだけを別ファイルにコピーすることも出来ます。 画面上で確認する場合は、適当にENTERキーを連打して画面をスクロール?すれば、過去のログとこれから出力されるログの間に 空白行が入り分かりやすいです。 tailコマンドの出力をgrepすれば、特定の条件のログだけ拾い読み出来ますし、`tail -100F` のように指定すると、末尾100行を表示してから後続のログをリアルタイム出力します。つまり、少し過去の分からログを見ることが出来ます。 慣れれば、とてもお手軽です。