Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 使用putty-m选项可获得';未找到命令';_Linux_Ssh_Putty - Fatal编程技术网

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