通过SSH登录时自动在远程系统上启动Tmux会话

时间:2020-03-21 11:42:42  来源:igfitidea点击:

在通过SSH使用远程系统时,在TMUX会话中运行长期运行过程始终是一个很好的做法。

因为,当网络连接突然下降时,它会阻止我们失去运行过程的控制。
就在任何原因的网络连接被删除时,Tmux会话中的进程将继续在远程系统上运行,因此可以使用"Tmux Attact"命令重新连接到TMUX会话,一旦网络连接在线返回。
如果我们忘记首先启动TMUX会话怎么办?
无论我们多么小心,有时我们可能会忘记启动TMUX会话。
这是一种避免这个问题的简单方法。
通过SSH记录时,可以在远程系统上自动启动TMUX会话。
如果通过从本地系统通过SSH升级远程Linux服务器时丢失了网络连接,则特别有用。
请注意,随时随地通过从另一个系统的SSH将Linux系统登录到Linux系统时,以下提示将自动启动TMUX会话。

通过SSH登录远程系统时自动启动 Tmux会话

当通过SSH连接时,要自动启动Tmux会话,编辑远程系统的~/.bash_profile文件:

$nano ~/.bash_profile

如果文件不可用,只需创建它。

并添加以下行:

if [ -z "$TMUX" ]; then
    tmux attach -t default || tmux new -s default
fi

保存并关闭文件。
注销并重新登录远程系统。
我们将被登陆到名为"默认"的新TMUX会话中。

现在,在TMUX会话中启动任何进程,然后按CTRL + B拆下它,然后按D。
即使在网络连接丢弃之后,该过程也会继续在TMUX会话内运行。
一旦网络连接回来,将SSH进入远程系统,我们将看到作业仍在运行!

让我澄清我在上述输出中刚刚做的事情。

  • 我通过来自我本地系统的SSH连接到我远程Ubuntu服务器。自动启动名为"默认"的新TMUX会话。
  • 在TMUX会话中,我运行一个命令(例如观看Grep "CPU MHz "/proc/cpuinfo)来监视CPU速度。
  • 然后,通过按Ctrl + B和D从会话中分离。
  • 然后,我使用"tmux ls"命令列出tmux会话并退出SSH会话。
  • 最后,我通过SSH重新连接到远程系统,并验证进程是否在没有任何中断的情况下继续运行TMUX会话。

要停止自动启动TMUX会话,只需删除从远程系统的~/.bashrc或者~/.bash_profile文件中提到的前面添加的行。

这个简单的提示可以避免失去对远程作业的控制。
我们并不总是必须每次都手动启动tmux。
只要在本教程中描述的,只要将其SSH SSH即可自动启动TMUX即可自动启动。