回答:
コマンドを実行する前&
に、コマンドラインに追加してバックグラウンドで実行できます。
long-running-command &
コマンドを開始した後、を押しCtrlZてコマンドを中断bg
し、バックグラウンドに置くことができます。
long-running-command
[Ctrl+Z]
bg
find ...
最初にコマンドをデバッグしてからバックグラウンドで実行したい場合があります。この場合、-name
オプションがありませんでした。
これは、プロセスをバックグラウンドに送信する以外に、テキスト出力が端末を汚すことを心配する必要がないため、すべてのお気に入りです。
nohup command &
これは、プロセスをバックグラウンドで実行するだけでなく、ログ(nohup.out
現在のディレクトリで呼び出されます(それが不可能な場合はホームディレクトリ)を生成します)親は、殺されるとシグナルを送ります(つまり、ログアウト、親へのSIGHUP、または現在のシェルのクローズ)。
他にも呼ばれますdisown
が、それはメソッド自体ではなく、他の回答の拡張です:
command & # our program is in background
disown # now it detached itself of the shell, you can do whatever you want
これらのコマンドでは、ハック的な方法を使用しない限り、プロセス出力を簡単に回復することはできません。
nohup
ジョブ制御シェルには愚かです。最新のシェルはHUP
バックグラウンドプロセスに送信しません。一意のファイル名へのリダイレクトは、わずかな代償です。
command > file.log 2>&1 & disown
少し長いですnohup command &
が、@ chicksが示唆していたことだと思います。
これはおそらくあなたが望むものです
my_command > output.log 2>&1 &
これによりコマンドが開始され、stdoutとstderrの両方output.log
が指定可能なものにリダイレクトされます。出力をまったく保存したくない場合/dev/null
は、実際のファイルの代わりに使用できます。
&
バックグラウンドでコマンドを実行し、実行中にコマンドの入力を継続できるようにします。
2>&1
すべての出力がキャッチされるように、stderrをstdoutにリダイレクトします。
また、このようなコマンドを実行すると、次のようなカーネルから確認を取得する必要があります。
[2] 1234
これは、プロセスがバックグラウンドで実行され、そのIDが1234
であるため、必要に応じて後で終了できることを意味しますkill -9 1234
2>&1
、コマンドが失敗し、場合によってはエラーが出力される可能性があるため、非常に重要です!
$ tmux new -d 'longrunningcommand'
バックグラウンドに「&」を使用する他の回答は機能しますが、stdout(およびstderr!)をリダイレクトする必要があります。そうしないと、出力はシェルに直接送られ、他の出力と混合されます。
バックグラウンド処理は、長いコマンドを実行してログアウトしたり、切断されたりした場合にも失敗します。システムはジョブを強制終了します。
screenまたはtmuxに慣れていない場合は、基本的にシェルから完全に切り離すことができます。プログラムをバックグラウンド化する代わりに、シェル全体をバックグラウンド化します。その後、別のコンピューターからでも、後で元に戻すことができます。どちらにも、このユースケースを超えて役立つと思うかもしれないし、そうでないかもしれない多くの機能があります。
Screenは、試行された古いプログラムです。tmuxはずっと若いですが、スクリーンの過去から学んでいます。
(完全を期すため、すでに回答済み:)コマンドの&
後に追加することにより、コマンドをバックグラウンドに配置します。
long_command with arguments > redirection &
あなたの質問の他の部分に対処するために、この回答を追加しています:
進行中のバックグラウンドコマンドを表示するためのスピナーに相当するものはありませんが、jobs
またはを入力してバックグラウンドコマンドのステータスを確認できますjobs -l
。バックグラウンドコマンドが表示され、コマンドが実行されているか、シグナル(例^Z
:)で停止しているか、インタラクティブな入力を待っているために時々停止しているかが表示されます。
long_command with arguments &> redirection &
stderr
あまりにもリダイレクトするには
を使用してプログラムをバックグラウンドで実行できます&
。たとえば、たとえば実行yum install XyZ
する場合は、次を実行できます。
yum install XyZ &
stdout
プログラムから、または出力を使用してリダイレクトすることができ>
、ファイルを上書きするか、>>
ファイルに追加します。たとえばyum
、ファイルにログインする場合yum.log
:
yum install XyZ > yum.log &
または、出力を既存のファイルに追加する場合log
:
yum install XyZ >> log &
エラーはstderr
でなくstdout
に出力され、同じ方法でファイルにリダイレクトできますが、次を使用し2>
ます:
yum install XyZ 2> errors
yum install XyZ 2>> errors
stderr
との両方をリダイレクトする場合はstdout
、次を使用できます&>
。
yum install XyZ &> output
yum install XyZ &>> output
&
後に記号を付けるだけで、バックグラウンドでコマンドを実行できます。
例えば:
areallylong_command &
バックグラウンドで実行します。
さらに、stdout / stderrを適切なファイルにリダイレクトして、何かをしているときに端末に表示されないようにすることができます。
詳細はこちらをご覧ください:http : //tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-3.html