1. script:ourfunc()
{
while read line; do
echo $line | grep "выбираем" > file2.log
done < /dev/stdin
}/usr/bin/tail -F file1.log | ourfunc
2. Запускаем script из консоли, работает...
Делаем Ctrl-C, скрипт остановился все ок, все запущенные script'ом процессы остановились.3. Запускаем скрипт:
# daemon scriptДелаем:
kill -9 pid_scriptaВидим, что в процессах script отсутствует, но остался процесс:
/usr/bin/tail -F file1.log4. Почему так, ведь родительский процесс убит?
Еще: если сразу убить процесс /usr/bin/tail -F file1.log
то и родительский процесс script помрет...5. Как правильно убить script, что бы не осталось порожденных процессов?
> ourfunc()
> {
> while read line; do
> echo $line | grep "выбираем" > file2.log
> done < /dev/stdin
> }Про убивание ничего не скажу, но эта конструкция глаз режет. Надо так:
ourfunc()
{
grep "выбираем" > file2.log
}> /usr/bin/tail -F file1.log | ourfunc
Проходили :)
Тогда он выберет всего одну строку,
а мне надо на лету все строки брать.
> Проходили :)
> Тогда он выберет всего одну строку,
> а мне надо на лету все строки брать.Ааа, вижу. Только не "всего одну", а при убивании скрипта, наверное, буферизация приводит к потере данных.
> 5. Как правильно убить script, что бы не осталось порожденных процессов?нужно послать группе процессов, то есть послать отрицательному пиду.
например pid=4567kill -TERM -4567
Помогло! Спасибо.