杀死新手工作时杀死ssh-agent的实例

时间:2014-09-19 06:01:52

标签: upstart ssh-agent

我有一个upstart配置来启动我的守护进程(每次都会与其他服务器建立ssh连接)。要进行ssh连接,它使用存储在ssh-agent中的密钥。所以在启动脚本中我创建了一个ssh-agent实例但是在停止时我无法阻止它。

script

    eval $(ssh-agent -s) > /dev/null
    # command to start deamon

end script


pre-stop script

       if [ -n "$SSH_AGENT_PID" ]; then
           echo "killing ssh-agent..."
           eval `ssh-agent -k`
       fi

end script

在预停止部分,SSH_AGENT_PID为空,所以我无法杀死。 这可能是什么问题..

还有一个问题:我有很多生成的ssh-agent进程,我无法使用ssh-agent -k杀死它,因为它是由其他shell生成的。有没有办法可以杀死这些进程(没有使用kill命令强行杀死它)。

1 个答案:

答案 0 :(得分:1)

看看这份工作:

https://bitbucket.org/CameronNemo/upstart-jobs/src/1c55797aa411718e762423fddb92c90f198c027d/sessions/ssh-agent.conf?at=master

基本上,您的问题是脚本和预停止脚本部分是单独的shell,因此它们没有共享环境。

另外,ssh-agent -k基本上只是在幕后使用kill命令。 kill命令不强大(只杀死-KILL或kill -9)。