qual è la differenza tra qsub e ./

Qualcuno può dirmi la differenza tra i seguenti modi di inviare uno script:

$ qsub script_name.sh 

e

./script_name.sh 

Quali sono le differenze tra i due modi precedenti per inviare un lavoro a un cluster?

Inoltre come mai a volte devo digitare:

$ chmod +x script_name.sh 

… prima di poter digitare ./script_name.sh per inviare un lavoro? Come mai a volte devo semplicemente digitare qsub script_name.sh?

Scusa, non ho molta familiarità con Unix.

Commenti

  • Cosè qsub? _
  • @HaukeLaging – vedi la mia risposta.

Risposta

Usi un cluster di calcolo?

Dato che “stai chiedendo informazioni su qsub, presumo che” stai utilizzando GridEngine o altro prodotto di clustering di computer .

qsub

Quando esegui il comando qsub script_name.sh stai dicendo al nodo head del cluster che vuoi inviare uno script da eseguire su quel server. Quindi quel server dovrebbe avere accesso agli stessi filesystem che contengono lo script. Ad esempio, se il tuo script risiede qui, /home/myusername/script_name.sh, questo file dovrebbe essere accessibile su entrambi i computer su cui stai “eseguendo il comando qsub e qualsiasi nodo del tuo cluster su cui intendi eseguire script_name.sh.

Esecuzione di uno script

Quando esegui lo script, ./script_name.sh non stai eseguendo nulla sul cluster. Stai eseguendo questo script localmente sul tuo sistema. Se hai usato un comando per ottenere una shell sul cluster, qsh, allora stai “eseguendo questo comando su qualunque nodo il nodo dello scheduler del cluster ha deciso di darti una shell acceso.

Autorizzazioni

Ogni volta che crei uno script e intendi eseguirlo, devi comunicare al sistema le tue intenzioni, modificando i permessi dello script in modo che riflettano il file è eseguibile. Altrimenti il file non è uno script, ma solo un file di testo.

Puoi vedere i permessi dei file in questo modo:

alcuni script

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

non eseguibile

$ 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 

eseguibile

$ 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 

Commenti

  • Ciao slm, grazie per la tua risposta. Ma sono un po confuso su cosa significhi quando dici " Se ' hai usato un comando per ottenere una shell sul cluster , qsh, quindi ' stai eseguendo questo comando su qualsiasi nodo il nodo dello scheduler del ' del cluster ha deciso di darti una shell. "
  • @john_w – quale tecnologia di clustering stai utilizzando qui? GridEngine o qualcosaltro?
  • Ciao, scusa, non sono sicuro di cosa significhi tecnologia di clustering, sono estremamente principiante. So di avere un file bashrc. Come trovo GridEngine? devo digitare qualche comando sulla riga di comando per scoprirlo?
  • Inoltre ho uno script che richiede un altro script. Lo script start_prephasing.sh chiama prephasing.sh utilizzando un ciclo in start_prephasing.sh. Stavo usando qsub per inviare star_prephasing.sh, ma ricevo lerrore di " / var / spool / n1ge / cn-r10-7 / job_scripts / 4304571: riga 9: qsub: comando non trovato ". Ma quando digito chmod + x start_prephasing.sh e quindi i 22 lavori di prephasing.sh verranno eseguiti correttamente. Non sono sicuro del perché, penso di non ' comprendere appieno la differenza tra qsub start_prephasing.sh e ./start_prephasing.sh ancora.
  • Questo è quello che ho nello 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] 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 fatto

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *