bash-контроль, сколько CPU / VM / IO подчеркивать
Я создал сценарий для загрузки процессора, виртуальной машины и виртуальной машины и записи результатов в файл. Я написал сценарий таким образом, чтобы он считывал вводимые пользователем данные о том, сколько секунд они хотели бы выполнить каждый тест. Тем не менее, мне пришлось жестко указать число процессоров и т. Д. 4. Как я могу изменить этот скрипт, чтобы пользователь мог выбрать, сколько процессоров /vm/io добавить в дополнение к длительности?
Сценарий выглядит следующим образом:
#!/bin/bash
#
# Script to get stress statistics#
echo "Enter the number of intervals (seconds) for running the stress statistics:"
read seconds_to_run
# the variable "seconds_to_run" now has the value entered by keyboard
# The stress option chosen will be output to the corresponding file and timestamped with today's date.
out_cpufilename="/tmp/stress_cpu_stat_"$( date +"%B.%d" )
out_vmfilename="/tmp/stress_vm_stat_"$( date +"%B.%d" )
out_iofilename="/tmp/stress_io_stat_"$( date +"%B.%d" )
while true; do
clear
echo "*******************************"
echo "* Choose from the following: *"
echo "*******************************"
echo "* [1] To stress cpu statistics *"
echo "* [2] To view stress vm statistics *"
echo "* [3] To view stress io statistics *"
echo "Press A to quit."
echo "************************"
echo -n "Enter your menu choice [1-3]: "
read choice
case $choice in
1) echo "stress cpu statistics"
stress -c 4 -t $choice |tee $out_cpufilename
echo "This file will be saved to $out_cpufilename"
sleep 3 ;;
2) echo "stress cpu statistics"
stress -m 4 -t $choice |tee $out_vmfilename
echo "This file will be saved to $out_vmfilename"
sleep 3 ;;
3) echo "stress cpu statistics"
stress -i 4 -t $choice |tee $out_iofilename
echo "This file will be saved to $out_iofilename"
sleep 3 ;;
A) #Quit option
echo You have chosen to quit.
exit;;
*) #Wildcard option in case user enters an invalid option such as "e"
echo Invalid choice, please make another choice
sleep 3;;
esac
done
2 ответа
grep -c ^processor /proc/cpuinfo
Даст вам количество ядер, которые есть у машины
Вам просто нужно прочитать количество ядер в переменную:
echo -n "Number of cores: "
read cores
Добавьте это в положение, которое вы считаете наиболее подходящим. Чтобы использовать переменную вместо жестко закодированных значений, заменяйте каждый вхождение 4
с "$cores"
,
Небольшая подсказка, если вы решите повернуться спиной к Java и стать энтузиастом Bash: во избежание типичных проблем с пробелами и специальными символами рекомендуется всегда заключать переменные bash в кавычки ("$cores"
) или фигурные скобки (${cores}
).