Voiko joku kertoa minulle eron seuraavien komentosarjojen lähettämistapojen välillä:
$ qsub script_name.sh
ja
./script_name.sh
Mitkä ovat edelliset kaksi tapaa lähettää työ klusterille?
Myös joskus minun on kirjoitettava:
$ chmod +x script_name.sh
… ennen kuin voin kirjoittaa ./script_name.sh
lähettää työpaikka? Kuinka joskus minun tarvitsee vain kirjoittaa qsub script_name.sh
?
Valitettavasti en ole kovin perehtynyt Unixiin.
Kommentit
- Mikä on qsub? _
- @HaukeLaging – katso vastaukseni.
Vastaa
Käytätkö laskentaryhmää?
Koska kysyt uudelleen aiheesta qsub
, oletan, että käytät GridEnginea tai jotakin tietokoneklusterointituote .
qsub
Kun suoritat komennon qsub script_name.sh
kerrot klusterin pääsolmulle, että haluat lähettää komentosarjan suoritettavaksi kyseisellä palvelimella. Palvelimella on oltava pääsy samoihin tiedostojärjestelmiin, jotka sisältävät komentosarjan. Jos esimerkiksi komentosarjasi asuu täällä, /home/myusername/script_name.sh
, tämän tiedoston on oltava käytettävissä sekä tietokone, jossa suoritat qsub
-komennon, samoin kuin minkä tahansa klusterin solmun, jossa aiot script_name.sh
suorittaa.
Komentosarjan suorittaminen
Kun suoritat komentosarjan, ./script_name.sh
et ole käynnissä mitään ryhmässä. Suoritat tämän komentosarjan paikallisesti järjestelmään. Jos olet käyttänyt komentoa kuoren hankkimiseksi klusterissa, qsh
, suoritat tämän komennon missä tahansa solmussa, jonka klusterin ajoitussolmu on päättänyt antaa sinulle kuoren päällä.
Käyttöoikeudet
Aina kun teet komentosarjan ja aiot suorittaa sen, sinun on kerrottava järjestelmälle aikomuksesi muuttamalla komentosarjan käyttöoikeuksia siten, että ne heijastavat sitä tiedosto on suoritettava. Muuten tiedosto ei ole komentosarja, vaan vain tekstitiedosto.
Näet tiedostojen käyttöoikeudet kuten:
jotkut komentosarjat
$ cat script_name.sh #!/bin/bash echo "hello world"
ei suoritettavissa
$ 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
suoritettava
$ 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
Kommentit
- Hei slm, kiitos vastauksestasi. Mutta olen hieman hämmentynyt siitä, mitä se tarkoittaa, kun sanot " Jos ' olet käyttänyt komentoa kuoren saamiseksi klusterista , qsh, sitten ' suoritat tämän komennon uudelleen missä tahansa solmussa, klusterin ' s aikataulusolmu päätti antaa sinulle kuoren. "
- @john_w – mitä klusteritekniikkaa käytät täällä? GridEngine tai jotain muuta?
- Hei, anteeksi, en ole varma, mitä klusterointitekniikka tarkoittaa, olen erittäin uusi. Tiedän, että minulla on bashrc-tiedosto. Kuinka löydän GridEnginen? kirjoitan komentoriville jonkin komennon saadaksesi selville?
- Minulla on myös komentosarja, joka vaatii toisen komentosarjan. Komentosarja start_prephasing.sh kutsuu prephasing.sh sisään käyttämällä silmukkaa start_prephasing.sh. Lähetin qsub-tiedostoa star_prephasing.sh: n lähettämiseen, mutta saan virheen " / var / spool / n1ge / cn-r10-7 / job_scripts / 4304571: rivi 9: qsub: komentoa ei löydy ". Mutta kun kirjoitan chmod + x start_prephasing.sh ja sitten prephasing.sh: n 22 työpaikkaa suoritetaan onnistuneesti. En ole varma miksi, luulen silti vielä ' en vielä täysin ymmärrän qsub start_prephasing.sh- ja ./start_prephasing.sh-tiedostojen välistä eroa.
- Tämä on mitä minulla on komento start_prephasing.sh: # $ -S / bin / bash # $ -cwd export HOME = / adp / home / hswong / CACTI / imputation / prephasing anna a = 1 b = 22, kun taas [$ a -le $ b] tee qsub -q pitkä.q -o ~ / jono -e ~ / jonon esivalmistelu.sh $ a #qsub -pe rinnakkainen 4 -q parallel_long.q -o ~ / jono -e ~ / jonon prephasing.sh $ a anna a = $ a + 1 tehty