qsub 和 ./ 有什么区别

joh*_*n_w 2 linux cluster gridengine

谁能告诉我以下提交脚本的方式之间的区别:

$ qsub script_name.sh
Run Code Online (Sandbox Code Playgroud)

./script_name.sh
Run Code Online (Sandbox Code Playgroud)

以上两种提交作业到集群的方式有什么区别?

还有为什么有时我需要输入:

$ chmod +x script_name.sh 
Run Code Online (Sandbox Code Playgroud)

...在我可以输入./script_name.sh以提交工作之前?为什么有时我只需要打字qsub script_name.sh

抱歉,我对 Unix 不是很熟悉。

slm*_*slm 5

使用计算集群?

既然您问的是qsub我将假设您正在使用GridEngine或某些计算机集群产品

qsub

当您运行该命令时,qsub script_name.sh您是在告诉集群的头节点您要提交一个脚本以在该服务器上运行。因此该服务器需要访问包含脚本的相同文件系统。例如,如果您的脚本/home/myusername/script_name.sh位于此处,则需要在您运行qsub命令的计算机以及集群中您打算使用的任何节点上都可以访问此文件script_name.sh运行的。

运行脚本

当您运行脚本时,./script_name.sh您并没有在集群上运行任何东西。您正在系统上本地运行此脚本。如果您已使用命令在集群上获得 shell,qsh,那么您将在集群的调度程序节点决定为您提供 shell 的任何节点上运行此命令。

权限

每当您制作脚本并打算运行它时,您都必须通过更改脚本的权限来告诉系统您的意图,以便它们反映该文件是可执行的。否则该文件不是脚本,而只是一个文本文件。

您可以看到这样的文件权限:

一些脚本

$ cat script_name.sh 
#!/bin/bash

echo "hello world"
Run Code Online (Sandbox Code Playgroud)

不可执行

$ ls -l script_name.sh 
-rw-rw-r--. 1 saml saml 32 Feb 25 18:11 script_name.sh
$ ./script_name.sh
bash: ./script_name.sh: Permission denied
Run Code Online (Sandbox Code Playgroud)

可执行文件

$ chmod +x script_name.sh 
$ ls -l script_name.sh 
-rwxrwxr-x. 1 saml saml 32 Feb 25 18:11 script_name.sh
$ ./script_name.sh
hello world
Run Code Online (Sandbox Code Playgroud)