我在Linux环境中有一个示例sh脚本,它基本上为当前shell运行ssh-agent,向其添加一个键,并运行两个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进程并将我的密钥添加到其中?

推荐答案

No, really, how to check if ssh-agent is already running in 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

100

Linux相关问答推荐

如何更正我的CMakeLists.txt,使我的项目同时构建在Linux和Windows上?

Linux-如何区分目录中名称相同但扩展名不同的所有文件

std::chrono::time_zone 在不同操作系统上不可用

如何在具有多种可能性的linux shell中获取最大值和最小值?

如果列小于 X,linux 合并行

为什么rsp寄存器从0x7FFFFFFFDFD0开始

树莓派拒绝连接到瓶子服务器

matlab中linux和windows上regexp()的不同行为

std::system 使用什么Shell?

如何在makefile中包含静态库

为什么 Linux (x86) 的页面大小是 4 KB,这是如何计算的?

按主机名的 IPv6 地址

从 Linux shell 将多个文件从一个目录复制到另一个目录

-zxvf 在 tar -zxvf <文件名> 中是什么意思?

如何在 Linux 中命名线程?

在亚马逊 ec2 linux 微型实例上的 virtualenv 中安装 scipy 时遇到问题

bashrc 在运行 bash 命令之前不会加载

并行运行 shell 脚本

Anaconda:禁用提示更改

如何获取 GNU Makefile 中使用的 shell 命令的退出状态?