一般プログラムをデーモン/サービスとして実行する方法

一般プログラムをデーモン/サービスとして実行する方法

重複の可能性:
実行中のコマンドを終了せずに端末を閉じるにはどうすればよいですか?

私のサーバーはDebianを使用しています。

私はMediaCoreをインストールしただけで、うまくいきます。

今はいつも始めたいと思っています。サービスから始めるか、バックグラウンドでどのように開始できるかを尋ねたいと思います。

始める方法を知っていますが、プログラムが実行されている限り、シェルは役に立ちません。

それでは、サービス/デーモンを実行するときにどのように自動的に実行しますか?

答え1

いくつかのオプションがあります。

最初に画面で実行してscreenから、実行後にCtrl-Aを押して画面を終了できます。後で画面に再接続できますscreen -RR {screen number}。を使って画面番号を知ることができますscreen -ls。 (アクティブ画面が1つしかない場合は、screen -RRもう一度接続してください。)

次に、シェルから始めて&コマンドを追加してバックグラウンドに配置できます。ただし、シェルがコマンドの出力をシェルの周りに広げないように、stdoutとstderrを適切なファイルにリダイレクトしようとしています。私の考えでは

$ command > command.stdout 2> command.stderr &

あなたが探しているもの。

私はMediaCoreを使ったことがないので、それが何を出力するのかわかりません。これは、stdout か stderr のいずれに関係なく、すべての出力をファイルにキャプチャする場合に機能します。

$ command &> command.output &

しかし、長期的にDebianを使用しているので、正しい方法はこれにinitスクリプトを追加することです(@user606723が述べたように)。skeletonスクリプトの1つが/etc/init.d良い出発点になります。

答え2

「screen」を使ってプログラムを実行したり、「hohup」を使って端末から切り離すことができます。

nohup my_app 2>/dev/null 2>&1 & 

または

screen -d -m my_app 

関連情報