我有一个部署用户每分钟都在运行一次 cronjob 调整。
在远程服务器(部署目标)上,我没有可用的公钥,而是通过Could not open a connection to your authentication agentssh-add 在我的部署服务器上获得了一个。
我最终将这一行放到了我的 .bashrc 中:
ps -u $(whoami) | grep ssh-agent &> /dev/null || (eval $(ssh-agent) && ssh-add)
Run Code Online (Sandbox Code Playgroud)
尽管在我的理解中不应该,但 cronjob 每次都会打开一个新的 ssh-agent。14-16 小时后,服务器在创建包含大量如下条目的 kern 日志后内存不足:
Aug 12 21:50:58 tools kernel: [64021.568750] [25668] 1000 25668 2654 81 9 0 0 ssh-agent
Run Code Online (Sandbox Code Playgroud)
...我必须重新启动它。
如何在结束 cronjob 后将正在运行的 ssh-agent 进程的数量限制为 1 或终止该进程?
更新
给定的答案工作得很好,我刚刚发现我eval ssh-add在 crontab 中有另一个。我将用赏金来奖励给定的问题。