Тайм-аут с «перезагрузкой сетевой сети»

У меня есть скрипт, запущенный на Fedora 22, где я перезапускаю сервисную сеть как часть устранения неполадок при service network restart . Я хочу проверить, слишком ли выполняется эта команда для выполнения. Если это занимает слишком много времени, я хочу вывести сообщение «Ошибка перезапуска сетевого сервиса». Еще я хочу продолжить сценарий.

Вы можете использовать команду timeout для запуска вашей команды или скрипта в заданный тайм-аут. Что-то похожее на это:

 timeout 10m command 

Которая ждет завершения команды 10 минут, в противном случае убивает ее и выходит со статусом 124. Затем вы можете проверить статус выхода timeout и распечатать соответствующее сообщение на его основе. Подробнее см. Здесь .

Если вы не хотите убивать длинную команду, сделайте что-то вроде этого:

 (( sleep $TIMEOUT; echo "command took so long!" ) & exec $COMMAND ) 

В TIMEOUT это будет печатать сообщение, но команда продолжает выполняться.

Если вам не нужно редактировать исходные системные сценарии, внутри скрипта вы можете создать такую ​​функцию, как

 timeoutf(){ #If hangs 1 minute, dies.. sleep 1m kill $PPID } timeoutf&