LinuxでバックグラウンドでBashコマンドを実行する方法
ターミナルでコマンドを実行し、それを数分、場合によっては数時間実行して、ターミナルを再び使用できなくなることほど迷惑なことはありません。もちろん、タブを使用することはできますが、それは不格好な解決策であり、作業中に更新を確認したい場合があるため、常に最適であるとは限りません。ここでは、Linuxでバックグラウンドでbashコマンドを実行するいくつかの異なる方法を示します。
コマンドを&で終了
&
を使用して、コマンドをバックグラウンドにプッシュする場合 最後にそれを行う簡単な方法です。このようにして、バックグラウンドでコマンドを発行し、実行中のターミナルを引き続き使用できます。ただし、キャッチが付いています。 &
を使用する コマンドをあなたから切り離すことはありません。バックグラウンドにプッシュするだけです。つまり、ターミナルを使用しようとしているときに、コマンドがSTDOUT
にプッシュしたいものはすべて またはSTDERR
引き続き印刷されますが、気が散る可能性があります。
COMMAND &
ターミナルセッションが閉じられると、コマンドは終了します。 jobs
を発行してコマンドを強制終了することもできます コマンド、実行中のコマンドの番号を見つけ、kill
でコマンドを強制終了します 指図。その構文は次のとおりです。
kill %1
&
を使用する 何かを少し延期する必要があるが、それが永遠に続くとは思わない場合に適しています。
&コマンドの後、それを破棄します
&
だけでコマンドを実行する ターミナルウィンドウが開いている限り、それを後ろに押して実行し続けます。ただし、ターミナルセッションが終了しても、このコマンドを一定に実行したい場合は、disown
を使用できます。 コマンド。
この方法を使用するには、まず&
を追加します 。
COMMAND &
上記のように、&
を使用します このコマンドをバックグラウンドにプッシュしますが、ユーザーから切り離すことはありません。 jobs
と入力すると、これを確認できます ターミナルに。前に見たように、バックグラウンドで実行されているコマンドが表示されます。
disown
と入力するだけです シェルに入れれば、まさにそれができます。 (そして、jobs
でこれをもう一度確認できます コマンド。)
これで、ターミナルを閉じて、1日を続けることができます。それでもSTDOUT
に物事をパイプし続けます またはSTDERR
、ただし、ターミナルを終了して再度開くと、そこには何も表示されません。 top
でコマンドをもう一度見つけることができます またはps
コマンドを実行し、kill
で強制終了します 指図。
&/ dev/nullを使用したコマンドの後
&
を追加する コマンドがコマンドをバックグラウンドにプッシュした後ですが、その結果、バックグラウンドコマンドは、使用中に端末にメッセージを出力し続けます。これを防ぎたい場合は、コマンドを/dev/null
にリダイレクトすることを検討してください。 。
COMMAND &>/dev/null &
これにより、端末が閉じたときにコマンドが閉じるのを防ぐことはできません。ただし、前述のように、disown
を使用することは可能です 実行中のコマンドをユーザーから遠ざけるため。実行したくない場合は、上記のいずれかの方法で強制終了することもできます。
Nohup、&および/ dev/nullを使用
前のコマンドとは異なり、nohup
を使用します コマンドをバックグラウンドで実行し、実行し続けることができます。どのように? nohup
HUP信号をバイパスし(信号がハングアップ)、端末がオフの場合でもバックグラウンドでコマンドを実行できるようにします。このコマンドを「/dev/ null」へのリダイレクトと組み合わせると(nohupがnohup.outファイルを作成しないようにするため)、1つのコマンドですべてがバックグラウンドになります。
nohup COMMAND &>/dev/null &
今日のLinuxのほとんどのターミナルプログラムには、わずかな労力でバックグラウンドで実行できるようにする機能が組み込まれています。それに加えて、最新のinitシステム(systemdなど)を使用すると、ユーザーは起動時またはいつでもサービスなどのプログラムを開始できます。
それでも、Linux上の一部のプログラムには、デーモンとして実行したり、最新のinitシステムと統合したりする機能がありません。これは本当に不便ですが、すべての開発者が新しい機能を追加するスキルや時間を持っているわけではないため、理解できます。
幸い、nohup
のようなコマンド またはdisown
はまだ現実であり、このようなプログラムをバックグラウンドに移動する際のギャップを埋めることができます。完璧でも派手でもありませんが、必要なときに仕事をこなしてくれます。
このLinuxの記事を楽しんだら、GoogleアカウントをGNOME Shellに接続する方法、Windowsユーザーに最適なLinuxディストリビューション、知っておく必要のあるLSコマンドなど、他のLinuxコンテンツを確認してください。
-
LinuxでTeeコマンドを使用する方法
Linuxシェルでパイプとリダイレクトを使用したことがある場合は、teeを使用する必要がある場合もあります。 ユーティリティ。 ティーは何をしますか? などのコマンド ls 現在のディレクトリの内容が表示されます。つまり、これらのコンテンツをstdout(標準出力)(通常は画面)、より正確には仮想端末ディスプレイに表示します。 のようなコマンド ls > file123 画面には何も表示されません。 signは、すべての出力をstdoutに表示するのではなく、ファイルにリダイレクトします。 file123には、以前に画面に表示されていたコンテンツが入力されます。 ディレクトリ
-
「at」ユーティリティを使用してLinuxでコマンドをスケジュールする方法
忙しいサーバーを初めて管理したとき、人々がサーバーを使用していないときに、サーバーを再起動するのに適切な時間を待たなければなりませんでした。私はこれが午前3時頃に起こったことに気づきました。それから、「これは不便です。サーバーを再起動するためだけに、不当な時間に目を覚ます必要があります」と思いました。 5秒後、私はそれが愚かな考えだと気づきました。 「これはLinuxです。このような単純なタスクを自動化するのは簡単だと確信しています。」したがって、at 発見されました。 ユーティリティは非常に使いやすいです。日時をコマンドラインパラメータとして渡してから、実行するコマンドを1つ以上入力するだ