【问题标题】:Killing spawned instance of ssh-agent while stopping the upstart job在停止新贵作业时杀死生成的 ssh-agent 实例
【发布时间】:2014-09-20 11:29:01
【问题描述】:

我有一个新贵配置来启动我的守护进程(它每次都与其他服务器建立 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

在 pre-stop 部分,SSH_AGENT_PID 是空的,所以我无法杀死。 这里可能是什么问题..

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

【问题讨论】:

    标签: upstart ssh-agent


    【解决方案1】:

    看看这份工作:

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

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

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

    【讨论】:

    • 我一直使用带有 -9 的 kill,它没有清除 ssh-agent 创建的临时目录。没有-9就杀死对我有用。有没有办法从由 start-script 生成的 pre-stop 脚本中杀死 ssh-agent(不想杀死其他实例)。
    • 让我尝试在新贵中使用 initctl set-env --global。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-25
    • 2018-09-25
    • 2014-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多