如果我用putty -load session_name在一台机器上打开一个shell,然后执行一个命令将一个作业添加到linux系统(qsub -cwd -b hostname)上的网格队列中,那么一切正常。
但是,如果我将命令添加到文本文件中,然后执行putty -load session_name -m file.txt,则会得到qsub: command not found
如果我退出并将文本文件简化为仅使用命令hostname并使用-m选项,它也可以正常工作。
如果我使用Connection->SSH->Remote命令,并执行类似于-m命令的操作,那么得到的结果与从命令行得到的结果相同。
在Linux系统中,我是新手,这似乎应该是一个简单的解决方案,告诉我们某处存在“Qube”。或者对这些远程访问有一些限制。。。
编辑:
好的,所以最初的问题是如何运行它——我发现了这一点(添加一个绝对路径),但是还有其他环境变量问题。似乎qsub需要设置SGE_ROOT变量,但远程命令窗口也没有设置。
所以,一个更好的问题是,如何让putty远程命令shell(使用-m)以与手动命令行shell相同的属性和设置打开?

最佳答案

qsub在以交互方式登录时位于您的路径上,但在非交互shell中则不是。在脚本中给出完整的路径,或者在脚本中设置PATH,您应该解决您的问题。
似乎需要在交互式会话的上下文中运行命令,但sshd协议并没有直接执行该操作。因此,尝试通过/bin/sh间接调用命令。

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

-i使shell像交互式shell一样初始化自己,因此它将加载.profile.bashrc中加载在真正交互式shell中的所有环境变量。-c提供了在该交互式shell中运行的命令。
您不应该以这种方式显式设置任何路径,因为它在交互式会话中工作。

关于linux - 使用putty -m选项给出“找不到命令”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19640428/

10-08 22:24
查看更多