LINUX.ORG.RU

tee, не получается убить процесс что в начале pipe.


0

1

Есть такой костыль:

filename="/media/G/TMP/Video/$(date +%d-%m-%Y_%H-%M-%S)_$(basename "$1")"
vlc --no-one-instance -I dummy "$1" --demux=dump --demuxdump-file - | tee >(mplayer -softvol -vf screenshot -; kill -9 $$) > "$filename"

Не получается сделать так чтобы vlc убивался при завершении работы mplayer. Можно ли как то при запуске процесса получить его PID, при условии что могут существовать другие instances запускаемой программы?

Ответ на: комментарий от anonymous

Так $! показывает PID процесса, запущенного в фоне. VLC не запускается в фоне здесь, переменная $! пуста (вместо kill проверял с echo $!).

firestarter ★★★☆
() автор топика
Ответ на: комментарий от firestarter

А у тебя правда работают 2 перенаправления вывода?

Ага.

И kill -9 убивает mplayer, а не шелл, который запустил конвейер?

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

И kill -9 убивает mplayer, а не шелл, который запустил конвейер?

Убивается этот скрипт. Но VLC почему то после этого вылетает в фон и висит там, видимо его баг какой то.

firestarter ★★★☆
() автор топика

Вобщем, видимо какой то баг в VLC, решил определять его PID с помощью ps aux|grep «$1»|grep vlc|awk '{print $2}' и убивать его:

vlc --no-one-instance -I dummy --demux=dump --demuxdump-file >(tee >(mplayer -softvol -vf screenshot -; kill $(ps aux | grep "$1"|grep vlc|awk '{print $2}')) > "$filename") "$1"
firestarter ★★★☆
() автор топика
Ответ на: комментарий от firestarter

VLC почему то после этого вылетает в фон и висит там, видимо его баг какой то.

/me .oO( Дуалбутчик хуже вендузятника )

tailgunner ★★★★★
()
Ответ на: комментарий от anonymous

> pgrep

Хм, да, так красивее, спасибо:

vlc --no-one-instance -I dummy --demux=dump --demuxdump-file >(tee >(mplayer -softvol -vf screenshot -; pkill -f "$1") > "$filename") "$1"
firestarter ★★★☆
() автор топика

pee, но не проверял

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.