По умолчанию команда тайм-аута просто отправляет сигнал SIGTERM всякий раз, когда истекает тайм-аут. Этот сигнал может быть пойман и проигнорирован процессами, что приведет к тому, что процесс не завершится. Git, вероятно, игнорирует SIGTERM.
Из справочной страницы timeout :
Если сигнал не указан, отправьте сигнал TERM по истечении времени ожидания. Сигнал TERM уничтожает любой процесс, который не блокирует или не перехватывает этот сигнал. Может потребоваться использовать сигнал KILL (9) (...)
Если вам действительно нужен тайм-аут, вы можете использовать переключатель -k
для отправки вместо этого SIGKILL. Используйте на свой страх и риск. Это может или не может испортить ваше репо:
timeout -k 0.02s 0.01s git status
Сначала будет отправлен SIGTERM через 0,01 секунды, а затем SIGKILL через 0,02 секунды после первого сигнала .
Обратите внимание, что вам нужно передать две длительности (одну для SIGTERM и одну для SIGKILL). Я предлагаю вам использовать более длительную продолжительность (например, 1 с), иначе git, вероятно, не сможет сделать что-либо полезное, в зависимости от размера вашего репо.