Подождите, пока процесс переднего плана выдаст строку, затем отправьте ее в фоновый режим.

Нет, невозможно изменить facility/severity сообщений журнала.

Документ property replacer document предназначен для операций regex над сообщением журнала, а не над facility/severity.

rsyslog посылает пакет с заголовком и сообщением журнала. Сообщение журнала может быть обработано с помощью Regex, но заголовок содержит объект и серьезность, которые обрабатываются rsyslog/syslog.

Вы можете передать facility/severity через сообщение журнала на удаленный сервер syslog, но сервер syslog возьмет facility/severity из заголовка пакета.

5
14.10.2016, 05:11
1 ответ

Идея заключается в том, чтобы запустить сервер в фоновом режиме, а затем искать его вывод, пока не появится ожидаемая строка 'Something 3' ('Server Initialized' в вашем случае)

#!/bin/bash

main()  
{
    output=$(mktemp "${TMPDIR:-/tmp/}$(basename 0).XXX")
    server &> $output &
    server_pid=$!
    echo "Server pid: $server_pid"
    echo "Output: $output"
    echo "Wait:"
    until grep -q -i 'Something 3' $output
    do       
      if ! ps $server_pid > /dev/null 
      then
        echo "The server died" >&2
        exit 1
      fi
      echo -n "."
      sleep 1
    done
    echo 
    echo "Server is running!" 
}

server() 
{       
    i=0
    while true; do
      let i++
      echo "Something $i"  
      sleep 1
    done
}

main "$@"
5
27.01.2020, 20:42

Теги

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