ブロックせずに端末からコマンドを実行するにはどうすればよいですか?


45

Ubuntuでターミナルから多くのプログラムを実行していますが、プログラムを開いた後もターミナルを使用し続けたいと考えています。別のウィンドウを開く必要がないように、プログラムをバックグラウンドに配置するにはどうすればよいですか?

回答:


60

端末プログラムを実行し、端末の使用を継続するには、さまざまな方法があります。

  • 別のターミナルタブを開くことができます(右クリックして、[新しいタブを開く]を選択します)。
  • &実行するコマンドに追加できます。エラーメッセージなど、端末へのテキスト出力は表示されないことに注意してください。
  • 次のように入力することができますCtrl- Zその後、実行しますbg。これは実行と同じ効果がありますcommand &
  • 実行nohup command &してEnterキーを押すことができます。(ccpizzaのおかげで、以下のコメントを参照してください。)

ただし、Alt- F2を押してからGUIからコマンドを実行することは、通常、ベストプラクティスと見なされます。端末はまったくありません。

&(not nohup)を使用する場合、後で実行しない限りdisown、ターミナル閉じるとアプリケーションが終了することに注意してください。

編集:使用nohupすると、ホームフォルダに小さな糞が時々残るようです。通常、端末に記録されていたものは、明らかに〜/のファイルに保存されます。

~~

バックグラウンドでプログラムを実行する簡単な方法はprogram-name & disown、プロセスを強制終了せずに閉じることができる端末にドロップすることです。


4
ターミナルを閉じた後に子プロセスが強制終了しないようにするには、アプリをとして起動しますnohup firefox&
ccpizza

クール!私はそれを知りませんでした(ただし、実験の結果、端末はまだ「ブロック」されています)!
WindowsEscapist

「ブロック」ではなく、「表示」ブロックされるだけです。プロンプトが表示されたらEnterキーを押すと、ブロックされます。
ccpizza

ああ、以前は気づかなかった。
WindowsEscapist

program-name & disown良い解決策です
ヘンリー博士

8

コマンドは&で実行できます。

例えば:

サンダーバード&

詳細はこちらをご覧ください。


これは、ターミナルウィンドウを閉じるまで機能します。ウィンドウを閉じると、プログラムは終了します
-kurdtpage

6

を使用setsidして新しいセッションでプログラムを実行し、&>/dev/nullログメッセージを受信しないようにすることができます。

のようになります

setsid program-name &>/dev/null


クール。ユーザーのログアウトと現在のセッションが閉じられたときにプロセスを実行し続ける必要があります。
ミハイルモスカレフ


0

次のような仮想端末で実行できますtmux(またはscreen、もう保守されていないと聞きました)

# This ataches your terminal to a virtual terminal
tmux
run_your_command
# This detaches your virtual terminal (previous command can be running)
CTRL-b d
run_other_commands # on your terminal
# re-attach the virtual terminal to see the status of run_your_command
tmux a

tmux より多くのことができます。

  • 仮想端末を別の端末に移動します
  • いくつかの端末で仮想端末を共有します(他のユーザーはあなたの行動を見ることができます;-))
  • 「画面」を分割して、複数の端末を作成します。
  • ...

https://www.hamvocke.com/blog/a-quick-and-easy-guide-to-tmux/

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.