より多くのプログラムを実行できるように、bashでプログラムを実行して標準出力を無視するにはどうすればよいですか? [閉鎖]

より多くのプログラムを実行できるように、bashでプログラムを実行して標準出力を無視するにはどうすればよいですか? [閉鎖]

私がやりたいことは、内部で新しいプロセスを作成し、私の端末が次の行にあり、bashプロセスが通常私の標準出力を盗むことを除いて、何も起こらなかったかのように振る舞うことです。

今欲しいapt-get updateが、すべてのダウンロードを見るのではなく、いくつかの設定ファイルを編集したいので、vi /some/configこれら2つのことを同時に実行できるはずです。

明確にするために質問する前にいくつかの内容を読んだので、端末が閉じた後もプロセスを維持したいので、[まだ終了していない場合]サブプロセスではないようです。おそらくサブプロセスではないでしょう。シェル、フォークでしょうか?フォークのことですか?このようにフォークするにはどうすればよいですか?

答え1

バックグラウンドでプロセスを実行して同時に他のタスクを続行する方法を探しているようです。これは、コマンドの最後に & 記号を追加することによって行われます。たとえば、実行後数ミリ秒後にsleep 5hバックグラウンドコマンドが実行されている間に別のコマンドを入力できます。端末が閉じた後もプロセスが存続するには、次のようにdisownプロセスを分離する必要があります。リダイレクト。バラよりプロセス管理そして職業管理素晴らしい文書化のため。

あるいは、フォアグラウンドでコマンドを実行した後、別の端末を実行して別の操作を実行することもできます。残りはオペレーティングシステムによって処理されます。

答え2

'</dev/null'は/dev/nullから標準入力を読み込んでいます。入力を正常にリダイレクトします。すぐにEOFを返します。つまり、空のファイルから読み込んでいます。これはSTDINからデータを読みたい場合がありますが、この場合はそうでない場合に便利な慣用語です。

答え3

setsid私はあなたが新しいセッションでプログラムを開始するコマンドを探していると思います。したがって、次のことができます。

setsid apt-get update

apt-get updateそして彼らが沈黙したい場合:

setsid apt-get update >/dev/null 2>&1

利点は、setsidこの方法で開始されたプロセスが端末が閉じられた後も続くことです。

答え4

nohup apt-get update > /dev/null 2> /dev/null < /dev/null & vi /some/config

https://en.wikipedia.org/wiki/Nohup#Overcoming_hanging

技術的には、nohupはstdinが/ dev / nullであることを意味するので、< /dev/nullno

関連情報