Да, ваш процессор выполняет NOP (No Op) или HLT
Linux использует простаивающий процесс. Эта задача ничего не делает, но посылает HLT и заставляет процессор использовать меньше энергии и тепла, пока нечего делать. Затем, когда нужно выполнить работу, процессор "включается" и выполняет работу.
Теперь имейте в виду, что планировщик Linux будет выполнять "любую работу, которую сможет" до этого момента. Это HLTing также происходит очень быстро.
#!/bin/bash
# Read ip.txt and names.txt into arrays 'ips' and 'names'. This assumes that
# the files have the same number of lines, and that both files are in the
# correct order (i.e. line N of ip.txt corresponds to line N of name.txt),
# so that the indices for both arrays match.
mapfile -t ips < ip.txt
mapfile -t names < name.txt
# Don't use all-caps variable names in your own scripts, they're probably already
# used by other programs. $USER certainly is. Use lowercase variable names.
user="ubuntu"
key="test.pem"
for i in "${!ips[@]}"; do
knife bootstrap "${ips[$i]}" -ssh-port 22 \
--ssh-user "$user" --sudo --i "$key" \
--no-host-key-verify -N "${names[$i]}" --run-list "role[webserver]"
done
ПРИМЕЧАНИЕ:mapfile
— это bash
, встроенный -. Это синоним readarray
.
Также обратите внимание, :я не запускаю chef
здесь, поэтому я понятия не имею, будет ли ваша команда knife bootstrap
делать то, что вы хотите. Я предположил, что синтаксис правильный и вы использовали соответствующие параметры.
Использование современных сценариев в bash:
ip=$(< ip.txt)
user="ubuntu"
key="test.pem"
name=$(< name.txt)
for i in $ip; do
knife bootstrap $i -ssh-port 22 \
--ssh-user $user --sudo --i $key \
--no-host-key-verify -N $name --run-list "role[webserver]"
done
Не знаю, что
"role[webserver]"
если это значение из ассоциативного массива, то оно должно быть записано как
"${role[webserver]}"
На самом деле я пытаюсь получить вывод в формате ниже путем передачи $IP и $NAME из двух разных файлов
1.1.1.1 веб1
2.2.2.2 веб2
3.3.3.3 веб3