我正在设置一个系统,该系统会在本地(Linux)计算机上自动生成计算作业,将它们复制到集群并将它们提交到排队系统。
我尝试避免需要在集群上运行的脚本(这样,只有一个脚本,并且它在我可以调试它的地方运行)。
我已经完成authorized_keys
设置,因此在本地创建所有必需的文件后,我从本地案例目录执行此操作:
ssh cluster 'mkdir /home/user/casedir'
scp localdir/* cluster:/home/user/casedir/
ssh cluster 'qsub /home/user/casedir/run_script.sge'
...这会在集群上创建案例目录,复制我需要的所有文件,但在第三行失败,显示:qsub:找不到命令
但是,如果我以交互方式键入ssh cluster
以获取集群上的 shell,然后键入 qsub 命令,它将启动作业并运行得很好!
...我在这里犯了什么错?如果相关的话,集群正在运行相当旧版本的 Sun Grid Engine。
我想我可以在本地生成并复制一个 bash 脚本,该脚本将在集群上执行 qsub 命令,但这似乎是一种非常迂回的方法。
答案1
我猜您已将qsub
其添加到集群上用户的或文件$PATH
中。通过 执行命令时不会读取这些内容。.bashrc
.profile
ssh
如果您使用完整路径,它应该可以正常工作qsub
:
ssh cluster '/usr/local/bin/qsub /home/user/casedir/run_script.sge'
显然,您需要更改为集群上的/usr/local/bin/qsub
任何路径。qsub
如果您不知道,请登录集群并运行type qsub
。