【发布时间】:2010-12-21 18:34:05
【问题描述】:
我正在将程序协同与 ssh 隧道一起使用
它工作,我只需要打开一个控制台输入这两个命令:
ssh -f -N -L localhost:12345:otherHost:12345 otherUser@OtherHost
synergyc localhost
因为我很懒,我制作了一个 Bash 脚本,只需在图标上单击鼠标即可运行:
#!/bin/bash
ssh -f -N -L localhost:12345:otherHost:12345 otherUser@OtherHost
synergyc localhost
上面的 Bash-Script 也可以,但是现在我还想通过鼠标单击来杀死 synergy 和 ssh 隧道,所以我必须将 synergy 和 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 和 synergy 的 PID?
(我尽量避免ps aux | grep ... | awk ... | sed ... 组合,必须有更简单的方法。)
【问题讨论】:
标签: bash ssh background-process pid