📜  执行脚本后停止 ssh 连接 (1)

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

执行脚本后停止 SSH 连接

当我们在远程服务器上运行脚本时,可能需要在脚本执行完毕后停止 SSH 连接,以避免占用服务器资源和提高安全性。接下来,我们将介绍两种常见的方法。

方法一:使用 nohup 命令

nohup 命令可以在后台运行脚本,并将输出重定向到指定文件中,以避免脚本因为 SSH 连接中断而终止。

nohup command > logfile 2>&1 &
  • nohup:运行命令,并忽略 SIGHUP 信号,即使终端关闭或远程连接中断,命令也不会停止。
  • command:要运行的脚本或命令。
  • > logfile:将标准输出重定向到 logfile 文件中。
  • 2>&1:将标准错误输出重定向到标准输出中。
  • &:将命令放在后台执行。

例如,我们可以使用以下命令来运行 test.sh 脚本,并将输出重定向到 test.log 文件中:

nohup ./test.sh > test.log 2>&1 &
方法二:使用 screen 命令

Screen 命令可以创建一个会话,允许在一个终端窗口中运行多个命令,并在 SSH 连接中断后可以恢复会话。

首先,我们需要使用以下命令创建一个新的 screen 会话:

screen -S session_name
  • -S session_name:设置会话名称以便于恢复。

然后,在 screen 会话中,我们可以运行任意脚本或命令。

要从会话中分离,请使用以下命令:

Ctrl + A + D

要恢复会话,请使用以下命令:

screen -r session_name

例如,我们可以使用以下命令创建一个名为 test 的 Screen 会话,并在其中运行 test.sh 脚本:

screen -S test
./test.sh
Ctrl + A + D

在下一次连接到服务器时,我们可以使用以下命令恢复名为 test 的会话:

screen -r test
总结

以上是两种常见的在执行脚本后停止 SSH 连接的方法,使用 nohup 命令时需要将标准输出和标准错误输入重定向到文件中,使用 screen 命令时可以创建一个会话来运行脚本并在 SSH 连接中断后恢复会话。