如何在ssh断开后让远程服务器
-
要在SSH断开后让远程服务器保持运行,有几种可行的方法。
- 使用nohup命令
可以使用nohup命令在SSH断开后让远程服务器继续运行。nohup命令可以将命令行程序或脚本放在后台运行,并将其输出写入nohup.out文件。这样即使SSH连接断开,程序仍然在后台执行。
示例:
nohup your_command &your_command可以是任何需要在服务器上运行的命令,例如启动一个Web服务器、运行一个长时间运行的脚本等。命令执行后,会返回一个进程ID,可以使用
ps命令来确认命令是否在运行。- 使用screen命令
另一种方法是使用screen命令,它可以创建一个可以分离和重新连接的shell窗口。在SSH连接断开后,你可以重新连接到服务器并恢复原来的会话。
首先,需要安装screen命令,可以使用以下命令:
sudo apt-get install screen安装完成后,可以使用以下命令创建一个新的screen会话:
screen然后你可以在这个新的会话中执行你的命令或脚本。当你要断开SSH连接时,可以按下
Ctrl+a,然后按下d来分离会话。当你再次连接到服务器时,可以使用以下命令重新连接到之前的会话:
screen -r所有在会话中运行的命令将继续执行。
- 使用tmux命令
类似于screen,tmux也可以创建一个可以分离和重新连接的会话。它是另一个可选的选择来在SSH断开后让远程服务器保持运行。
安装tmux:
sudo apt-get install tmux创建一个新的tmux会话:
tmux new -s session_name然后在会话中执行你的命令或脚本。当你要断开SSH连接时,可以按下
Ctrl+b,然后按下d来分离会话。当你再次连接到服务器时,可以使用以下命令重新连接到之前的会话:
tmux attach -t session_name所有在会话中运行的命令将继续执行。
通过使用以上方法之一,你可以在SSH断开后保持远程服务器的运行。请选择合适的方法依据你的需求和偏好。
1年前 -
当你通过SSH登录到远程服务器时,断开SSH连接时会导致远程会话终止。然而,有几种方法可以让远程服务器在SSH断开后继续运行。
- 使用nohup命令:在运行命令时,在命令前添加nohup并在命令末尾添加&符号,可以使命令在后台运行,即使SSH断开。例如,要运行一个脚本文件:
nohup ./script.sh &这将使脚本在后台运行,无论SSH连接是否断开。所有输出将被重定向到nohup.out文件中。
-
使用tmux或screen:tmux和screen是两个命令行工具,它们允许你在一个终端中创建多个窗口或会话,并且可以在SSH断开后继续运行。这意味着你可以在一个tmux或screen会话中运行程序,然后在SSH断开后重新连接并恢复会话。要使用tmux,你可以按下Ctrl+b然后按下d来分离会话。重新连接到会话时,可以使用
tmux attach命令。要使用screen,你可以按下Ctrl+a然后按下d来分离会话。重新连接到会话时,可以使用screen -r命令。 -
使用终端多路复用器:终端多路复用器是一种在SSH会话断开时保持终端会话的工具。它允许你在会话间切换,就像使用tmux或screen一样。一些常见的终端多路复用器包括mosh和byobu。要使用mosh,你首先需要在客户端和服务器上安装mosh,然后使用
mosh user@hostname命令连接到服务器。要使用byobu,你可以在连接到远程服务器后运行byobu命令,它将创建一个具有多个窗口的会话。 -
使用后台作业:如果你只想运行一个命令,并且不介意它在后台运行,而不是继续会话,你可以使用&符号将其置于后台运行。例如:
command &这将使命令在后台运行,并且即使SSH断开,它也将继续运行。
- 使用服务管理器:如果你要在远程服务器上运行长时间运行的服务,你可以将其配置为作为服务在后台运行,并在启动时自动启动。具体实施方法取决于你使用的操作系统和服务管理器。对于Ubuntu和Systemd,你可以编写一个简单的Systemd服务单元文件,并使用systemctl命令来管理服务。对于CentOS和SysVinit,你可以编写一个init脚本,并使用service命令来管理服务。
无论你选择哪种方法,都要确保你的服务器有足够的资源来运行所需的进程,并且你的命令或服务不会意外结束或导致问题。
1年前 -
实现在 SSH 断开后让远程服务器保持运行的常用方法有以下几种:
- 使用 nohup 命令
nohup 命令可以让程序在后台运行,并且忽略 SIGHUP 信号(即 SSH 断开时发送的 hangup 信号)。
操作流程:
1)在登录到远程服务器的 SSH 终端中,输入要运行的命令前面加上 nohup,例如nohup ./my_program > output.log 2>&1 &;
2)按下 Enter 键,命令将在后台运行;
3)登出 SSH 终端。使用该方法时,要注意输出日志的重定向,可以将输出重定向到文件中,以便后续查看运行日志。
- 使用 screen 命令
screen 是一个终端复用程序,可以创建多个虚拟终端,并且可以在 SSH 断开后重新连接到之前运行的终端,从而让程序继续在后台运行。
操作流程:
1)在登录到远程服务器的 SSH 终端中,输入screen命令,创建一个新的虚拟终端;
2)在新的虚拟终端中运行需要在后台运行的命令;
3)按下Ctrl + A再按下d键,将当前终端分离(即断开与该终端的连接);
4)登出 SSH 终端。当需要重新连接到之前创建的 screen 终端时,只需再次登录到远程服务器的 SSH 终端,然后输入
screen -r命令即可重新连接。- 使用 tmux 命令
tmux 是类似于 screen 的终端复用程序,也可以创建多个虚拟终端,并且在 SSH 断开后重新连接到之前运行的终端。
操作流程:
1)在登录到远程服务器的 SSH 终端中,输入tmux new命令,创建一个新的会话;
2)在新的会话中运行需要在后台运行的命令;
3)按下Ctrl + B再按下d键,将当前会话分离;
4)登出 SSH 终端。重新连接到之前创建的 tmux 会话的方法是输入
tmux attach命令。无论使用 screen 还是 tmux,都可以通过
screen -ls或tmux ls命令查看当前存在的虚拟终端或会话。可以使用screen -X或tmux kill-session命令关闭不需要的虚拟终端或会话。以上是常用的在 SSH 断开后让远程服务器保持运行的方法,根据自己的需求和实际情况选择适合的方式。
1年前