端末ウィンドウで実行中のコマンドの分離

端末ウィンドウで実行中のコマンドの分離

リモートセッションを開始するには、Gnomeで次の.desktopファイルを実行します。

[Desktop Entry]
Type=Application
Encoding=UTF-8
Name=xfreerdp RDP
Comment=A sample application
Exec=/usr/bin/xfreerdp +clipboard +smart-sizing -decorations /u:myuser /d:DOMAIN /v:pc.domain.com /f /kbd:0x00000807 /fonts
Icon=/home/user/.local/share/applications/rdp.png
Terminal=true

これにより、セッションパスワードを入力できる端末ウィンドウが開きます。パスワードを入力した後、セッションが開始されます。これで端末を閉じると、リモートセッションも閉じます。

どうすればこれを防ぐことができますか?

これまで試したことは、xfreerdpを直接起動し、「&」を使用してgenerateigを実行するbashスクリプトを実行することでしたが、うまくいきませんでした.次のようになります。

[Desktop Entry]
Type=Application
Encoding=UTF-8
Name=xfreerdp RDP
Comment=A sample application
Exec=/home/user/.local/share/applications/xfreerdp.sh
Icon=/home/user/.local/share/applications/rdp.png
Terminal=true

これはxfreerdp.shスクリプトです:

echo "password:"
read p
/usr/bin/xfreerdp +clipboard +smart-sizing -decorations /p:$p /u:user /d:DOMAIN /v:pc.domain.com /f /kbd:0x00000807 /fonts & 

答え1

これには考えられる理由がいくつかあります。考えられる理由の1つは、端末を閉じるとSTDOUT / STDERRが閉じてプログラムが何かを出力しようとすると、プログラムが終了する可能性があることです。この問題を解決するには、次のコマンドをリダイレクトします/dev/null

/usr/bin/xfreerdp <ARGS> 1>/dev/null 2>&1 & 

しかし、これは必ずしも問題に対する好ましい解決策ではありません(コメントに対するあなたの回答に従って動作していても)。このような状況のベストプラクティスを見つけるには、よく読んでください。

別の考えられる原因は、使用中の端末エミュレータ(xterm/konsoleなど)が送信中である可能性があることです。ため息をつく終了時に子にシグナルを送信し、そのシグナルによって子が終了することがあります。この問題を解決するには、次のコマンドを実行しますnohup

中断の影響を受けないコマンドを実行し、tty 以外のコマンドで出力します。

また、nohup実行するコマンドのSTDOUT / STDERRをファイルにリダイレクトします。マニュアルページから:

       If  the  standard output is a terminal, all output written by the named
       utility to its standard output shall be appended to the end of the file
       nohup.out  in  the current directory. If nohup.out cannot be created or
       opened for appending, the output shall be appended to the  end  of  the
       file nohup.out in the directory specified by the HOME environment vari-
       able.

したがって、このコマンドを使用すると、リダイレクトを実行する必要はありません。

nohup /usr/bin/xfreerdp <ARGS> & 

関連情報