バックグラウンドで「apt-get install」を実行するにはどうすればよいですか?


17

コマンドでnsnakeなどのパッケージをインストールしようとする sudo apt-get install nsnake &と、プロセスがすぐに停止します。フォアグラウンドに持ってきて、sudoパスワードを入力し、一時停止(Ctrl-でZ)して、バックグラウンドに送り返すことができます。しかし、その後、シェルはすぐにプロセスを一時停止します。たとえば、

katriel@caseylaptop:~$ bg     
[2]+ sudo apt-get install nsnake &   
[2]+  Stopped                 sudo apt-get install nsnake

パッケージをバックグラウンドでインストールすることは可能ですか?SSHを使用しているコンピューターに大きなパッケージをインストールしているときに、これを行うことができます。

回答:


30

はい、そうです。

派手なことでapt-getコマンド実行します

sudo bash -c 'apt-get -y install guake >/dev/null 2>&1 & disown'

部品の説明:

  • sudo bash -c一部スポーン新しいbashプロセス、および実行apt-get -y install guake >/dev/null 2>&1 & disownその新しいシェルの内側。

  • これらのコマンドは、新しいサブシェル内で実行されます。

    • apt-get -y install guake:実行するメインのapt-getコマンド。

      • >/dev/null 2>&1 パイプstdoutとstderrを/ dev / nullにパイプします。
    • & disown 前のジョブを否認し、サブシェルを終了します。

「はい」です -yスイッチを使用するときに必要ですか?
user31389 14

@ user31389:厳密にはありませんが、インストール中にパッケージにさらにプロンプ​​トが表示される場合に役立ちます。
キリ14

これがなぜ機能するのか(そしてなぜそれが必要なのか)を理解するのは本当に素晴らしいことです。
カトリエル14

@katriel:説明するのはそれほど簡単ではありません。しかし、私は答えの中で説明を試みました。
キリ14

1
@katriel:Ctrlキー+ Zがためです一時停止し、それが一時停止されている意味は、次のコマンドを(一時停止)。
キリ14

17

私は常にスクリーンを使用してバックグラウンドでプログラムを実行するのが好きです。


2
画面の場合は+1。すばやく繰り返しパスまたはファイルのセットにアクセスする必要があるときには、IRCクライアントのように、または複数のSSH接続の代替として、随時アクセスしたいバックグラウンドプログラムのための使用と偉大に簡単です
Pichan

4
これは理論的には質問に回答するかもしれませんが、回答の重要な部分をここに含め、参照用のリンクを提供することが望ましいでしょう
blade19899 14

1
私はスクリーンよりもtmuxが好きです。
マイケル14

9

アンパサンドを追加する &実行するための任意のプログラムを、プログラムの実行中にプロンプトに戻るには、など

sudo apt-get -y install nsnake &

ただし、シェルで特定のイベントと通知が定期的にポップアップする場合があります。これらのイベントを非表示にするには、それらを標準出力にパイプします

sudo apt-get -y install nsnake >/dev/null &

1
イベントが問題でした。解決策は、それらを標準出力にパイプすることです。
カトリエル14

-1

これは回避策ですが、まずsudoで何かを実行します(例:)sudo ls。sudo認証はしばらく記憶されます。その後、実行するだけでsudo apt-get -y install nsnake &、2回目のパスワード入力を求められることはありません(時間が経過して認証が期限切れにならない限り)。


それでもプロンプトでyを入力する必要がありますが、それはあなたの命令ではできません。
キリ14

@ minerz029ああ、そうだね。修繕。
user31389 14

仕事をフォアグラウンドに持っていく場合にも行う必要がないので、sudo許可も「Y / n」プロンプトも干渉しないと確信しています。
カトリエル14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.