Este é um script simples que executa o nvidia-smi
comando em vários hosts e salva sua saída em um arquivo comum. O objetivo aqui é fazer com que seja executado de forma assíncrona .
É &
no final da process_host()
chamada de função é suficiente? Meu script está correto?
#!/bin/bash
HOSTS=(host1 host2 host3)
OUTPUT_FILE=nvidia_smi.txt
rm $OUTPUT_FILE
process_host() {
host=$1
echo "Processing" $host
output=`ssh ${host} nvidia-smi`
echo ${host} >> $OUTPUT_FILE
echo "$output" >> $OUTPUT_FILE
}
for host in ${HOSTS[@]}; do
process_host ${host} &
done;
wait
cat $OUTPUT_FILE
bash
background-process
sintagma
fonte
fonte
Processing host1
será seguido pelaProcessing host2
saídahost2
e não pela saídahost1
.