我在 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,运行一个 bash 脚本,该脚本使用 '&' 来生成 spawnig,但这不起作用。这是这样的:
[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
造成这种情况的可能原因有多种。一个可能的原因是,当您关闭终端时,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> &