使用ssh和screen远程编译和运行程序

使用ssh和screen远程编译和运行程序

我正在尝试远程编译和运行程序。但是,我想在屏幕中执行此操作,并且我想在 ssh 后在另一个节点上使用网格引擎运行此操作。目前我有:

ssh me@server screen -R session 'qlogin; cd path; mvn options program'

这基本上可行,但我收到一条消息,说我必须连接到终端。我读到了这篇文章,并将 -t 选项添加到 ssh 中。这样,我的命令就中断了:似乎我通过 ssh 登录,屏幕启动,然后不知道“mvn”命令并终止我的会话。

我想知道为什么会发生这种情况,以及如何在使用网格引擎时从本地计算机、屏幕内、远程节点上正确启动作业。

答案1

我会-L向屏幕添加选项,以打开屏幕日志(默认为文件名screenlog.0)。然后你也许就能看到发生了什么。我想屏幕将整个视为qlogin; cd path; mvn options program一个要执行的程序(而不是一组不同的命令),无法执行该程序然后退出。

另一种选择是将正在执行的命令放入脚本中:

#!/bin/sh
qlogin
cd path
mvn options program

创建一个 screenrc 文件(假设我们称之为 mysessionrc):

# myscreenrc

#Create window 0 with title 'mvn' and run /path/to/myscript.sh
screen -t mvn 0 /path/to/myscript.sh

然后运行ssh -t me@server 'screen -R session -c mysessionrc​​' 代替。我必须这样做才能使屏幕在 FreeBSD+ssh+screen 组合上工作。

如果仍然失败,那么我会添加:

zombie kr
verbose on

k到 mysessionrc 文件的开头,以使屏幕提示在完成终止或重新启动后如何处理正在运行的命令r,并且 verbose 将输出有关屏幕正在执行的操作的一些信息。

答案2

我的猜测是,当通过 SSH 远程执行命令时,您不会生成 Screen 可以附加的终端 (pty)。

相关内容