Я не думаю, что это проблема, скорее это поведение программы, которую вы запускаете.
Ваше приложение (, компилирующее ), не загружает ЦП на 100%, возможно, оно выполняет довольно много операций ввода-вывода. Когда приложение выполняет ввод-вывод, оно переходит в режим iowait. Он не может использовать ЦП, пока не завершит операцию ввода-вывода.
Обратите внимание на «время ожидания» в top
.
Строка исчезает из-за вызова read line
, а не AWK. Я бы поступил иначе:
lsusb -d 1234:a1b1 | while read _ bus _ device _; do
sudo./usbreset "/dev/bus/usb/${bus}/${device%:}"
done
При этом используется собственная способность lsusb
фильтровать устройства, затем считываются идентификаторы шины и устройства в соответствующие переменные и присваиваются соответствующие значения usbreset
, удаляя конечный «:» из ${device}
..