我正在 HPC 上運行一項艱鉅的任務。但該作業安裝的程式是舊版本,而我的主目錄中有新版本。我可以登入任何節點,使用 匯出新版本的路徑export PATH=/home/bharat/scratch/bin/:$PATH
。但是,我不確定是否在登入 shell 中匯出路徑並使用 提交作業bsub
,那麼新匯出的路徑是否會被執行該作業的所有節點使用。
我可以將這些檔案複製到預設包含目錄之一中,但我的系統管理員不太急於盡快為我執行此操作。
現在導出所有節點的路徑的最佳方法是什麼?我可以使用export命令+job命令編寫一個shell腳本並將該腳本傳遞給bsub嗎?
答案1
現在導出所有節點的路徑的最佳方法是什麼?我可以使用export命令+job命令編寫一個shell腳本並將該腳本傳遞給bsub嗎?
是的。編寫一個腳本(假設其名為myscript
),既設定 PATH 又啟動程式。然後使用命令列提交您的作業bsub myscript
。將使用您的本機安裝而不是系統安裝。
更簡單的選擇是,LSF 將提交環境的環境變數設定到執行環境中,包括 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
現在更新您的路徑,使其包含程式的本機安裝。
[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