bash – 如何杀死背景/分离的ssh会话?

前端之家收集整理的这篇文章主要介绍了bash – 如何杀死背景/分离的ssh会话?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用程序协同与ssh隧道

它的工作,我只是打开一个控制台类型这两个命令:

ssh -f -N -L localhost:12345:otherHost:12345 otherUser@OtherHost
synergyc localhost

因为我做了一个Bash脚本,它运行在一个图标上的一个mouseclick:

#!/bin/bash
ssh -f -N -L localhost:12345:otherHost:12345 otherUser@OtherHost
synergyc localhost

上面的Bash脚本也工作,但现在我也想杀死协同作用和ssh隧道通过一个mouseclick,所以我必须保存协同和ssh的PID到文件,以后杀死他们:

#!/bin/bash

mkdir -p /tmp/synergyPIDs || exit 1
rm -f /tmp/synergyPIDs/ssh || exit 1
rm -f /tmp/synergyPIDs/synergy || exit 1

[ ! -e /tmp/synergyPIDs/ssh ] || exit 1
[ ! -e /tmp/synergyPIDs/synergy ] || exit 1

ssh -f -N -L localhost:12345:otherHost:12345 otherUser@OtherHost
echo $! > /tmp/synergyPIDs/ssh
synergyc localhost
echo $! > /tmp/synergyPIDs/synergy

但是这个脚本的文件是空的。

如何获得ssh和协同作用的PID?
(我试图避免ps aux | grep … | awk … | sed …组合,有一个更简单的方法。)

我的第一个想法是,你需要在后台启动进程,以获得他们的PID与$!。

模式喜欢

some_program &
some_pid=$!
wait $some_pid

可能会做你需要的…除了那样ssh将不会在前台要求密码短语。

那么,你可能需要不同的东西。 ssh -f可能产生一个新的进程,你的shell永远不能从调用它。理想情况下,ssh本身将提供一种方式将其PID写入某个文件

猜你在找的Bash相关文章