Как сделать тайм-аут с выходом (0) из Bash - PullRequest
0 голосов
/ 17 мая 2018

Я пытаюсь настроить скрипт travis, где мы запускаем наше приложение, чтобы убедиться, что оно запускается нормально.Если это так, то мы можем передать сборку.Тестирование ловит ошибки при запуске.Тем не менее, это сервер API, и если я запускаю бинарный файл, и он будет успешным, он будет работать бесконечно долго.

Я попытался использовать следующее:

timeout --preserve-status 20s <binary>

Но это просто возвращает код выхода двоичного файла, который равен 143 при уничтожении по таймауту.

timeout 20s <binary>

Возвращает выход 127 в случае успеха.

Есть ли сценарий, который я мог бы использовать для запуска двоичного файла, если он не работает, если двоичные ошибки при запуске и при успешном запуске, скажем, через 20 секунд завершаются с 0 для прохождения сборки travis?

1 Ответ

0 голосов
/ 17 мая 2018

Нет необходимости использовать sleep. Вы можете изменить свою команду следующим образом, чтобы принудительно ввести код возврата на 0:

(timeout 20s <binary>; exit 0) 

Пример:

(timeout 2s '/bin/sleep' 100; exit 0) #subshell creation                                                                                        
echo $?
0

vs

timeout 2s '/bin/sleep' 100
echo $?
124
...