2

基本上,我正在使用远程服务器,并通过 SSH 连接。现在,我可以使用我的 SSH 控制台正常运行进程/执行 bash 脚本,但是有一个问题。一旦我注销,那些 bash 脚本就会退出。

有什么方法可以让我从 SSH 启动一个 bash 脚本并让它运行,即使我在其上启动 bash 脚本到服务器的计算机已关闭?

提前感谢,和平!〜汤姆

4

3 回答 3

3

吉姆建议的nohup程序很好。查看其命令行选项以更改日志位置。

另一个很酷的选择是screen. 当你启动它时,你可以有多个屏幕,如果你注销以后登录,那么你可以重新连接到同一个会话screen -r。它有许多很酷的功能,但您需要阅读文档。

最简单的事情是,当您以结尾开始一些 scrtips&时,您可以使用该disown bash命令使这些脚本不会因 bash 退出而终止。

希望这能给你一些线索。

更新,屏幕快速入门:

  • 键入screen以开始会话
  • 您可以立即启动命令
  • Ctrl+a+c将创建一个新窗口并转到它,您可以启动其他 ocmmands
  • Ctrl+a+#where #is from 0 to 9 会将您移动到您选择的窗口
  • Ctrl+a+d分离你的会话,你回到正常的终端
  • screen -r将您重新附加到会话,如果您有多个,则要求您输入其名称的一部分(必须是会话名称中包含的唯一序列)
  • .screenrc 可用于回滚大小、键绑定、终端选项等好东西。有关不错的选项,请参阅这两个示例文件:
于 2013-06-17T15:29:28.673 回答
2

测试脚本

脚本调用它remote.sh:

at now <<!
/path/to/test.h> /tmp/test.out
!

将此复制到远程框: scp remote.sh thomas@remote: ssh remote 'chmod +x remote.sh'

  1. 在本地的 test.sh 副本中编写您想要的命令,例如:

cd /tmp; cp *.foo /path/to/somewhere/else

  1. 将脚本复制到远程服务器

    scp test.sh thomas@remote: ssh 远程 'chmod +x test.sh'

  2. ssh 远程 './remote.sh'

每次需要运行脚本时重复步骤 1、2 和 3,而无需等待。

于 2013-06-17T15:24:31.490 回答
1

在我看来,实现这一目标的最简单方法之一是使用“屏幕”。这将创建一个虚拟终端,在您注销后不会终止您的任务。

  1. 登录到服务器
  2. 开始屏幕(只需输入 screen)
  3. 开始你的命令
  4. 登出

您的流程现在将继续工作。

重新登录后,键入“screen -list”并找到最后一个屏幕会话的 pid。然后输入

screen -dr YOUR_PID

重新打开屏幕并继续您的工作。

PS Screen 充满了对远程管理非常有用的功能。只需看一个教程。

于 2013-06-17T15:32:45.717 回答