Я в основном пытаюсь упростить отладку для других моих скриптов.
(Centos 7.6)
Мне нужен скрипт, выполняющий:
- tail -f последняя запись файла в каталоге
- , если новый файл появляется в этом каталоге, он плавно регистрирует этот новый файл
- , если я отправляю SIGINT (Ctrl + C) , он не оставляет сирот
- с менее возможными надстройками для максимальной переносимости
Это мое неработающее решение:
CURRENT_FILE=`ls -1t | head -n1`
tail -n 100 -f "$CURRENT_FILE" &
PID=$!
while [ true ];
do
#is there a new file in the directory ?
NEW_FILE=`ls -1t | head -n1`
if [[ "$CURRENT_FILE" != "$NEW_FILE" ]]; then
#yes, so kill last tail
kill -9 $PID
clear
#tail on the new file
CURRENT_FILE=$NEW_FILE
tail -n 100 -f "$CURRENT_FILE"
PID=$!
fi
sleep 1s
done
Проблема с этим решением состоит в том, что когда я отправляю SIGINT (Ctrl + C), то, что я обычно делаю при выходе из "tail -f", оставляет сиротского ребенка в фоновом режиме. Я искал решение с "ловушкой", но у меня ничего не получилось, и похоже, что оно не работает с таким вечным процессом, как "tail -f".
Я буду рад здесь свои мысли об этом и углубляйтесь в bash программирование.