📅  最后修改于: 2023-12-03 14:50:05.899000             🧑  作者: Mango
在使用ssh连接到远程服务器时,经常会遇到这样的情况,当你的ssh会话突然关闭或者你中断与服务器的连接时,你的会话会自动终止,这会将正在运行的进程一起关闭掉,通常会出现一些不良的影响。本文将介绍如何使用Shell-Bash来解决这个问题,保持你的命令在你关闭ssh后继续运行。
使用进程守护程序,如nohup或screen可以使你的进程在你退出会话之后继续运行。
nohup是一个能够让进程在后台运行的命令。它会将进程从它的终端上分离,这样即使登录用户退出了,进程仍然继续运行。nohup的完整命令格式为:
nohup command > logfile 2>&1 &
$ nohup ping baidu.com > ping.log &
输出结果将写入ping.log
文件中。
Screen是一个能够在一台计算机上同时连接多个终端的实用程序,它提供了一种在网络连接中断的情况下保持会话的方式。使用Screen会话,您可以在一个终端中启动多个会话,在不同的终端中切换,并在需要时观察会话的状态。Screen的常见使用方法为:
screen -S sessionname
这个命令将创建一个Screen会话,并给它命名为sessionname。
创建一个名为mysession的session:
$ screen -S mysession
关闭ssh后重连ssh,重新接入mysession:
$ screen -r mysession
tmux是一个能够在一个终端中同时打开多个窗口的实用程序,每个窗口都像独立的终端一样,具有自己的命令行提示符。与Screen类似,它可以运行多个命令,且即使终端突然断开,也可以保持进程的运行。
通过以下命令在Debian/Ubuntu上安装tmux:
sudo apt-get install tmux
在CentOS上使用yum:
sudo yum install tmux
无论使用nohup、screen还是tmux,它们都是SSH会话强大且实用的扩展,用于保持命令在ssh断开连接后持续运行。选择其中一个解决方案,将有助于确保您的进程能在远程主机上稳定和连续地运行。