Linux 使用putty-m选项可获得';未找到命令';
如果我用:Linux 使用putty-m选项可获得';未找到命令';,linux,ssh,putty,Linux,Ssh,Putty,如果我用:putty-load session\u name在一台机器上打开一个shell,然后执行一个命令将作业添加到linux系统上的网格队列(qsub-cwd-b hostname),一切正常 但是,如果我将命令添加到文本文件中,然后执行putty-load session\u name-m file.txt,我会得到qsub:command not found 如果我退出并简化文本文件,使其仅为命令hostname,并使用-m选项,它也可以正常工作 如果我使用Connection->SS
putty-load session\u name
在一台机器上打开一个shell,然后执行一个命令将作业添加到linux系统上的网格队列(qsub-cwd-b hostname
),一切正常
但是,如果我将命令添加到文本文件中,然后执行putty-load session\u name-m file.txt
,我会得到qsub:command not found
如果我退出并简化文本文件,使其仅为命令hostname
,并使用-m选项,它也可以正常工作
如果我使用Connection->SSH->Remote命令,并执行与-m命令类似的操作,我将得到与命令行相同的结果
我是linux系统的新手,这似乎是一个简单的修复程序,可以告诉您“qsub”存在于某个地方。要么就是这些远程访问的东西有一些限制
编辑:
好的,最初的问题是如何运行它——我已经解决了(添加一个绝对路径),但是还有其他环境变量问题。似乎qsub
需要设置SGE_ROOT
变量,但远程命令窗口也没有设置该变量
因此,一个更好的问题是,如何让putty remote commands shell(使用-m)以与手动命令行shell相同的属性和设置打开?
qsub
在您以交互方式登录时在您的路径上,但在非交互shell中不是。在脚本中给出完整路径,或者在脚本中设置path
,您应该解决您的问题
看起来您需要在交互式会话的上下文中运行命令,但是sshd
协议并不能直接做到这一点。因此,请尝试通过/bin/sh
间接调用该命令
/bin/sh -i -c "qsub -cwd -b hostname"
-i
使shell像一个交互式shell一样进行自身初始化,因此它将加载在真正的交互式shell中加载的.profile
或.bashrc
中的所有环境变量。-c
提供了在该交互式shell中运行的命令
您不必以这种方式显式设置任何路径,因为它可以在交互式会话中工作。我在朋友的帮助下找到了答案。“命令行shell”和putty remote commands shell似乎仍然存在问题,因为现在我得到了一个环境变量not set error。我使用的是Sun Grid Engine(群集计算),它需要一个到
SGE_ROOT
中设置的安装位置的路径。我不认为它是特定于应用程序的,更多的是关于shell的两种打开方式以及初始化和环境变量等之间的区别。我只是不知道去哪里挖。如果我能说,“使用与手动shell相同的设置/设置”,那就太好了。嗯。似乎不起作用。我将命令添加到一个文本文件中,并进行了尝试。我现在明白了:使用用户名“sgeadmin”。使用公钥“导入的openssh密钥”/bin/sh进行身份验证:0:无法访问tty;作业控制已关闭/bin/sh:1:qsub:未找到
以前:使用用户名“sgeadmin”。由于错误,使用公钥“imported openssh key”进行身份验证无法初始化环境:请设置环境变量SGE_ROOT。退出。
-i
对我没有任何影响。唯一对我有效的方法就是使用source.profile
。