📜  关闭 ssh 后保持命令运行 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 14:50:05.899000             🧑  作者: Mango

关闭 ssh 后保持命令运行 - Shell-Bash

在使用ssh连接到远程服务器时,经常会遇到这样的情况,当你的ssh会话突然关闭或者你中断与服务器的连接时,你的会话会自动终止,这会将正在运行的进程一起关闭掉,通常会出现一些不良的影响。本文将介绍如何使用Shell-Bash来解决这个问题,保持你的命令在你关闭ssh后继续运行。

方案一:运行进程守护程序

使用进程守护程序,如nohup或screen可以使你的进程在你退出会话之后继续运行。

nohup

nohup是一个能够让进程在后台运行的命令。它会将进程从它的终端上分离,这样即使登录用户退出了,进程仍然继续运行。nohup的完整命令格式为:

nohup command > logfile 2>&1 &
  • command:你需要运行的命令
  • logfile: 命令的输出会被写在此文件中,通常会存放于当前目录。
  • &:意味着让此命令run as background job
例子:
$ nohup ping baidu.com > ping.log &

输出结果将写入ping.log文件中。

screen

Screen是一个能够在一台计算机上同时连接多个终端的实用程序,它提供了一种在网络连接中断的情况下保持会话的方式。使用Screen会话,您可以在一个终端中启动多个会话,在不同的终端中切换,并在需要时观察会话的状态。Screen的常见使用方法为:

screen -S sessionname

这个命令将创建一个Screen会话,并给它命名为sessionname。

例子:

创建一个名为mysession的session:

$ screen -S mysession

关闭ssh后重连ssh,重新接入mysession:

$ screen -r mysession
方案二:使用tmux

tmux是一个能够在一个终端中同时打开多个窗口的实用程序,每个窗口都像独立的终端一样,具有自己的命令行提示符。与Screen类似,它可以运行多个命令,且即使终端突然断开,也可以保持进程的运行。

安装

通过以下命令在Debian/Ubuntu上安装tmux:

sudo apt-get install tmux

在CentOS上使用yum:

sudo yum install tmux

基本操作

  • 创建新的tmux会话:tmux
  • 暂时离开tmux会话:Ctrl +b d
  • 连接到已经创建的tmux会话:tmux attach
  • 列出所有的tmux会话:tmux list-sessions
  • 杀掉一个tmux会话:tmux kill-session -t session_name
总结

无论使用nohup、screen还是tmux,它们都是SSH会话强大且实用的扩展,用于保持命令在ssh断开连接后持续运行。选择其中一个解决方案,将有助于确保您的进程能在远程主机上稳定和连续地运行。