我意识到这可能是一个愚蠢的问题,但我解决不了的,即使挖计算器网站并彻底谷歌小时。
这里是.bashrc中开始的gkrellm基本代码,一旦我登录到壳
if ps ax | grep -v grep | grep gkrellm > /dev/null
then
echo "gkrellm is already running"
else
command gkrellm &
fi
我已经习惯了尝试
...
else
nohup gkrellm &
fi
...
和
...
else
gkrellm
$GK_PID=`pidof gkrellm`
disown -h $GK_PID
fi
...
的gkrellm正确把作为背景的工作,我可以使用shell(如预期)。 但我仍然有离开的gkrellm一次我按下Ctrl-C,即使我开始从同一外壳的其他应用程序。 如何防止从的gkrellm收盘按Ctrl-C按?
以防万一。 我使用所谓的KITTY腻子克隆,但认为这不是它的问题。
感谢帮助!
使用bash( disown
和&>/dev/null
)
你需要在BG运行应用程序( gkrellm &
然后disown
它
if ps -C gkrellm -o user | grep "$LOGNAME" &>/dev/null
then echo "gkrellm is already running"
else gkrellm & disown
fi
如果你想更便携和使用POSIX SH
你将需要使用nohup
(部分coreutils
和POSIX)
并且还背景它( nohup cmd &
你也想使用.profile
,而不是.bashrc
if ps -C gkrellm -o user | grep "$LOGNAME" 2>/dev/null 1>&2
then echo "gkrellm is already running"
else nohup gkrellm &
fi
其他方法将包括-为@Pontus回答-使用工具如dtach
, screen
或tmux
在命令在分离的环境中执行。
由庞 :
它会更有意义,用你的窗口管理器的自动启动功能
的确:)作为AFAIK gkrellm
是一个GUI应用程序,最好是自动启动它,或者使用.xinitrc
(如果你的登录管理器支持的话),或者你的窗口管理器的自动启动设施。
尝试更换“的nohup的gkrellm和”与此:
screen -S gkrellm -d -U -m gkrellm
这将启动一个分离屏幕会话中运行的gkrellm,也不会在意当前shell会话。 我不知道,如果从开始的.bashrc这是最好的解决方案,虽然,这将使使用您的窗口管理器的自动启动功能更有意义。
编辑:不知道如果我正确读取的问题,您使用的KITTY连接到Linux主机,并通过X转发gkrell远程运行? 如果是这样的话,你显然不能使用窗口管理器的功能。 :)
差点忘了这个问题,并回答我的问题找到了有效的解决方案后,不久前;)按照多年的伟大工程,在我的.bashrc
mygkrellm()
{
if pidof -x "gkrellm" >/dev/null; then
echo "Gkrellm is already running. Go to shell!"
else
nohup "/usr/bin/gkrellm" &
fi
}