Я делаю сценарий Bash для моего использования. Как я могу запустить команду в течение определенного времени, например, 20 секунд и завершить команду? Я пробовал много решений, но ничего не работает, я также пробовал команду тайм-аута безуспешно. Пожалуйста, дайте мне какое-то решение для этого.
например: я хочу запустить эту команду в скрипте и терминале через 10 секунд
some command
some command > logfile &
в первой строке. После этого вы можете анализироватьlogfile
.Из командной строки Bash вы можете использовать "
your_command & sleep 20; kill $!
aptget install timeout
иtimeout -k 3m 14s your_command
expect
как описано здесь: /unix/43340/how-to-introduce-timeout-for-shell-scriptingperl -e "alarm 10; exec @ARGV" "Your_command"
$COMMAND 2>&1 >/dev/null & WPID=$!; sleep $TIMEOUT && kill $! & KPID=$!; wait $WPID
( Источник и объяснение )источник
Другой способ - использовать pgrep $ pattern или pkill $ pattern; возвращает все PID, соответствующие данному шаблону, просматривая все запущенные процессы на машине. Поэтому, чтобы ограничить область действия PID только теми, которые у вас есть, используйте: pgrep -P $ mypid $ pattern или pkill -P $ mypid $ pattern
Таким образом, чтобы запустить фоновый процесс в течение заданного промежутка времени, ваш скрипт будет выглядеть примерно так:
Имейте в виду, что это приведет к уничтожению всех процессов с одинаковым шаблоном имен, работающих под текущим родительским PID. Таким образом, вы можете использовать это для запуска нескольких процессов и уничтожения их всех одновременно через определенное время.
источник
Вы можете использовать будильник командной строки, как Ebay-Alarm
Установите скрипт будильника и сделайте
ebay-alarm 10 sec -c some command &
источник