问题描述
我的环境包含在每个集群中有多个主机的集群,因此我倾向于在此类集群中的主机上运行类似或等效的命令。
有时,我通过 ssh 连接到集群主机,并记得我曾在该集群中的另一台主机上运行过某个命令,但我不记得我在哪个主机上运行过它,但是我需要再次运行该命令.
由于集群中的每台主机都有自己的 .bash_history
,我必须登录到每台主机并查看 .bash_history
文件以找到该命令。
但是,如果我可以为集群中的所有主机使用一个 .bash_history
文件(例如名为 .bash_history.clusterX
),那么我将能够在 bash 历史记录中搜索该命令(使用 CTRL +R) 并执行它。
这可能吗?
在我的设置中,共享主目录(通过 nfs 等)不是一个选项。
解决方法
另一种方法是将相关命令保留在每台机器上每个远程用户的主文件夹中的可执行文件(“ssh_commands
”)中执行。
这些 ssh_commands
将包括您在打开 SSH 会话时需要在每台服务器上执行的命令。
在每个 SSH 会话中调用该文件:
ssh remoteUser@remoteServer -t "/bin/bash --init-file <(echo 'source ssh_commands')"
这样,您就不必在本地或远程寻找正确的命令来执行:您的 SSH 会话打开并立即执行您想要的。