基本上,我正在使用远程服务器,并通过 SSH 连接。现在,我可以使用我的 SSH 控制台正常运行进程/执行 bash 脚本,但是有一个问题。一旦我注销,那些 bash 脚本就会退出。
有什么方法可以让我从 SSH 启动一个 bash 脚本并让它运行,即使我在其上启动 bash 脚本到服务器的计算机已关闭?
提前感谢,和平!〜汤姆
基本上,我正在使用远程服务器,并通过 SSH 连接。现在,我可以使用我的 SSH 控制台正常运行进程/执行 bash 脚本,但是有一个问题。一旦我注销,那些 bash 脚本就会退出。
有什么方法可以让我从 SSH 启动一个 bash 脚本并让它运行,即使我在其上启动 bash 脚本到服务器的计算机已关闭?
提前感谢,和平!〜汤姆
吉姆建议的nohup
程序很好。查看其命令行选项以更改日志位置。
另一个很酷的选择是screen
. 当你启动它时,你可以有多个屏幕,如果你注销以后登录,那么你可以重新连接到同一个会话screen -r
。它有许多很酷的功能,但您需要阅读文档。
最简单的事情是,当您以结尾开始一些 scrtips&
时,您可以使用该disown
bash
命令使这些脚本不会因 bash 退出而终止。
希望这能给你一些线索。
更新,屏幕快速入门:
测试脚本
脚本调用它remote.sh:
at now <<!
/path/to/test.h> /tmp/test.out
!
将此复制到远程框: scp remote.sh thomas@remote: ssh remote 'chmod +x remote.sh'
cd /tmp;
cp *.foo /path/to/somewhere/else
将脚本复制到远程服务器
scp test.sh thomas@remote: ssh 远程 'chmod +x test.sh'
ssh 远程 './remote.sh'
每次需要运行脚本时重复步骤 1、2 和 3,而无需等待。
在我看来,实现这一目标的最简单方法之一是使用“屏幕”。这将创建一个虚拟终端,在您注销后不会终止您的任务。
您的流程现在将继续工作。
重新登录后,键入“screen -list”并找到最后一个屏幕会话的 pid。然后输入
screen -dr YOUR_PID
重新打开屏幕并继续您的工作。
PS Screen 充满了对远程管理非常有用的功能。只需看一个教程。