私はLinuxの世界に非常に新しいです。 LenovoノートパソコンでUbuntu 15.04を実行しています。私の端末エミュレータはGnomeターミナルです。
私はいくつかのことを知っています。 cd Documents/terminalpractice/python_folder
と入力したとします。次に、たとえばtouch askubuntu.py
と入力します。次に、コマンドgedit askubuntu.py
を使用します。
この時点で、テキストエディターのgeditが画面に表示され、好きなだけコードを作成できます。しかし、ターミナルウィンドウで、geditの「プロセス」が実行されていると思いますか?そのため、geditを終了するまで端末を使用できません(保存してから、上部の[X]をクリックします)。
なぜこれが起こるのですか?グラフィカルインターフェイスを使用してフォルダを開き、askubuntu.pyをダブルクリックすると、ターミナルで行われていることに影響を与えることなく、geditで開きます。これが起こる理由を知りたい。
なぜこれが起こるのですか?
ちょうど実行するとき:
gedit filename
プロセスをフォアグラウンドで実行します。バックグラウンドに送信してターミナルの使用を継続するには、次を使用します。
gedit filename &
これ(そしてもちろん上記のもの)はgedit
を端末のサブプロセスとして実行するため、端末を終了するとgedit
も終了することに注意してください。
したがって、「正常に」実行するには、次を使用します。
Nohup gedit >/dev/null &
Nohup
は端末から切り離されたgeditを実行するため、ハングアップの影響を受けません。 >/dev/null
はstdoutを特別な場所dev/null
にリダイレクトし、それによりNohup.out
ファイルの作成を防ぎます。
詳細については、man Nohup
および this の質問を参照してください。
それは正常です。コマンドを実行すると、端末はそのコマンドが終了するまで別のコマンドを取得しません。必要に応じてコマンドを実行する方法は、ALT + F2を押して必要なコマンドを入力することです。
端末でそれを行うと、現在のコマンドの指示が終了するまで、別のコマンドを受け入れません。
ターミナルからフォアグラウンドでgedit
を起動しているためです。この方法で実行するコマンドは、コマンドが完了するまでコマンドプロンプトを独占します。したがって、gedit
によって開かれたウィンドウを終了すると、ターミナルプロンプトが再び機能します。コマンドの最後に&
を付けると、バックグラウンドでコマンドを実行できます。
jobs
コマンドを使用して、起動したすべてのバックグラウンドコマンドを表示できます。
を押すこともできます Ctrl+Z 正常に実行した場合にコマンドを中断するには、bg
と入力して、コマンドをバックグラウンドに送信できます。
テキストモードのプログラムやアプリケーションを実行するようなものです。実行を開始し、アプリケーションの実行が終了するまでターミナル(ターミナルではなく、コマンドインタープリター)を使用できません。たとえば、「nano」を実行すると、同じ動作が見られます(コマンドインタープリターは、アプリケーションの実行中に「離れます」)。
アプリケーション(gedit)が追加のグラフィカルウィンドウを開くからといって、基礎となる基本的な動作は変わりません。
端末でコマンドを起動するとき、&を使用してコマンドインタープリターにコマンドをバックグラウンドで実行するように依頼できます。
gedit blahblah &
コマンドが既に実行されている場合(ターミナルがロックされている場合)、ctrl-z(現在実行中のプロセスを中断します-geditウィンドウが応答しなくなることに注意してください)を押してから、bg
(バックグラウンドへの中断されたプロセス)。