Я пытаюсь создать скрипт инициализации для программы на bash.(rhel6)
Сначала проверяются процессы.Если процессы будут найдены, это будет означать, что программа уже подключена к сети, а если нет, то перейдет к запуску программы от имени определенного пользователя с помощью сценария запуска.После этого он должен привязать лог-файл программы и проверить строку слов вместе.Если слова найдены, это должно убить хвост и повторить, что программа в сети.
Вот начальный сегмент.
prog=someProg
user=someUser
threadCount=$(ps -ef | grep $prog |grep -v 'grep' |awk '{ print $2 }'| wc -l)
startb() {
if [ "$threadCount" -eq 2 ]; then
echo "$prog already online."
else
echo "Bringing $prog online."
su $user -c "/path/to/start/script.sh"
tail -f /path/to/$prog/log/file |
while IFS=$'\n' read line
do
if [[ $line == *started\ up\ and\ registered\ in* ]]; then
pkill tail
echo "$prog now online."
fi
done
fi
}
Мои проблемы:
- Переменная $ prog не выбирается в $ threadcount независимо от того, как я пытаюсь.(с одинарными и двойными кавычками)
- Логика создания файла журнала работает случайным образом.Иногда это просто отлично работает.Он подключается и ждет, пока строка не будет найдена, прежде чем эхо-программа будет подключена к сети, а иногда просто запускает сценарий, а затем выводит эхо-сообщение о том, что программа подключена к сети без хвоста или ожидания.
Это непредсказуемо.Я также реализовал ту же логику в сегменте остановки, чтобы отслеживать журнал и затем эхо, но даже это работает так же, как и запуск.Просто случайно.
Я уверен, что это может выглядеть глупо и сломано.Это можно сделать, собирая кусочки здесь и там с моими навыками новичка в bash.
Заранее спасибо за предложения и помощь.