Как распознать состояние безделья в течение установленного срока в сценарии?

Суть сценариев оболочки должна выполнить как можно меньше команд. Здесь, awk обычно команда, которая лучше всего разработана, чтобы разделить строки на поля и сделать арифметику:

awk '{for (i = 1; i<= NF; i++) $i = $i/1024; print}' < your-file

Используя циклы оболочки в оболочках часто знак плохой практики сценариев оболочки.

3
23.01.2016, 06:56
1 ответ

Вы можете сделать что-то вроде этого (непроверено, будет работать только в Linux):

#!/bin/zsh
TIMEOUT=6000 # hundredths of seconds; in this case, 10 minutes
zmodload zsh/system
zmodload zsh/zselect
for i in /dev/input/*; do
    [[ -c "$i" ]] && sysopen -r -o cloexec -u fd "$i"
    dev=($dev[@] $fd)
done
while zselect -t $TIMEOUT $dev; do
    sleep 5
done
# timeout occurred
shutdown -h now

Но это только технически все еще сценарий оболочки. :)

Он также не будет работать правильно, если после его запуска будут подключены дополнительные устройства ввода (он будет игнорировать ввод на них).

0
27.01.2020, 21:42

Теги

Похожие вопросы