Цикл: Запустите программу и уничтожьте, после испытывают таймаут

для отладки причин я хочу определить одну из тех ошибок, обнаруживающихся просто иногда. Поэтому я хочу кодировать некоторое время цикл в оболочке

  • запуск программы (если это будет segfault =>, это - то, что я хочу),
  • закройте программу после определенного тайм-аута (например, несколько секунд)

Проблема здесь состоит в том, что PID изменится. Можно ли дать мне подсказку о том, как выполнить это? Я использую zsh, но другие оболочки приветствуются также!

3
задан 13.08.2010, 19:12

4 ответа

#/usr/bin/env zsh
for i in `seq 1 10`; do
    echo "start sleep";
    sleep 30&
    LAST_CHILD=$!
    echo "PID\$!: "$LAST_CHILD;
    echo "wait for kill:"
    sleep 1 && kill -9 $LAST_CHILD;
done

должен работать с ударом также, но мне все еще нужно некоторое segfault обнаружение так аварийные прекращения работы цикла.

0
ответ дан 07.12.2019, 23:44

Тайм-аут походит на то, что Вы ищете.

man timeout
timeout - run a command with a time limit
4
ответ дан 07.12.2019, 23:44

Не сделали этого некоторое время, но основная идея состоит в том, чтобы заставить рабочую оболочку отправлять, это - PID в именованный файл, прежде чем она запустит цикличное выполнение, и затем читайте, тот файл въезжают задним ходом с отдельной уничтожающей программой, которая имеет таймер на ней. Это не "твердо", но дьявол в деталях...

1
ответ дан 07.12.2019, 23:44

Попробуйте сценарий удара здесь:

http://www.cyberciti.biz/faq/shell-scripting-run-command-under-alarmclock/

Это делает икру сторожевого процесса, который знает, что PID подкоманды работает. Протест: в этом сценарии, команда для уничтожения потребностей быть непосредственным ребенком сценария.

1
ответ дан 07.12.2019, 23:44

Теги

Похожие вопросы