0

如果我用以下命令打开一个 shell 到一台机器中:putty -load session_name然后执行一个命令将一个作业添加到一个 linux 系统上的网格队列(qsub -cwd -b hostname),一切正常。

但是,如果我将命令添加到文本文件中,然后执行putty -load session_name -m file.txt,我会得到qsub: command not found

如果我退出并将文本文件简化为仅命令hostname并使用 -m 选项,它也可以正常工作。

如果我使用 Connection->SSH->Remote 命令,并执行与 -m 命令类似的操作,我会得到与命令行相同的结果。

我是 linux 系统的新手,这似乎应该是一个简单的修复来告诉某处存在“qsub”的东西。要么,要么对这些远程访问的东西有一些限制......

编辑:

好的,所以最初的问题是如何运行它——我想通了(添加绝对路径),但还有其他环境变量问题。似乎qsub需要设置SGE_ROOT变量,但也没有为远程命令窗口设置。

所以,一个更好的问题是,如何让 putty 远程命令 shell(使用 -m)以与手动命令行 shell 相同的属性和设置打开?

4

1 回答 1

1

qsub当您以交互方式登录时,它在您的路径上,但在非交互式外壳中它不是。在脚本中给出完整路径,或者PATH在脚本中设置,你应该解决你的问题。

似乎您需要在交互式会话的上下文中运行您的命令,但sshd协议并不直接这样做。所以尝试通过/bin/sh.

/bin/sh -i -c "qsub -cwd -b hostname"

-i使得 shell 像一个交互式的一样初始化自己,所以它会加载你的所有环境变量,.profile或者.bashrc加载到一个真正的交互式 shell 中。提供了在该交互式 shell 中运行的-c命令。

您不必以这种方式显式设置任何路径,因为它在交互式会话中工作。

于 2013-10-28T18:08:05.153 回答