如果我打开一个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
变量,但是也没有为远程命令窗口设置。
所以,更好的问题是,如何使用与手动命令行shell相同的属性和设置打开putty远程命令shell(使用-m)?
答案 0 :(得分:1)
qsub
在您的路径上,但在非交互式shell中则不是。在脚本中提供完整路径,或在脚本中设置PATH
,您应该解决问题。
您似乎需要在交互式会话的上下文中运行命令,但sshd
协议并不直接执行此操作。因此,请尝试通过/bin/sh
间接调用命令。
/bin/sh -i -c "qsub -cwd -b hostname"
-i
使shell自身初始化为交互式,因此它将加载.profile
或.bashrc
中加载到真实交互式shell中的所有环境变量。 -c
提供了在该交互式shell中运行的命令。
您不必以这种方式显式设置任何路径,因为它在交互式会话中起作用。