hva er forskjellen mellom qsub og ./

Kan noen fortelle meg forskjellen mellom følgende måter å sende inn et skript på:

$ qsub script_name.sh 

og

./script_name.sh 

Hva er forskjellen mellom de to ovennevnte måtene å sende en jobb til en klynge?

Også hvorfor trenger jeg noen ganger å skrive:

$ chmod +x script_name.sh 

… før jeg kan skrive ./script_name.sh å sende inn en jobb? Hvordan kan det hende jeg bare trenger å skrive qsub script_name.sh?

Beklager, jeg er ikke veldig kjent med Unix.

Kommentarer

  • Hva er qsub? _
  • @HaukeLaging – se svaret mitt.

Svar

Bruker du en beregningsklynge?

Siden du spør om qsub Jeg kommer til å anta at du bruker GridEngine eller noe dataklyngeprodukt .

qsub

Når du kjører kommandoen qsub script_name.sh du forteller hodetoden til klyngen at du vil sende inn et skript som skal kjøres på den serveren. Så serveren må ha tilgang til de samme filsystemene som inneholder skriptet. For eksempel hvis skriptet ditt bor her /home/myusername/script_name.sh, må denne filen være tilgjengelig på begge datamaskinen kjører du qsub -kommandoen, så vel som en hvilken som helst node i klyngen der du vil script_name.sh kjøre.

Kjører et skript

Når du kjører skriptet, ./script_name.sh kjører du ikke noe i klyngen. Du kjører dette skriptet lokalt på system. Hvis du har brukt en kommando for å skaffe et skall på klyngen qsh, kjører du denne kommandoen på hvilken node klyngens planleggernode bestemte seg for å gi deg et skall på.

Tillatelser

Hver gang du lager et skript og har tenkt å kjøre det, må du fortelle systemet hva du har tenkt, ved å endre skriptets tillatelser slik at de gjenspeiler filen er kjørbar. Ellers er filen ikke et skript, men bare en tekstfil.

Du kan se filtillatelser slik:

noe skript

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

ikke kjørbar

$ 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 

kjørbar

$ 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 

Kommentarer

  • Hei slm, takk for svaret. Men jeg er litt forvirret over hva det betyr når du sier " Hvis du ' har brukt en kommando for å få et skall i klyngen , qsh, så kjører du ' denne kommandoen på hvilken node som klyngen ' s planleggernode bestemte seg for å gi deg et skall på. "
  • @john_w – hvilken klyngeteknologi bruker du her? GridEngine eller noe annet?
  • Hei, beklager, jeg er ikke sikker på hva klyngeteknologi betyr, jeg er ekstremt nybegynner. Jeg vet at jeg har en bashrc-fil. Hvordan finner jeg ut GridEngine? skriver jeg inn en kommando på kommandolinjen for å finne ut?
  • Jeg har også et skript som krever et annet skript. Skriptet start_prephasing.sh kaller prephasing.sh ved å bruke en sløyfe i start_prephasing.sh. Jeg brukte qsub til å sende inn star_prephasing.sh, men jeg mottar feilen " / var / spool / n1ge / cn-r10-7 / job_scripts / 4304571: linje 9: qsub: kommandoen ble ikke funnet ". Men når jeg skriver chmod + x start_prephasing.sh og så vil de 22 jobbene til prephasing.sh kjøre vellykket. Jeg er ikke sikker på hvorfor, jeg tror jeg fortsatt ikke ' ikke helt forstår forskjellen mellom qsub start_prephasing.sh og ./start_prephasing.sh ennå.
  • Dette er hva jeg har i start_prephasing.sh-skriptet: # $ -S / bin / bash # $ -cwd eksport HOME = / adp / home / hswong / CACTI / imputation / prephasing let a = 1 b = 22 while [$ a -le $ b] gjør qsub -q long.q -o ~ / kø -e ~ / kø innfasing.sh $ a #qsub -pe parallell 4 -q parallel_long.q -o ~ / kø -e ~ / kø innfasing.sh $ a la a = $ a + 1 ferdig

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *