LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1149|回复: 4

如何脚本检测某个进程的某个带参实例是否运行?

[复制链接]
发表于 2011-8-29 22:58:11 | 显示全部楼层 |阅读模式
ssh带不同参数,为不同主机各建一条隧道。我想在连接主机的脚本里首先检测隧道是否已经创建,如果已经创建则直接连接,如果没有创建则先创建再连接。

  1. if  [隧道尚未创建]  then
  2.     ssh  -Nf  -L  32768:10.11.12.13:3389  1.2.3.4
  3. fi
  4. ssh localhost -p 32768
  5.   
复制代码
由于创建每个隧道都是ssh命令,因此仅仅判断命令名(即ssh)是不够的,必须根据命令及后面的参数(端口值)区分每个不同的隧道。这里假定每个隧道的本地映射端口是预先规定好的。
请教:
  如何写if的条件?
发表于 2011-8-30 15:13:09 | 显示全部楼层
Post by 糊涂;2148905
ssh带不同参数,为不同主机各建一条隧道。我想在连接主机的脚本里首先检测隧道是否已经创建,如果已经创建则直接连接,如果没有创建则先创建再连接。

  1. if  [隧道尚未创建]  then
  2.     ssh  -Nf  -L  32768:10.11.12.13:3389  1.2.3.4
  3. fi
  4. ssh localhost -p 32768
  5.   
复制代码
由于创建每个隧道都是ssh命令,因此仅仅判断命令名(即ssh)是不够的,必须根据命令及后面的参数(端口值)区分每个不同的隧道。这里假定每个隧道的本地映射端口是预先规定好的。
请教:
  如何写if的条件?


建一个临时目录, 文件名为主机名, 内容为ssh的PID
for X in "host list"; do
HOSTFILE="/path/to/temp/$X"
if [ -f $HOSTFILE ]; then
   SSHID=`cat $HOSTFILE`
fi
if [ x"$SSHID" = "x" -o `ps -p $SSHID >/dev/null` ]; then
    ssh  -xxxx &
    echo $! > $HOSTFILE
fi
done

如果有其它参数可用一份包参数的文件, 用while read X X X  X ; 方式
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-8-30 23:14:45 | 显示全部楼层
Post by chasye;2149061
建一个临时目录, 文件名为主机名, 内容为ssh的PID
for X in "host list"; do
HOSTFILE="/path/to/temp/$X"
if [ -f $HOSTFILE ]; then
   SSHID=`cat $HOSTFILE`
fi
if [ x"$SSHID" = "x" -o `ps -p $SSHID >/dev/null` ]; then
    ssh  -xxxx &
    echo $! > $HOSTFILE
fi
done

如果有其它参数可用一份包参数的文件, 用while read X X X  X ; 方式
感谢关注。说来惭愧,鄙人完全不懂脚本,您给的内容看不大懂。能否介绍一下思路?

也许顶楼我没表达清楚(我总是顶楼表达不清的,故自号“糊涂”)?
回复 支持 反对

使用道具 举报

发表于 2011-8-31 01:44:00 | 显示全部楼层
ps -o cmd -C ssh|grep "参数"
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-8-31 20:56:05 | 显示全部楼层
Post by lastart;2149157
ps -o cmd -C ssh|grep "参数"
谢谢。一会儿回家试试
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表