Bash Выполнить команду на определенное время? - программирование

Bash Выполнить команду на определенное время?

Я делаю сценарий Bash для моего использования. Как я могу запустить команду в течение определенного времени, например, 20 секунд, и завершить команду? Я пробовал много решений, но ничего не работает, я также пробовал команду тайм-аута без успеха. Пожалуйста, дайте мне какое-нибудь решение для этого.

Например: я хочу запустить эту команду в скрипте и терминале через 10 секунд

some command
4b9b3361

Ответ 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 "Привет, мир!"