一尘不染

如何检查ssh-agent是否已在bash中运行?

linux

sh在Linux环境中有一个示例脚本,该脚本基本上ssh-agent针对当前shell运行,向其添加密钥并运行两个git命令:

#!/bin/bash
eval "$(ssh-agent -s)"
ssh-add /home/duvdevan/.ssh/id_rsa

git -C /var/www/duvdevan/ reset --hard origin/master
git -C /var/www/duvdevan/ pull origin master

脚本实际上可以正常工作,但是每次运行脚本时,我都会得到一个新进程,因此我认为这可能会成为性能问题,并且最终可能会导致无用的进程。

输出示例:

Agent pid 12109
Identity added: /home/duvdevan/.ssh/custom_rsa (rsa w/o comment)

此外,还有所有这些,是否有可能找到一个现有ssh-agent进程并将我的密钥添加到其中?


阅读 573

收藏
2020-06-07

共1个答案

一尘不染

不,真的,如何检查ssh-agent是否已在bash中运行?

到目前为止,答案似乎并未回答原始问题…

这对我有用:

if ps -p $SSH_AGENT_PID > /dev/null
then
   echo "ssh-agent is already running"
   # Do something knowing the pid exists, i.e. the process with $PID is running
else
eval `ssh-agent -s`
fi
2020-06-07