最近、Wiki Web開発チュートリアルを完了しました(- http://golang.org/doc/articles/wiki/ ) 。たくさんの楽しみがありましたので、net/httpパッケージでもっと実験したいと思います。
しかし、コンソールからウィキを実行すると、ウィキがコンソールを引き継ぐことに気付きました。コンソール端末を閉じるか、プロセスを停止すると CTRL+Z その後、サーバーが停止します。
サーバーをバックグラウンドで実行するにはどうすればよいですか?その用語はデーモンで実行されていると思います。
これをUbuntu 12.04で実行しています。助けてくれてありがとう。
労力をかけずに起動スクリプトが必要な場合は、upstart
サービスを使用できます。対応するマニュアルページと/etc/init/*.conf
たとえば。そのようなプロセスを作成した後、次を呼び出してサーバーを起動できます。
service myserver start
特定の制限や権限管理など、より多くの機能が必要な場合は、xinetd
を試してください。
次のようにプロセスを開始できます。
Nohup ./myexecutable &
&
は、シェルにコマンドをバックグラウンドで開始し、ジョブリストに保持するよう指示します。一部のシェルでは、親シェルがHANGUPシグナルを使用して終了すると、ジョブが強制終了されます。これを防ぐには、Nohup
コマンドを使用してコマンドを起動し、HANGUPシグナルを破棄します。
ただし、呼び出されたプロセスがHANGUPシグナルを再接続する場合、これは機能しません。
確かに、シェルのジョブリストからプロセスを削除する必要があります。 2つのよく知られたシェルの場合、これは次のように実現できます。
./myexecutable &
disown <pid>
./myexecutable &!
通常、シェルはプロセスのPIDを出力し、kill
コマンドを使用して強制終了してサーバーを停止できます。シェルがPIDを印刷しない場合は、次を使用して取得できます。
echo $!
実行直後。これにより、分岐したプロセスのPIDが出力されます。
Supervisord を使用してプロセスを管理できます。
Ubuntu? upstart
を使用します。
/etc/init
という名前の、ジョブのyour-service-name.conf
にファイルを作成します
start on net-device-up
exec /path/to/file --option
start your-service-name
、およびstop
、restart
、status
を使用できます。