Saya sepertinya tidak bisa meneruskan variabel lingkungan ke skrip yang dikirimkan ke penjadwal kluster bsub
. Ini berfungsi dengan baik ketika saya mengirimkan perintah yang menggunakan variabel lingkungan ini secara langsung, tetapi variabel lingkungan ini tidak dapat digunakan dalam skrip berikutnya. Mengapa begitu, dan bagaimana saya bisa memperbaikinya?
Ini adalah contoh sederhana di mana saya mencoba untuk lulus x=1
ke skrip:
me@cluster:~[407]$ bsub -I -tty -env 'x=1' 'echo .$x.'
Info: No jobname given, set to: Job_with_no_name
Info: No output file given, set to: output_%J_%I.txt
Info: No memory limit given, set to: 512MB
Info: No runtime limit given, set to: 15min
Job <35590315> is submitted to queue <normal>.
<<Waiting for dispatch ...>>
<<Starting on linuxbmc0243>>
.1.
me@cluster:~[408]$ echo 'echo .$x.' > myechox
me@cluster:~[409]$ more myechox
echo .$x.
me@cluster:~[410]$ chmod +x myechox
me@cluster:~[411]$ bsub -I -tty -env 'x=1' myechox
Info: No jobname given, set to: Job_with_no_name
Info: No output file given, set to: output_%J_%I.txt
Info: No memory limit given, set to: 512MB
Info: No runtime limit given, set to: 15min
Job <35590318> is submitted to queue <normal>.
<<Waiting for dispatch ...>>
<<Starting on linuxbmc1279>>
..
me@cluster:~[412]$ bsub -I -tty -env 'x=1' 'export x;myechox'
Info: No jobname given, set to: Job_with_no_name
Info: No output file given, set to: output_%J_%I.txt
Info: No memory limit given, set to: 512MB
Info: No runtime limit given, set to: 15min
Job <35590340> is submitted to queue <normal>.
<<Waiting for dispatch ...>>
<<Starting on linuxbmc1045>>
..
Memperbarui : Ini bekerja:
me@cluster:~[456]$ bsub -I -tty -env 'x=1' 'export x=$x;myechox'
Info: No jobname given, set to: Job_with_no_name
Info: No output file given, set to: output_%J_%I.txt
Info: No memory limit given, set to: 512MB
Info: No runtime limit given, set to: 15min
Job <35609253> is submitted to queue <normal>.
<<Waiting for dispatch ...>>
<<Starting on linuxbmc0975>>
.1.
Sementara itu, saya juga menemukan itu bsub
lebih suka digunakan dengan bsub < scriptfile
daripada bsub scriptfile
; ini tampaknya diperlukan untuk mengaktifkan parsing dari opsi yang tertanam (menggunakan #BSUB
), dan itu juga menjelaskan mengapa variabel hanya diatur secara lokal (karena tidak ada sub-skrip harus dipanggil).
Namun, sekarang saya juga sudah mencoba ini, yang, anehnya, tidak berfungsi:
me@cluster:~[457]$ bsub -I -tty -env 'x=1' < myechox
Info: No jobname given, set to: Job_with_no_name
Info: No output file given, set to: output_%J_%I.txt
Info: No memory limit given, set to: 512MB
Info: No runtime limit given, set to: 15min
Job <35609459> is submitted to queue <normal>.
<<Waiting for dispatch ...>>
<<Starting on linuxbmc1140>>
..
Perbarui 2 : Saya telah mencoba export
ing x
pertama, yang memiliki efek yang sama dengan menggunakan -env 'x=1'
:
me@cluster:~[458]$ export x=1
me@cluster:~[460]$ bsub -I -tty 'echo .$x.'
Info: No jobname given, set to: Job_with_no_name
Info: No output file given, set to: output_%J_%I.txt
Info: No memory limit given, set to: 512MB
Info: No runtime limit given, set to: 15min
Job <35610151> is submitted to queue <normal>.
<<Waiting for dispatch ...>>
<<Starting on linuxbmc1140>>
.1.
me@cluster:~[459]$ bsub -I -tty < myechox
Info: No jobname given, set to: Job_with_no_name
Info: No output file given, set to: output_%J_%I.txt
Info: No memory limit given, set to: 512MB
Info: No runtime limit given, set to: 15min
Job <35609990> is submitted to queue <normal>.
<<Waiting for dispatch ...>>
<<Starting on linuxbmc1140>>
..
Perbarui 3 : Ini, sekali lagi, berfungsi, yang saya anggap sebagai jawaban untuk pertanyaan saya:
me@cluster:~[571]$ (echo export x=$x && cat myechox) | bsub -I -tty
Info: No jobname given, set to: Job_with_no_name
Info: No output file given, set to: output_%J_%I.txt
Info: No memory limit given, set to: 512MB
Info: No runtime limit given, set to: 15min
Job <35641024> is submitted to queue <normal>.
<<Waiting for dispatch ...>>
<<Starting on linuxbmc1045>>
.1.
export x=$x;myechox
, dan ini juga berfungsi. Aku ingin tahu apakah ini diharapkan dilakukan seperti itu ...
bsub
lebih suka digunakan dengan bsub < scriptfile
daripada bsub scriptfile
; ini tampaknya diperlukan untuk mengaktifkan parsing dari opsi yang tertanam (menggunakan #BSUB
). Jadi sementara saya perlu pertanyaan saya, pertanyaan aslinya masih berdiri;)