シンプルで使えるものを第一に
あまり労力をかけずに開始スクリプトが必要な場合 (つまり、プロセスを処理し、システムによって管理されるだけ)、 systemd
を作成できます。 サービス。それを行う方法の詳細な説明については、Greg の回答を参照してください。その後、サービスを開始できます
systemctl start myserver
以前は xinetd
を試すことをお勧めしました または、リソースと権限の管理に関するより細かい粒度のために同様のものがありますが、systemd は既にそれをカバーしています。
シェルの使用
次のようにプロセスを開始できます:
nohup ./myexecutable &
&
バックグラウンドでコマンドを開始するようにシェルに指示し、ジョブ リストに保持します。一部のシェルでは、HANGUP シグナルを使用して親シェルが終了すると、ジョブが強制終了されます。これを防ぐには、nohup
HANGUP シグナルを破棄するコマンド。
ただし、呼び出されたプロセスが HANGUP シグナルを再接続する場合、これは機能しません。
確実にするには、シェルのジョブリストからプロセスを削除する必要があります。よく知られている 2 つのシェルの場合、これは次のように実行できます:
バッシュ:
./myexecutable &
disown <pid>
zsh:
./myexecutable &!
バックグラウンド ジョブの強制終了
通常、シェルはプロセスの PID を出力し、kill
を使用して強制終了できます。 コマンドを実行して、サーバーを停止します。シェルが PID を出力しない場合は、
echo $!
実行直後。これにより、フォークされたプロセスの PID が出力されます。
Supervisord を使用してプロセスを管理できます。