Хвост файла до выхода процесса

Прохождение ответов на суперпользователя .

Я пытаюсь изменить это, чтобы прослушивать несколько строк и эхо-пользовательские сообщения, такие как; «Ваш сервер успешно запущен» и т. Д.

  • Как сохранить результат выполнения команды оболочки в переменной в python?
  • Управление rsync с помощью Python?
  • Могу ли я использовать псевдоним для выполнения программы из сценария python
  • запустить скрипт python непосредственно из командной строки
  • Как создать новый файл на удаленном узле в базе данных (средство развертывания python)?
  • как сделать подпроцесс, вызванный с помощью вызова / Popen, наследовать переменные среды
  • Я также пытаюсь применить его к другой команде, т.е.

    wait_str() { local file="$1"; shift local search_term="Successfully installed"; shift local search_term2='Exception' local wait_time="${1:-5m}"; shift # 5 minutes as default timeout (timeout $wait_time tail -F -n0 "$file" &) | grep -q "$search_term" && echo 'Custom success message' && return 0 || || grep -q "$search_term2" && echo 'Custom success message' && return 0 echo "Timeout of $wait_time reached. Unable to find '$search_term' or '$search_term2' in '$file'" return 1 } 

    Использование, которое я имею в виду, это:

     pip install -r requirements.txt > /var/log/pip/dump.log && wait_str /var/log/pip/dump.log 

    Чтобы уточнить, я бы хотел, чтобы wait_str прекратил работу с хвостом, когда выйдет pip, успешно или нет.

  • Сравните два изображения: путь python / linux
  • Почему PyImport_Import не может загрузить модуль из текущего каталога?
  • Как «заблокировать клавиатуру», чтобы предотвратить отправку других нажатий на X11 / Linux / Gnome?
  • Простая проблема развертывания Python - целый мир боли
  • Функция обратного вызова при каждом нажатии клавиши (независимо от того, какое окно имеет фокус)?
  • Python запускает дочерний подпроцесс, отсоединяется и выезжает
  • One Solution collect form web for “Хвост файла до выхода процесса”

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

    Если другая строка нуждается в разных действиях, используйте следующую команду:

     tail -f var/log/pip/dump.log |awk '/condition1/ {action for condition-1} /condition-2/ {action for condition-2} .....' 

    Если несколько условий требуют такого же действия, разделите их с помощью оператора OR:

     tail -f var/log/pip/dump.log |awk '/condition-1/ || /condition-2/ || /condition-n/ {take this action}' 

    Основываясь на комментариях: Single awk может это сделать.

     tail -f /path/to/file |awk '/Exception/{ print "Worked"} /compiler/{ print "worked"}' 

    или

     tail -f /path/to/file | awk '/Exception/||/compiler/{ print "worked"}' 

    ИЛИ Выйти, если совпадение найдено

     tail -f logfile |awk '/Exception/||/compiler/{ print "worked";exit}' 
    Python - лучший язык программирования в мире.