GNU/Linux >> Linux の 問題 >  >> Linux

Golang Web サーバーをバックグラウンドで実行するにはどうすればよいですか?

シンプルで使えるものを第一に

あまり労力をかけずに開始スクリプトが必要な場合 (つまり、プロセスを処理し、システムによって管理されるだけ)、 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 を使用してプロセスを管理できます。


Linux
  1. Linux –実行中のプロセスの壁掛け時計の時間を取得する方法は?

  2. cPanelWebサーバーでホスト名を変更する方法

  3. UbuntuにApacheWebサーバーをインストールする方法

  1. バックグラウンドプロセスのプロセスIDを取得するには?

  2. 長時間実行されている Linux プロセスの開始時刻を取得するには?

  3. LinuxでTomcatサーバーを起動するには?

  1. Linuxコマンドをバックグラウンドで起動し、ターミナルでプロセスをデタッチする方法

  2. 特定のプロセスで実行されるユーザー、pid、およびコマンドのみを取得するにはどうすればよいですか? (Ubuntu 11.10)

  3. メール サーバーにメールが届いたときにスクリプトを実行する方法は? (デビアン)