Bash

如何從遠端電腦複製、執行和檢索數據?

  • September 30, 2014

我正在嘗試在遠端電腦上執行一些計算。基本上我想將一些文件複製到電腦,載入軟體,執行計算,然後檢索數據。我已經為此創建了一個無密碼連接。以下是我的嘗試:

#!/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

該腳本只是複製文件並登錄到遠端電腦,但沒有啟動計算。

我不太確定你的問題是什麼,但我有兩個評論太長了:

  1. 您目前的腳本將在您登錄後停止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

引用自:https://unix.stackexchange.com/questions/158426