Ich führe einen großen Job auf einem HPC aus. Aber die für den Job installierten Programme sind alte Versionen und ich habe die neuen Versionen in meinem Home-Verzeichnis. Ich kann mich bei jedem Knoten anmelden und den Pfad zu den neuen Versionen mit exportieren export PATH=/home/bharat/scratch/bin/:$PATH
. Ich bin mir jedoch nicht sicher, ob der neu exportierte Pfad von allen Knoten verwendet wird, die den Job ausführen, wenn ich den Pfad in meiner Anmeldeshell exportiere und einen Job mit übermittle bsub
.
Ich kann diese Dateien in eines der Standard-Include-Verzeichnisse kopieren, aber mein Systemadministrator ist nicht so erpicht darauf, dies bald für mich zu tun.
Wie kann ich nun am besten den Pfad zu allen Knoten exportieren? Kann ich ein Shell-Skript mit dem Exportbefehl + dem Jobbefehl schreiben und dieses Skript an bsub übergeben?
Antwort1
Wie kann ich nun am besten den Pfad zu allen Knoten exportieren? Kann ich ein Shell-Skript mit dem Exportbefehl + dem Jobbefehl schreiben und dieses Skript an bsub übergeben?
Ja. Schreiben Sie ein Skript (sagen wir, es heißt myscript
), das sowohl den Pfad festlegt als auch Ihr Programm startet. Senden Sie Ihren Auftrag dann über die Befehlszeile ab bsub myscript
. Ihre lokale Installation wird verwendet und nicht die Systeminstallation.
Eine noch einfachere Option: LSF setzt die Umgebungsvariablen der Übermittlungsumgebung in die Ausführungsumgebung, einschließlich PATH.
[mclosson@hostA ~]$ echo $PATH
/lsf/9.1/linux2.6-glibc2.3-x86_64/etc:/lsf/9.1/linux2.6-glibc2.3-x86_64/bin:/bin:/usr/bin
[mclosson@hostA ~]$ bsub -m hostB -Is 'echo $PATH'
Job <217> is submitted to default queue <interactive>.
<<Waiting for dispatch ...>>
<<Starting on hostB>>
/lsf/9.1/linux2.6-glibc2.3-x86_64/bin:/lsf/9.1/linux2.6-glibc2.3-x86_64/etc:/bin:/usr/bin
Aktualisieren Sie jetzt Ihren Pfad, sodass er die lokale Installation Ihres Programms enthält.
[mclosson@hostA ~]$ export PATH=/tmp/xxx:$PATH
[mclosson@hostA ~]$ bsub -m hostB -Is 'echo $PATH'
Job <218> is submitted to default queue <interactive>.
<<Waiting for dispatch ...>>
<<Starting on hostB>>
/lsf/9.1/linux2.6-glibc2.3-x86_64/bin:/tmp/xxx:/lsf/9.1/linux2.6-glibc2.3-x86_64/etc:/bin:/usr/bin