вторник, 6 ноября 2007 г.

Статус и pid последней запущенной программы в bash

Иногда возникает следующая ситуация - необходимо из bash-скрипта запустить какую-либо программу, которая пишет что-либо в свой лог, указывая при этом свой pid и возвращает статус выхода. И необходимо отловить и то и другое, чтобы в дальнейшем по pidу grepать лог и по статусу ещё что-нить делать. Но bash предоставляет только одну возможность из этих двух - если вызываемая программа вызывается в фоновом режиме (&), то bash даёт её pid ($!), но не даёт статус выхода. Если программа вызывается в обычном режиме, последовательно, bash дает статус выхода ($?), но на даёт pid, который был у этой программы. Вот как это победить (идея Володи Горохова):

#!/bin/bash

mega_programma &
wait $!
STAT=$?
PR=$!
echo $STAT
echo $!
cat mega_programma.log grep $PR
exit $STAT

Комментариев нет:

Ярлыки