2015-04-15 6 views
2

Итак, у меня есть скрипт, который запускает службу и обрабатывает файл журнала до тех пор, пока служба окончательно не инициализирует. Для достижения этой цели я использовал следующее: Linux: Block until a string is matched in a file ("tail + grep with blocking")Выход хвостового хвоста в скрипт bash в настоящее время запущен

Теперь я хочу, чтобы мой пользователь увидел выходные данные хвоста, когда хвост начинается, чтобы они могли отслеживать ход обслуживания. Я знаю несколько способов назад об этом, например, разворачивание нового окна и вывод всех хвостов на новый дескриптор. Это работает только тогда, когда пользователь находится на фактической рабочей станции, но скрипт взаимодействует удаленно через SSH. Так что это не сработает в моем случае.

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

Если я слишком расплывчатый, дайте мне знать. Я могу опубликовать скриншот, чтобы лучше объяснить, чего я пытаюсь достичь.

Спасибо

+0

какой ответ оттуда вы использовали? Что вы имеете в виду, когда говорите «перетащите хвост в текущее окно, тем временем сохраняя вывод хвостового файла только одной строкой», вы хотите, чтобы весь журнал показывался или только строка, которую вы ищете? –

+0

@EtanReisner Первый ответ. 'grep -q 'PATTERN' <(tail -f file.log)'. И хотите, чтобы весь журнал был подключен к окну, выполняющему сценарий, но я надеюсь, что вместо того, чтобы извергать весь вывод, мы можем обрезать его до одной строки. Хотелось бы, чтобы я знал правильную терминологию, я уверен, что это, вероятно, поможет вам лучше понять, что я прошу. – user0000001

+0

Это часть, которую я не понимаю. Как вы ожидаете показать весь файл журнала в одной строке? Вы хотите, чтобы одна строка постоянно обновлялась по мере появления новых строк в журнале? Как «строка состояния»? –

ответ

0

Я не уверен, что я подбирая все ваши требования ясно, является SSH 100% необходимость стоит?

Вот как вы * могли бы сделать это:

#if grep command succeeds then enter infinite loop to repeatedly post to netcat server for remote processing 
if (grep -q 'PATTERN'); then 
    while : 
     tail -n 1 | nc -l 3333 

И вы можете подключиться к нему:

nc <you_other_server's_ip> 3333 
+0

вы создаете 1 процесс хвоста за строку ... не должно ли это работать? (я не могу попробовать сейчас): {grep -q 'PATTERN' && tail -f;} | nc -l 3333 –

Смежные вопросы