web-dev-qa-db-ja.com

ターミナルからgeditを開くと、geditを閉じるまで他の目的にターミナルを使用できません。どうして?

私はLinuxの世界に非常に新しいです。 LenovoノートパソコンでUbuntu 15.04を実行しています。私の端末エミュレータはGnomeターミナルです。

私はいくつかのことを知っています。 cd Documents/terminalpractice/python_folderと入力したとします。次に、たとえばtouch askubuntu.pyと入力します。次に、コマンドgedit askubuntu.pyを使用します。

この時点で、テキストエディターのgeditが画面に表示され、好きなだけコードを作成できます。しかし、ターミナルウィンドウで、geditの「プロセス」が実行されていると思いますか?そのため、geditを終了するまで端末を使用できません(保存してから、上部の[X]をクリックします)。

なぜこれが起こるのですか?グラフィカルインターフェイスを使用してフォルダを開き、askubuntu.pyをダブルクリックすると、ターミナルで行われていることに影響を与えることなく、geditで開きます。これが起こる理由を知りたい。

6
themike_b

なぜこれが起こるのですか?

ちょうど実行するとき:

 gedit filename

プロセスをフォアグラウンドで実行します。バックグラウンドに送信してターミナルの使用を継続するには、次を使用します。

gedit filename &

これ(そしてもちろん上記のもの)はgeditを端末のサブプロセスとして実行するため、端末を終了するとgeditも終了することに注意してください。

したがって、「正常に」実行するには、次を使用します。

Nohup gedit >/dev/null &

Nohupは端末から切り離されたgeditを実行するため、ハングアップの影響を受けません。 >/dev/nullはstdoutを特別な場所dev/nullにリダイレクトし、それによりNohup.outファイルの作成を防ぎます。

詳細については、man Nohupおよび this の質問を参照してください。

17
Ron

それは正常です。コマンドを実行すると、端末はそのコマンドが終了するまで別のコマンドを取得しません。必要に応じてコマンドを実行する方法は、ALT + F2を押して必要なコマンドを入力することです。

端末でそれを行うと、現在のコマンドの指示が終了するまで、別のコマンドを受け入れません。

0
userDepth

ターミナルからフォアグラウンドでgeditを起動しているためです。この方法で実行するコマンドは、コマンドが完了するまでコマンドプロンプトを独占します。したがって、geditによって開かれたウィンドウを終了すると、ターミナルプロンプトが再び機能します。コマンドの最後に&を付けると、バックグラウンドでコマンドを実行できます。

jobsコマンドを使用して、起動したすべてのバックグラウンドコマンドを表示できます。

を押すこともできます Ctrl+Z 正常に実行した場合にコマンドを中断するには、bgと入力して、コマンドをバックグラウンドに送信できます。

0
Arronical

テキストモードのプログラムやアプリケーションを実行するようなものです。実行を開始し、アプリケーションの実行が終了するまでターミナル(ターミナルではなく、コマンドインタープリター)を使用できません。たとえば、「nano」を実行すると、同じ動作が見られます(コマンドインタープリターは、アプリケーションの実行中に「離れます」)。

アプリケーション(gedit)が追加のグラフィカルウィンドウを開くからといって、基礎となる基本的な動作は変わりません。

端末でコマンドを起動するとき、&を使用してコマンドインタープリターにコマンドをバックグラウンドで実行するように依頼できます。

gedit blahblah &

コマンドが既に実行されている場合(ターミナルがロックされている場合)、ctrl-z(現在実行中のプロセスを中断します-geditウィンドウが応答しなくなることに注意してください)を押してから、bg(バックグラウンドへの中断されたプロセス)。

0
roadmr