Bash Выполнить команду на определенное время?
Я делаю сценарий Bash для моего использования.
Как я могу запустить команду в течение определенного времени, например, 20 секунд, и завершить команду?
Я пробовал много решений, но ничего не работает, я также пробовал команду тайм-аута без успеха. Пожалуйста, дайте мне какое-нибудь решение для этого.
Например: я хочу запустить эту команду в скрипте и терминале через 10 секунд
some command
Ответы
Ответ 1
Вот несколько сценариев bash и программа под названием timelimit, которая может решить вашу проблему.
Убить процесс после того, как ему разрешили работать некоторое время
EDIT: Думаю, я нашел лучшее решение. Попробуйте использовать программу тайм-аута. На странице руководства:
"timeout - запустить команду с ограничением по времени". Например:
timeout 5s sleep 10s
Он в основном запускает вашу команду, и после указанной продолжительности он убьет его.
Ответ 2
В системах, которые не предоставляют команду timeout
, вы можете использовать следующее:
your-cmd & sleep 30 ; kill $!
Это будет работать в течение долгого времени your-cmd
с таймаутом 30 секунд.
Если your-cmd
не закончится в течение 30 секунд, будет отправлен сигнал TERM
.
Ответ 3
Вы хотите запланировать выполнение script? Затем cron является вашим другом.
Ответ 4
Я предлагаю 2 варианта:
- В системах, где у вас есть команда
timeout
, вы можете использовать ее в соответствии с man timeout
.
- В системах без него (например, CentOS 5) вы можете использовать script, поставляемый с bash
/usr/share/doc/bash-3.2/scripts/timeout
. Используйте его в соответствии с информацией об использовании.
Ответ 5
Используйте операнд сон и &:
сон [время в секундах] && & & ваш-команда
Пример:
сон 7 && & echo "Привет, мир!"