Выполнить специальное действие по тайм-ауту bash

tailищет новые строки, а не смены строк:

-f, --follow[={name|descriptor}]
      output appended data as the file grows;

Если вы хотите проверить это поведение самостоятельно, вы можете использовать эту команду для изменения строки вtestfile:

while true ; do
    sed "s/^.*$/$(date)/" -i testfile
    sleep 1
done

Вы можете использовать цикл Wile для проверки изменений строки:

while true ; do
    grep -q "^[1-9]" /proc/loadavg && echo "$message"
    sleep 1
done
1
22.10.2019, 17:48
1 ответ

Вы можете написать "счетчик тайм-аута" в функцию, и если она завершится первой, это уничтожит скрипт, иначе будет уничтожена сама функция.

run_tout_counter() {
    sleep 10 & wait
    echo timeout
    rm /tmp/toutPID
    kill -s SIGINT $processPID
}
export processPID=$$
run_tout_counter &  echo $! > /tmp/toutPID

read -p "type input:" A &&  ps $(cat /tmp/toutPID)  >/dev/null

excode=$?
if [[ $excode == 0 ]] ; then kill -s SIGINT $(cat /tmp/toutPID)  ; fi && rm /tmp/toutPID
1
27.01.2020, 23:40

Теги

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