Истекло время ожидания с «перезапуском сервисной сети»

Истекло время ожидания с «перезапуском сервисной сети»

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

решение1

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

timeout 10m command 

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

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

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

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

решение2

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

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

timeoutf&

Связанный контент