qual é a diferença entre qsub e ./

Alguém pode me dizer a diferença entre as seguintes formas de enviar um script:

$ qsub script_name.sh 

e

./script_name.sh 

Quais são as diferenças entre as duas formas acima de enviar um trabalho para um cluster?

Além disso, às vezes preciso digitar:

$ chmod +x script_name.sh 

… antes de digitar ./script_name.sh enviar um trabalho? Por que às vezes eu só preciso digitar qsub script_name.sh?

Desculpe, não estou muito familiarizado com Unix.

Comentários

  • O que é qsub? _
  • @HaukeLaging – veja minha resposta.

Resposta

Usando um cluster de computação?

Já que você está perguntando sobre qsub, presumo que você “está usando o GridEngine ou algum produto de cluster de computador .

qsub

Quando você executa o comando qsub script_name.sh você está dizendo ao nó principal do cluster que deseja enviar um script para ser executado naquele servidor. Portanto, esse servidor precisa ter acesso aos mesmos sistemas de arquivos que contêm o script. Por exemplo, se o seu script reside aqui, /home/myusername/script_name.sh, este arquivo precisa estar acessível em ambos os computador no qual você está executando o comando qsub, bem como qualquer nó em seu cluster onde você pretende script_name.sh executar.

Executando um script

Quando você executa o script, ./script_name.sh você “não está executando nada no cluster. Você” está executando este script localmente em seu sistema. Se você usou um comando para obter um shell no cluster, qsh, então você está executando este comando em qualquer nó em que o nó do agendador do cluster decidiu fornecer um shell on.

Permissões

Sempre que você faz um script e pretende executá-lo, deve informar ao sistema suas intenções, alterando as permissões do script de modo que reflitam que o arquivo é executável. Caso contrário, o arquivo não é um script, mas apenas um arquivo de texto.

Você pode ver as permissões dos arquivos como:

algum script

$ cat script_name.sh #!/bin/bash echo "hello world" 

não executável

$ 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 

executável

$ 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 

Comentários

  • Olá, slm, obrigado pela sua resposta. Mas estou um pouco confuso sobre o que significa quando você diz " Se você ' usou um comando para obter um shell no cluster , qsh, então você ' reexecuta esse comando em qualquer nó em que o nó do planejador ' decidiu fornecer um shell para você. "
  • @john_w – que tecnologia de cluster você está usando aqui? GridEngine ou algo mais?
  • Olá, desculpe, não tenho certeza do que significa tecnologia de cluster, sou extremamente iniciante. Eu sei que tenho um arquivo bashrc. Como faço para encontrar o GridEngine? devo digitar algum comando na linha de comando para descobrir?
  • Também tenho um script que chama outro script. O script start_prephasing.sh chama prephasing.sh usando um loop no start_prephasing.sh. Eu estava usando qsub para enviar star_prephasing.sh, mas recebo o erro de " / var / spool / n1ge / cn-r10-7 / job_scripts / 4304571: linha 9: qsub: comando não encontrado ". Mas quando eu digito chmod + x start_prephasing.sh e então os 22 jobs do prephasing.sh serão executados com sucesso. Não tenho certeza do motivo, acho que ainda não ' não entendo totalmente a diferença entre qsub start_prephasing.sh e ./start_prephasing.sh ainda.
  • Isso é o que tenho no script start_prephasing.sh: # $ -S / bin / bash # $ -cwd export HOME = / adp / home / hswong / CACTI / imputation / prephasing let a = 1 b = 22 while [$ a -le $ b] fazer qsub -q long.q -o ~ / queue -e ~ / queue prephasing.sh $ a #qsub -pe parallel 4 -q parallel_long.q -o ~ / queue -e ~ / queue prephasing.sh $ a deixe a = $ a + 1 feito

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *