GNU/Linux >> Linux の 問題 >  >> Linux

コマンドラインからGUI Linuxプログラムを起動する方法はありますが、コマンドラインとは別ですか?

& を追加 コマンドラインへ:

emacs &

これにより、emacs がバックグラウンドになり、端末を引き続き使用できるようになります。

これにより、emacs が端末のサブプロセスとして残り、端末を終了すると、emacs も終了することに注意してください。これを避けるには、次のように入力します:

(emacs &)

括弧は、端末から emacs プロセスを切り離すように端末に指示します。

それでも、プログラムからの stdout および stderr メッセージは端末に表示されます。これを防ぐには、次を使用します:

(emacs &> /dev/null &)

nohup を使用 .このように:nohup amarok &

これがお役に立てば幸いです。


さまざまなソースからの回答を含む、同様のトピックの古いスレッドへの回答を投稿しました。以下は、このスレッドに合わせた回答のコピーです。

次の作品:

$ (gui_app &> /dev/null &)

これは Nathan Fellman の回答とリダイレクトです。

"&> /dev/null" は、stdout と stderr の両方を null デバイスにリダイレクトします。最後のアンパサンドは、プロセスをバックグラウンドで実行します。コマンドを括弧で囲むと、「gui_app」がサブシェルで実行されます。

これを行うと、このコマンドを実行するコンソールから「gui_app」プロセスが切り離されます。そのため、親端末エミュレーターが動作しているウィンドウを閉じても、「gui_app」は閉じません。これを実行し、「pstree」コマンドでプロセス ツリーを調べたところ、この方法で開始されたアプリケーションが「init」の子プロセスになることがわかりました。

たとえば、

$ gui_app &> /dev/null &

アプリケーションはバックグラウンドで実行されますが、コンソール プロセスの子プロセスになり、ターミナルを閉じると終了します。 (ただし、exit コマンドまたは Ctrl-D を使用して bash 経由でターミナルを終了すると、バックグラウンド プロセスが init に渡されて bash がクリーンアップされます。)

「nohup」はNawaManが提案したように機能しますが、デフォルトでは出力とエラーをファイルにリダイレクトします。 JeffG が回答したように、「disown」コマンド (シェルで利用可能な場合) は、バックグラウンド プロセスを開始した後にプロセスを端末から切り離すことができます:

$ gui_app &
$ disown

(ところで、これはすべてbashに当てはまります。他のシェルには、これを行うための他の方法/構文があると確信しています。)

いくつかの参照:Disowning プロセス (UNIX Power Tools)

複雑なオプションなどを使わずに GUI アプリケーションを呼び出すだけの場合は、"gmrun" や dmenu (警告:大音量のオーディオ) などのランチャーを使用することも適切なオプションのようです。キーの組み合わせにバインドします。ランチャーはまだ使用していませんが、この 2 つを試しました。

注:他のスレッド レポートのコメントにある CarlF は、「gui_app &」メソッドを介して開始された GUI アプリが、親ターミナルを終了しても閉じないことを報告しています。さまざまな方法でターミナルを閉じていたと思います。端末エミュレーターが実行されているウィンドウを閉じていました。彼はシェル (終了コマンドまたは Ctrl-D) を介して端末エミュレーターを終了していた可能性があると思います。これをテストしたところ、CarlF が言うように、bash を終了しても端末のバックグラウンド プロセスとして開始された GUI が停止しないことがわかりました。クリーンアップの機会が与えられると、bash がバックグラウンド プロセスを init に渡すようです。実際、これは、サブシェルで開始されたバックグラウンド プロセスが init に渡されるメカニズムに違いありません。


Linux
  1. Linuxコマンドをバックグラウンドで起動し、ターミナルでプロセスをデタッチする方法

  2. Linuxコマンドラインから直接MySQL/MariaDBクエリを実行する方法

  3. LinuxでターミナルからWebを検索する方法

  1. Linux – GrubコマンドラインからWindowsパーティションを起動する方法は?

  2. LinuxコマンドラインからOpenofficeマクロを呼び出す方法は?

  3. Linux でコマンドライン インターフェイスから TeX を実行する方法

  1. ブートスタック–コマンドラインからGUIを開始する方法は?

  2. Linux のコマンドラインから socket.io websocket にメッセージを送信するにはどうすればよいですか?

  3. Linux コマンドラインからフォルダーをコピーするにはどうすればよいですか?