care este diferența dintre qsub și ./

Poate cineva să-mi spună diferența dintre următoarele moduri de a trimite un script:

$ qsub script_name.sh 

și

./script_name.sh 

Care sunt diferențele dintre cele două moduri de mai sus de a trimite o lucrare unui cluster?

De ce, uneori, trebuie să scriu:

$ chmod +x script_name.sh 

… înainte să pot tasta ./script_name.sh a trimite o slujbă? De ce uneori trebuie doar să introduc qsub script_name.sh?

Îmi pare rău, „nu prea cunosc Unix.

Comentarii

  • Ce este qsub? _
  • @HaukeLaging – vezi răspunsul meu.

Răspuns

Folosind un cluster de calcul?

De când întrebați despre qsub, voi presupune că utilizați GridEngine sau unele produs de clusterizare computer .

qsub

Când rulați comanda qsub script_name.sh îi spuneți nodului principal al clusterului că doriți să trimiteți un script pentru a rula pe acel server. Deci, serverul respectiv ar trebui să aibă acces la același sistem de fișiere care conține scriptul. De exemplu, dacă scriptul dvs. locuiește aici, /home/myusername/script_name.sh, acest fișier ar trebui să fie accesibil atât pe computerul „executați comanda qsub, precum și orice nod din clusterul dvs. pe care intenționați să îl executați script_name.sh.

Rularea unui script

Când rulați scriptul, ./script_name.sh nu executați nimic pe cluster. Rulați acest script local pe sistem. Dacă „ați folosit o comandă pentru a obține un shell pe cluster, qsh, atunci executați această comandă pe orice nod nodul planificator al clusterului a decis să vă ofere un shell pe.

Permisiuni

De fiecare dată când creați un script și intenționați să îl rulați, trebuie să spuneți sistemului intențiile dvs., schimbând permisiunile scriptului astfel încât să reflecte că fișierul este executabil. În caz contrar, fișierul nu este un script, ci doar un fișier text.

Puteți vedea permisiunile unui astfel de fișier:

unele script

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

nu se execută

$ 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 

executabil

$ 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 

Comentarii

  • Bună slm, vă mulțumim pentru răspuns. Dar sunt puțin confuz cu privire la ce înseamnă atunci când spui " Dacă ' ai folosit o comandă pentru a obține un shell pe cluster , qsh, atunci ' executați această comandă pe orice nod, clusterul ' a decis să vă ofere un shell pe. "
  • @john_w – ce tehnologie de clusterizare folosiți aici? GridEngine sau altceva?
  • Bună, îmi pare rău, nu sunt sigur ce înseamnă tehnologia de clustering, sunt extrem de începător. Știu că am un fișier bashrc. Cum aflu GridEngine? introduc o comandă pe linia de comandă pentru a afla?
  • De asemenea, am un script care solicită un alt script. Scriptul start_prephasing.sh apelează prephasing.sh folosind o buclă în start_prephasing.sh. Foloseam qsub pentru a trimite star_prephasing.sh, dar primesc eroarea " / var / spool / n1ge / cn-r10-7 / job_scripts / 4304571: linia 9: qsub: comanda nu a fost găsită ". Dar când scriu chmod + x start_prephasing.sh și apoi cele 22 de joburi din prephasing.sh vor rula cu succes. Nu sunt sigur de ce, cred că încă nu ' nu înțeleg pe deplin diferența dintre qsub start_prephasing.sh și ./start_prephasing.sh.
  • Acesta este ceea ce am în scriptul start_prephasing.sh: # $ -S / bin / bash # $ -cwd export HOME = / adp / home / hswong / CACTI / imputation / prephasing let a = 1 b = 22 while [$ a -le $ b] do 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 let a = $ a + 1 done

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *