Il s'agit d'un simple script qui exécute la nvidia-smi
commande sur plusieurs hôtes et enregistre sa sortie dans un fichier commun. Le but ici est de le faire fonctionner de manière asynchrone .
La &
fin de l' process_host()
appel de fonction est-elle suffisante? Mon script est-il correct?
#!/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
syntagme
la source
la source
Processing host1
sera suivi deProcessing host2
et la sortie dehost2
plutôt que la sortie dehost1
.