从 .bashrc 启动后台进程

Ege*_*shi 5 bash putty

我意识到这可能是一个愚蠢的问题,但即使彻底挖掘了 stackoverflow 网站和谷歌,我也无法解决几个小时。

这是 .bashrc 中的基本代码,用于在登录 shell 后启动 gkrellm

if ps ax | grep -v grep | grep gkrellm > /dev/null
then
    echo "gkrellm is already running"
else
    command gkrellm &
fi
Run Code Online (Sandbox Code Playgroud)

我已经习惯尝试了

...
else
    nohup gkrellm &
fi
...
Run Code Online (Sandbox Code Playgroud)

...
else
    gkrellm
    $GK_PID=`pidof gkrellm`
    disown -h $GK_PID
fi
...
Run Code Online (Sandbox Code Playgroud)

gkrellm 已正确放置为后台作业,我可以使用 shell(如预期)。但是,即使我从同一 shell 启动其他应用程序,一旦按下 Ctrl-c,gkrellm 仍然会退出。如何防止 gkrellm 在按下 Ctrl-c 时关闭?

万一。我正在使用名为 KiTTY 的 PuTTY 克隆,但相信这不是问题。

感谢帮助!

Pon*_*tus 1

尝试用以下内容替换“nohup gkrellm &”:

screen -S gkrellm -d -U -m gkrellm
Run Code Online (Sandbox Code Playgroud)

这将启动一个运行 gkrellm 的分离屏幕会话,并且它不会关心当前的 shell 会话。我不确定从 .bashrc 启动它是否是最好的解决方案,但使用窗口管理器的自动启动功能更有意义。

编辑:不确定我是否正确地阅读了问题,您是否使用 KiTTY 连接到 Linux 主机并通过 X 转发远程运行 gkrell?如果是这种情况,您显然无法使用窗口管理器功能。:)