2016-02-08 8 views
1

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

echo 'monitoring started' 
tail -f /var/log/some.log 
echo 'never gets here' 

проблема, выход tail на Ctrl + C, нарушает выполнение скрипта тоже, так что очистка не называется. Есть ли способ «правильно» выйти tail и возобновить вызов скрипта? Я нашел несколько решений, основанных на сохранении PID и убивании его таймаутом, но это не то, что я хочу здесь, мне может потребоваться мониторинг в течение нескольких минут или нескольких часов, поэтому я бы хотел иметь ручной переключатель.

ответ

3

Вы можете сделать что-то вроде этого

echo "monitoring started" 
tail -f /var/log/some.log & #execute tail in background 
read -sn 1 #wait for user input 
kill %1 #kill the first background progress, i.e. tail 
echo "Is reached" 
+0

спасибо, это работает отлично. –