병렬 네트워크에 4개의 CPU가 있고 4개의 CPU 각각에서 N개의 작업을 실행하려고 합니다. 또한 N 작업을 X 작업으로 분할하고 4개의 CPU 각각에서 루프로 실행하고 싶습니다. Bash 스크립트는 다음과 같습니다:
#!/bin/bash
runevents() {
nEvents=5000
nJobs=100
ePerJob=$((nEvents/nJobs))
ssh $1
for ((i=0; i<nJobs; i++))
do
dir_run=/home/user/task/
"cd $dir_run && nice -n0 ./commandscript -c commandscipt.cmnd -o results/job_$RANDOM -s $RANDOM -n $ePerJob >$dir_run/job_$RANDOM.out"
done
}
runevents cpu1
runevents cpu2
runevents cpu3
runevents cpu4
exit
그러나 이는 예상대로 작동하지 않았습니다. 파일이나 경로가 존재하지 않는다는 오류가 발생합니다. 파일이나 경로가 존재하며 경로가 정확합니다. 또한 행을 다음과 같이 수정하면:
ssh $1 "cd $dir_run && nice -n0 ./commandscript -c commandscipt.cmnd -o results/job_$RANDOM -s $RANDOM -n $ePerJob >$dir_run/job_$RANDOM.out"
작동하지만 nJobs처럼 비밀번호를 여러 번 묻는 것은 터무니없는 접근 방식입니다. 나는 원격 컴퓨터(예: cpu1(병렬 네트워크의 일부))에서 ssh-keygen을 사용하고 있습니다. 여기서 commandscript.cc
키 쌍을 생성하기 위해 컴파일하고 개인 키는 및 ssh-keygen -t rsa
에 저장되며 공개 키는 및 에 저장 됩니다 . 이 상황을 해결하는 방법에 대한 통찰력이 있습니까? 병렬 네트워크에 대한 sudo 액세스 권한이 없습니다.id_rsa
authorized_keys
id_rsa.pub
authorized_keys.pub
답변1
nJobs만큼 비밀번호를 묻는 것은 말도 안되는 접근 방식입니다.
을 사용하여 SSH 키 쌍을 만들고 , 원격 시스템에 액세스할 수 있는 사용자로 / ssh-keygen
로 로그인하고 해당 쌍의 공개 키를 에 저장합니다 . 불필요한 .ssh
scp
~/.ssh/authorized_keys
sudo
그러나 이는 예상대로 작동하지 않았습니다. [...] 해당 줄을 다음과 같이 수정하면:
이 문제를 직접 해결하셨습니다.
당신은 또한 볼 수 있습니다평행한그리고 원격 호스트 목록. 스크립팅 시간을 절약할 수 있습니다.