Я использую функцию тайм-аута в Debian для ожидания моего скрипта 5 секунд. Прекрасно работает, но у меня проблема в том, что мне нужно возвращаемое значение. Как 1 для времени ожидания и 0 для отсутствия времени ожидания Как я собираюсь это сделать?
Посмотрите на мой код:
timeout 5 /some/local/script/connect_script -x 'status' > output.txt
# here i need the return of timeout
Как вы видите, мой connect_script -x 'status' возвращает статус в виде строки и выводит его на экран (возможно, вы этого не видите). Причина этой проблемы в том, что если сервер (для connect_script) остановлен, скрипт ничего не делает , Вот почему мне нужно время для этого. И когда истечет время ожидания, я хочу перезагрузить сервер. Я могу сделать это, но я понятия не имею, как я могу видеть, истекло ли это время или нет ...
источник
По инструкции (
man timeout
):Объедините это со знанием того, что статус выхода или возвращаемое значение хранятся в переменной
$?
, и мы имеем ...Затем вы можете выполнить дополнительную обработку, основываясь на значении
$RETVAL
, которое будет равно 124, если время ожидания истекло, или на каком-либо другом значении, основанном на состоянии выходаconnect_script
.источник
Возвращаемое значение
timeout
зависит от сигнала, который вы используете для прекращения дочернего процесса.SIGTERM
возвращает 124:Но
SIGKILL
возвращаетСмотрите страницу руководства:
источник