Как получить pid в tty1 процесса, запущенного в tty2?
Контекст:
Попытка написать однострочную версию bash, чтобы убить процесс, генерирующий файл, когда этот файл превышает предопределенный максимальный размер. (Однострочник еще не работает, так как необходимо встроить его в цикл).
Во время тестирования смысл в том, что lsof не возвращает PID в терминале tty1, несмотря на то, что pid существует в tty2, где выполняется команда.
tty1: создание файла и мониторинг изменений
MAX_SIZE_Ko=10001;file=test_lsof;dd if=/dev/zero of=$file bs=1k count=800;inotifywait $file;SIZE_Ko=$(du -s $file | cut -f1); [[ "$SIZE_Ko" -gt "$MAX_SIZE" ]] && ( PID=$(lsof $file | tail -n1 | awk -F" " '{ print $2 }') ; [[ ! -z $PID ]] && kill -9 $PID || echo "no running PID modifying $file" )
tty2: увеличение размера файла
for (( 1; 1; 1));do echo -e "foobar\n" >> test_lsof; echo $(( i++ ))" - pid="$$; done