注销后允许程序继续运行
外观
默认情况下,systemd 包不会在注销时终止用户进程。请参阅 systemd/User#Kill user processes on logout。
有几种方法可以让程序在注销后继续运行
- 使用 nohup(1) GNU coreutil
- 使用 Bash/Zsh shell 内建命令
disown - 使用 终端复用器,还可以让你重新连接到已分离的会话。
- 使用 dtachAUR/abduco
X 应用程序
由于 xmove 已停止维护,你可能需要使用其他方法。
二级 X 服务器
创建一个包含以下内容的脚本,并使其 可执行。
#!/bin/sh
if [ $# -eq 0 ] ; then # check to see if arguments are given (color depth)
a=24 # default color depth
else
a=$1 # use given argument
fi
if [ $a -ne 8 -a $a -ne 16 -a $a -ne 24 ] ; then
echo "Invalid color depth. Use 8, 16, or 24."
exit 1
fi
for display in 0 1 2 3 4 5 ; do
if [ ! -f "/tmp/.X$display-lock" ] ; then
exec startx -- :$display -depth $a -quiet
exit 0
fi
done
echo "No displays available."
exit 1
执行这个小脚本将启动一个新的 X 服务器。然后,你可以简单地启动你的应用程序并使用 xlock -mode blank 锁定服务器(你需要 xlockmore 包来使用 xlock(1))。
不要在第一个 X 服务器中启动你的应用程序。如果尚未启动,请启动第一个 X 服务器,然后启动第二个。使用第二个 X 服务器来运行你的应用程序。
这一点很重要,因为一些功能,如 AGP 模式,只能在一个 X 服务器上运行,而且其他用户可能会因为你为了自己的目的启动 X 服务器而缺少这些功能而感到恼火。所以,只需使用第二个 X 服务器,第一个将为所有需要的人提供完整的功能。
xpra
Xpra 允许你启动 X 程序,并在断开连接后继续运行它们,以便稍后重新连接。可以通过 SSH 在远程计算机上启动 X 程序,连接到计算机,然后断开连接并重新连接,同时程序继续运行。
X2Go
X2Go 支持挂起会话,甚至可以从不同的客户端重新连接。虽然它设计用于远程访问,但也可以在本地主机上使用。