Linux
 Computer >> コンピューター >  >> システム >> Linux

LinuxでバックグラウンドでBashコマンドを実行する方法

LinuxでバックグラウンドでBashコマンドを実行する方法

ターミナルでコマンドを実行し、それを数分、場合によっては数時間実行して、ターミナルを再び使用できなくなることほど迷惑なことはありません。もちろん、タブを使用することはできますが、それは不格好な解決策であり、作業中に更新を確認したい場合があるため、常に最適であるとは限りません。ここでは、Linuxでバックグラウンドでbashコマンドを実行するいくつかの異なる方法を示します。

コマンドを&で終了

&を使用して、コマンドをバックグラウンドにプッシュする場合 最後にそれを行う簡単な方法です。このようにして、バックグラウンドでコマンドを発行し、実行中のターミナルを引き続き使用できます。ただし、キャッチが付いています。 &を使用する コマンドをあなたから切り離すことはありません。バックグラウンドにプッシュするだけです。つまり、ターミナルを使用しようとしているときに、コマンドがSTDOUTにプッシュしたいものはすべて またはSTDERR 引き続き印刷されますが、気が散る可能性があります。

LinuxでバックグラウンドでBashコマンドを実行する方法
COMMAND &

ターミナルセッションが閉じられると、コマンドは終了します。 jobsを発行してコマンドを強制終了することもできます コマンド、実行中のコマンドの番号を見つけ、killでコマンドを強制終了します 指図。その構文は次のとおりです。

LinuxでバックグラウンドでBashコマンドを実行する方法
kill %1

&を使用する 何かを少し延期する必要があるが、それが永遠に続くとは思わない場合に適しています。

&コマンドの後、それを破棄します

&だけでコマンドを実行する ターミナルウィンドウが開いている限り、それを後ろに押して実行し続けます。ただし、ターミナルセッションが終了しても、このコマンドを一定に実行したい場合は、disownを使用できます。 コマンド。

この方法を使用するには、まず&を追加します 。

COMMAND &

上記のように、&を使用します このコマンドをバックグラウンドにプッシュしますが、ユーザーから切り離すことはありません。 jobsと入力すると、これを確認できます ターミナルに。前に見たように、バックグラウンドで実行されているコマンドが表示されます。

disownと入力するだけです シェルに入れれば、まさにそれができます。 (そして、jobsでこれをもう一度確認できます コマンド。)

LinuxでバックグラウンドでBashコマンドを実行する方法

これで、ターミナルを閉じて、1日を続けることができます。それでもSTDOUTに物事をパイプし続けます またはSTDERR 、ただし、ターミナルを終了して再度開くと、そこには何も表示されません。 topでコマンドをもう一度見つけることができます またはps コマンドを実行し、killで強制終了します 指図。

LinuxでバックグラウンドでBashコマンドを実行する方法

&/ dev/nullを使用したコマンドの後

&を追加する コマンドがコマンドをバックグラウンドにプッシュした後ですが、その結果、バックグラウンドコマンドは、使用中に端末にメッセージを出力し続けます。これを防ぎたい場合は、コマンドを/dev/nullにリダイレクトすることを検討してください。 。

LinuxでバックグラウンドでBashコマンドを実行する方法
COMMAND &>/dev/null &

これにより、端末が閉じたときにコマンドが閉じるのを防ぐことはできません。ただし、前述のように、disownを使用することは可能です 実行中のコマンドをユーザーから遠ざけるため。実行したくない場合は、上記のいずれかの方法で強制終了することもできます。

Nohup、&および/ dev/nullを使用

前のコマンドとは異なり、nohupを使用します コマンドをバックグラウンドで実行し、実行し続けることができます。どのように? nohup HUP信号をバイパスし(信号がハングアップ)、端末がオフの場合でもバックグラウンドでコマンドを実行できるようにします。このコマンドを「/dev/ null」へのリダイレクトと組み合わせると(nohupがnohup.outファイルを作成しないようにするため)、1つのコマンドですべてがバックグラウンドになります。

nohup COMMAND &>/dev/null &
LinuxでバックグラウンドでBashコマンドを実行する方法

今日のLinuxのほとんどのターミナルプログラムには、わずかな労力でバックグラウンドで実行できるようにする機能が組み込まれています。それに加えて、最新のinitシステム(systemdなど)を使用すると、ユーザーは起動時またはいつでもサービスなどのプログラムを開始できます。

それでも、Linux上の一部のプログラムには、デーモンとして実行したり、最新のinitシステムと統合したりする機能がありません。これは本当に不便ですが、すべての開発者が新しい機能を追加するスキルや時間を持っているわけではないため、理解できます。

幸い、nohupのようなコマンド またはdisown はまだ現実であり、このようなプログラムをバックグラウンドに移動する際のギャップを埋めることができます。完璧でも派手でもありませんが、必要なときに仕事をこなしてくれます。

このLinuxの記事を楽しんだら、GoogleアカウントをGNOME Shellに接続する方法、Windowsユーザーに最適なLinuxディストリビューション、知っておく必要のあるLSコマンドなど、他のLinuxコンテンツを確認してください。


  1. LinuxでTeeコマンドを使用する方法

    Linuxシェルでパイプとリダイレクトを使用したことがある場合は、teeを使用する必要がある場合もあります。 ユーティリティ。 ティーは何をしますか? などのコマンド ls 現在のディレクトリの内容が表示されます。つまり、これらのコンテンツをstdout(標準出力)(通常は画面)、より正確には仮想端末ディスプレイに表示します。 のようなコマンド ls > file123 画面には何も表示されません。 signは、すべての出力をstdoutに表示するのではなく、ファイルにリダイレクトします。 file123には、以前に画面に表示されていたコンテンツが入力されます。 ディレクトリ

  2. 「at」ユーティリティを使用してLinuxでコマンドをスケジュールする方法

    忙しいサーバーを初めて管理したとき、人々がサーバーを使用していないときに、サーバーを再起動するのに適切な時間を待たなければなりませんでした。私はこれが午前3時頃に起こったことに気づきました。それから、「これは不便です。サーバーを再起動するためだけに、不当な時間に目を覚ます必要があります」と思いました。 5秒後、私はそれが愚かな考えだと気づきました。 「これはLinuxです。このような単純なタスクを自動化するのは簡単だと確信しています。」したがって、at 発見されました。 ユーティリティは非常に使いやすいです。日時をコマンドラインパラメータとして渡してから、実行するコマンドを1つ以上入力するだ