【问题标题】:Using putty -m option gives 'command not found'使用 putty -m 选项给出“找不到命令”
【发布时间】:2013-10-28 16:43:56
【问题描述】:

如果我打开一个带有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 相同的属性和设置打开?

【问题讨论】:

    标签: linux ssh putty


    【解决方案1】:

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

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

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

    -i 使 shell 像交互式 shell 一样初始化自身,因此它将加载您的 .profile.bashrc 中加载到真正交互式 shell 中的所有环境变量。 -c 提供了在该交互式 shell 中运行的命令。

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

    【讨论】:

    • 我在朋友的帮助下找到了答案。 “命令行外壳”与腻子远程命令外壳似乎仍然存在问题,因为现在我收到环境变量未设置错误。
    • 我已经编辑了上面的问题。我正在使用 Sun Grid Engine(集群计算),它需要一个指向在SGE_ROOT 中设置的安装位置的路径。我不认为它是特定于应用程序的,更多的是打开 shell 的两种方式以及初始化和环境变量等之间的区别。我只是不知道在哪里挖。如果我能说“使用与手动 shell 相同的设置/设置”,那就太好了
    • 嗯。似乎没有工作。我将命令添加到文本文件并尝试了它。我现在明白了:Using username "sgeadmin". Authenticating with public key "imported-openssh-key" /bin/sh: 0: can't access tty; job control turned off /bin/sh: 1: qsub: not found 以前:Using username "sgeadmin". Authenticating with public key "imported-openssh-key" Unable to initialize environment because of error: Please set the environment variable SGE_ROOT. Exiting.
    • -i 对我没有任何影响。唯一对我有用的是使用source .profile
    猜你喜欢
    • 1970-01-01
    • 2019-08-04
    • 1970-01-01
    • 2013-12-16
    • 2021-08-01
    • 1970-01-01
    • 2018-08-13
    • 2016-07-08
    • 2018-01-27
    相关资源
    最近更新 更多