SSHセッションのリモートシステムでデフォルトのnode.jsサーバーを起動したいと思います。これはうまくいくようです:
nohup node server/server.js & disown
たぶんnohupが必要ではないでしょうか? SIGTERMなどによって終了しないバックグラウンドプロセスを開始する「公式の」方法は何ですか?バックグラウンドプロセスを開始してからセッションを終了し、プロセスを実行し続けたいと思います。
ベストアンサー1
screen
もちろんですtmux
。ただし、接続を切断して再接続したい対話型セッション(通常はリモートシステム)のためのものです。あなたのアプリケーションは一種のサーバーのように見えるので、システムサービス(通常「悪魔「)その逆です。
以下では、使用しているシステムが次のとおりです。システム。次の場所にユニットファイルを作成するだけです/etc/systemd/system/foo.service
。
[Unit]
Description=My foo service
After=network.target
[Service]
ExecStart=/usr/bin/node /absolute/path/to/your/server.js
Restart=always
User=nobody
[Install]
WantedBy=multi-user.target
サービスがディスク上のファイルにアクセスする必要がある場合は、必要に応じてユーザーを変更してください。サービスファイルが準備されたら、次のコマンドを実行してsystemdに設定ファイルを再ロードし、サービスを実行するように要求します。
$ sudo systemctl daemon-reload
$ sudo systemctl start foo.service
システム起動時に自動的に起動しますか?ただアクティブにしてください:
$ sudo systemctl enable foo.service
問題が発生しましたか?次のコマンドを使用して問題を解決できます。
$ systemctl status foo.service
$ journalctl -u foo.service
サービスの終了/終了を防ぐためのあなたの要求について:どんなに言っても非常に難しいようです。ユーザーがアプリケーションを終了する権限を持っていなくても、システムにRAMが不足している可能性があり、RAMを最も頻繁に使用するサービスであるため、Out of Memory Killerがサービスを終了することを決定することもできます。私の提案は、Restart=always
上記の例に含まれている内容を使用して、systemdにクラッシュ/終了時にサービスを再起動させることです。