Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Linux автоматизация, если программа вывела в терминал определённое слово то сделать что-то

Ламер Ламерович Просветленный (26317), на голосовании 1 год назад
есть определённая программа, нужно отслеживать её вывод в терминал, и если там есть определённое слово, к примеру "error" , то программу необходимо перезапустить.
пробовал через expect но не нашёл рабочий пример.
Голосование за лучший ответ
Терр Онтал Мудрец (12777) 1 год назад
Перенаправь вывод в файл и через tail смотри
Ламер ЛамеровичПросветленный (26317) 1 год назад
и мне тупо tail в бесконечном цикле с sleep вызывать?
Терр Онтал Мудрец (12777) Ламер Ламерович, Лучше для начала узнай как она работает, а потом уже идиотские идеи предлагай
Татьяна Просветленный (36384) 1 год назад
Для отслеживания вывода программы в терминале и выполнения определенных действий при нахождении определенного слова можно использовать bash-скрипты.
Код такого скрипта:
 #!/bin/bash 

while true; do
output=$(program_name) # здесь program_name - это название программы, вывод которой нужно отслеживать
if [[ $output == *"error"* ]]; then # если в выводе есть слово "error"
echo "Error found, restarting program..." # выводим сообщение
pkill program_name # завершаем процесс программы
program_name & # запускаем программу заново
fi
sleep 1 # ждем 1 секунду перед повторной проверкой вывода
done
В этом скрипте используется цикл while, который бесконечно выполняет проверку вывода программы. Если в выводе программы найдено слово "error", то скрипт завершает процесс программы и запускает его заново. Для завершения процесса используется команда pkill, а для запуска - команда запуска программы с символом & в конце, чтобы программа запускалась в фоновом режиме.
Также можно использовать утилиту expect для автоматизации взаимодействия с программой, но для этого нужно знать, как программа взаимодействует с пользователем. Примеры использования expect можно найти в документации к утилите и в Интернете.
Похожие вопросы