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

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

このガイドでは、Linuxシステムでのプロセス処理におけるシンプルでありながら重要な概念、つまり、プロセスを制御端末から完全に切り離す方法を明らかにします。

プロセスが端末に関連付けられている場合、2つの問題が発生する可能性があります。

  1. 制御端末は、大量の出力データとエラー/診断メッセージでいっぱいです。
  2. ターミナルが閉じられた場合、プロセスとその子プロセスは終了します。

これらの2つの問題に対処するには、プロセスを制御端末から完全に切り離す必要があります。実際に問題を解決する前に、バックグラウンドでプロセスを実行する方法について簡単に説明しましょう。

Linuxプロセスまたはコマンドをバックグラウンドで開始する方法

以下のtarコマンドの例のように、プロセスがすでに実行されている場合は、Ctrl+Zを押すだけです。 停止するには、コマンドbgを入力します バックグラウンドでジョブとして実行を続行します。

jobsと入力すると、すべてのバックグラウンドジョブを表示できます 。ただし、その stdin stdout stderr まだターミナルに参加しています。

$ tar -czf home.tar.gz .
$ bg
$ jobs

アンパサンド、&を使用して、バックグラウンドから直接プロセスを実行することもできます。 サイン。

$ tar -czf home.tar.gz . &
$ jobs

以下の例を見てください。tarコマンドはバックグラウンドジョブとして開始されましたが、プロセスがまだ制御端末に接続されていることを意味するエラーメッセージが端末に送信されました。

$ tar -czf home.tar.gz . &
$ jobs

ターミナルを終了した後もLinuxプロセスを実行し続ける

否認を使用します コマンド。プロセスが起動されてバックグラウンドに配置された後に使用されます。これは、シェルのアクティブリストジョブからシェルジョブを削除するための作業であるため、fgは使用しません。 、bg その特定の仕事に関するコマンドはもうありません。

さらに、制御端末を閉じると、ジョブがハングしたり、 SIGHUPを送信したりすることはありません。 どんな子の仕事にも。

推奨される読み物: リモートSSHセッションとプロセスを実行し続けるための5つの方法

以下のdiswonの使用例を見てみましょう。 bash組み込み関数。

$ sudo rsync Templates/* /var/www/html/files/ &
$ jobs
$ disown  -h  %1
$ jobs

nohupを使用することもできます コマンド。これにより、ユーザーがシェルを終了したときにプロセスをバックグラウンドで実行し続けることもできます。

$ nohup tar -czf iso.tar.gz Templates/* &
$ jobs

制御端末からLinuxプロセスを切り離す

したがって、プロセスを制御端末から完全に切り離すには、以下のコマンド形式を使用します。これは、グラフィカルユーザーインターフェイス( GUI )に対してより効果的です。 )Firefoxなどのアプリケーション:

$ firefox </dev/null &>/dev/null &

Linuxでは、 / dev / null は、書き込まれたすべてのデータを書き留める(削除する)特別なデバイスファイルです。上記のコマンドでは、入力が読み取られ、出力が / dev / nullに送信されます。 。

推奨される読み物: ターミナルセッションを切り離すための10の画面コマンドの例

結論として、プロセスが制御端末に接続されている場合、ユーザーとして、プロセスデータのいくつかの出力行と端末上のエラーメッセージが表示されます。この場合も、制御端末を閉じると、プロセスと子プロセスが終了します。

重要なのは、この件に関する質問やコメントについては、以下のコメントフォームを使用してご連絡ください。


Linux
  1. fgおよびbgコマンドを使用してLinuxバックグラウンドジョブを管理する方法

  2. Linuxでゾンビプロセスを見つけて殺す方法

  3. コマンドを使用してLinuxでプロセスを強制終了する方法は?

  1. LinuxでのChownコマンドとは何ですか?その使用方法

  2. vi を使用して Linux のターミナルでコマンドを編集するには?

  3. コマンドラインからGUI Linuxプログラムを起動する方法はありますが、コマンドラインとは別ですか?

  1. Linux端末の機能とパフォーマンスのバランスをとる方法

  2. Linuxシェルコマンド/スクリプトをバックグラウンドで実行する方法

  3. Linuxテールコマンド:それは何であり、それを使用する方法