我有一个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命令强行杀死它)。
答案 0 :(得分:1)
看看这份工作:
基本上,您的问题是脚本和预停止脚本部分是单独的shell,因此它们没有共享环境。
另外,ssh-agent -k基本上只是在幕后使用kill命令。 kill命令不强大(只杀死-KILL或kill -9)。