【问题标题】:How to get the sub-process pid in the expect shell script, after spawn生成后如何在期望 shell 脚本中获取子进程 pid
【发布时间】:2012-03-04 20:40:36
【问题描述】:

部分脚本a.exp

#!/usr/bin/expect
# ..... 
spawn ssh -qTfnN -D $port $user@$host
expect "*assword:*"
# .....

如何获取子进程“ssh”的pid

如果我在 bash shell 中执行这些,而不是在脚本文件中,结果是

expect1.1> spawn ssh name@host
spawn ssh name@host
2188
expect1.2> 

2188是子进程的pid。

以及如何在expect shell中使用exp_pid命令?

【问题讨论】:

    标签: shell expect spawn


    【解决方案1】:

    我认为您正在寻找的是这样的:

    spawn ssh name@host
    set pid [exp_pid]
    puts "PID: $pid"
    

    【讨论】:

      【解决方案2】:

      This man page 说:

      spawn 返回 UNIX 进程 ID。如果没有产生进程,则返回 0。

      即你可以这样做:

      set pid [spawn ssh -qTfnN -D $port $user@$host]
      

      您也可以将exp_pid 用作jcollado demonstrated。同一个手册页解释说:

      exp_pid [-i spawn_id]
      返回与当前生成的进程对应的进程 ID。如果使用 -i 标志,则返回的 pid 对应于给定 spawn id 的 pid。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-06-02
        • 2022-01-05
        • 1970-01-01
        • 1970-01-01
        • 2014-06-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多