Простой вопрос, скажем, я хочу ssh кластеризовать машины и отслеживать некоторую информацию о каждой из них. В частности, я хочу запустить nvidia-smi
для каждого из них, чтобы знать, как их использует GPU. Я попытался:
for host in machine1 machine2 machine3
do
ssh "$host"
nvidia-smi
done
, но он только входит в machine1
, а затем просто остановился там. Только после того, как я выйду из machine1
, выполнится nvidia-smi
, но на локальном терминале, а не на machine1
. Затем он входит в machine2
и останавливается там ...
Поместите команду, которую вы хотите выполнить, в строку ssh
:
for host in machine1 machine2 machine3
do
ssh "$host" nvidia-smi
done
Возможно, вам потребуется указать полный путь nvidia-smi
.
Кроме того, вместо того, чтобы жестко кодировать свой список серверов в этот сценарий (и другие подобные сценарии), сохраните список в файле:
cat >Servers.txt <<EOF
machine1
machine2
machine3
EOF
И измените строку for
на:
for host in $(cat Servers.txt)
Затем, когда «список серверов» меняется, вам нужно изменить только ОДНО место, а не каждый скрипт.