バックグラウンドで実行したいシェルコマンドがあります。これは、コマンドに&
を付加することで実行できるため、バックグラウンドプロセスとして実行されますが、さらに必要です。機能性とそれについてどうするか疑問に思っていました:
service Apache2 start
と同じように、必要に応じて開始および停止できるようにしたいと考えています。これについてどうすればいいですか?コマンドをサービスとして実行できるツールはありますか?
これで少し迷ってしまいました。
ありがとう
daemon コマンドを見てください。これは、任意のプロセスをデーモンに変えることができます。これにより、多くの追加作業を行わなくても、スクリプトをデーモンとして機能させることができます。次のステップは、起動時にそれを自動的に呼び出すことです。それを行う正しい方法を知るには、OS(またはLinuxの場合はディストリビューション)を提供する必要があります。
UNIXシステムは必要な数のプロセスを同時に処理できるため(GUIを使用している場合は、新しいシェルウィンドウを開くだけです)、プロセスをバックグラウンドで実行する必要があるのは、現在のシェルウィンドウを他の目的で使用する必要がある場合のみです。実行し続けるアプリケーションまたはプロセスを実行した後。
commandというコマンドをバックグラウンドモードで実行するには、次のコマンドを使用します。
command &
これは、プロセスが開始されるとコマンドプロンプトに戻る特殊文字です。他のことを行う他の特殊文字があります。詳細は here を参照してください。
この記事に基づく:
http://felixmilea.com/2014/12/running-bash-commands-background-properly/
...別の良い方法は、screen
を使用することです。例:
screen -d -m -s "my session name" <command to run>
画面マニュアル から:
-d -m
デタッチモードで画面を開始します。これにより新しいセッションが作成されますが、アタッチされません。これは、システム起動スクリプトに役立ちます。
つまり、ターミナルを閉じることができます(&
とは異なり)プロセスは実行を継続します
screen
を使用すると、後でセッションに再接続することもできます
Bashを使用した高度なジョブ制御の場合、jobs
bg
およびfg
コマンドを調べる必要があります。
ただし、バックグラウンドでコマンドを実行することにあまり興味がないようです。やりたいことは、起動時にコマンドを起動することです。これを行う方法は、使用しているUnixシステムによって異なりますが、rc
ファミリーのファイル(/etc/rc.local
(Ubuntuなど)。これらには、initスクリプトの後に実行されるスクリプトが含まれています。
出力を/ dev/nullに送信するときにNohupを使用します
Nohup command &>/dev/null &