Bash
如何從遠端電腦複製、執行和檢索數據?
我正在嘗試在遠端電腦上執行一些計算。基本上我想將一些文件複製到電腦,載入軟體,執行計算,然後檢索數據。我已經為此創建了一個無密碼連接。以下是我的嘗試:
#!/bin/bash scp ./* username@host:/home/tmp work=$pwd ssh username@host cd /home/tmp module purge module load gcc/4.6.0 icc/11.1.075 ifort/11.1.075 compilers-extra mpi-openmpi/1.4.3-icc-11.1 vasp mpirun -np 20 vasp > out.vasp 2>&1 & scp ./* username@headnode:$work
該腳本只是複製文件並登錄到遠端電腦,但沒有啟動計算。
我不太確定你的問題是什麼,但我有兩個評論太長了:
- 您目前的腳本將在您登錄後停止
host
(在第 4 行),並等待您以互動方式執行某些操作 - 只有當您退出時,腳本才會繼續(這可能不是您想要的)。因此,將要在遠端伺服器上執行的任何內容放入一個獨立的 shell 腳本中,將其與其餘數據一起 scp 並使用
ssh username@host /path/to/my/script
.因此:
#!/bin/bash # your local script scp ./inputs* ./do_stuff.sh username@host:/home/tmp ssh username@host /home/tmp/do_stuff.sh scp username@host:/home/tmp/outputs* . #!/bin/bash # script for remote execution do_stuff.sh cd /home/tmp module purge module load gcc/4.6.0 icc/11.1.075 ifort/11.1.075 compilers-extra mpi-openmpi/1.4.3-icc-11.1 vasp mpirun -np 20 vasp > out.vasp 2>&1
將
inputs*
/替換outputs*
為您需要復製到集群/從集群複製的任何內容 - 您可能不想複製回輸入。請注意,引用 as 的腳本do_stuff.sh
必須標記為可執行。如果即使這樣也不起作用(因為您將其複製到的文件系統已使用該noexec
選項掛載,請使用ssh username@host bash /home/tmp/do_stuff.sh
. 或者您可以將其通過管道傳輸到遠端電腦:cat do_stuff.sh | ssh username@host bash -
2)如果您正在執行它(看起來是這樣),您可以通過再次執行來
headnode
擺脫 scp 連接的一個方向。scp``headnode