Как получить PID процесса, который передается по каналу к другому процессу в Bash?

Сначала я думал, что Вы могли использовать регулярные выражения, но поскольку я читал документы MySQL , кажется, что Вы не можете. На вашем месте я использовал бы другой язык (такой как PHP) для генерации списка столбцов, Вы хотите получить, сохранить его как строку и затем использовать это для генерации SQL.

51
задан codeforester 17 September 2018 в 14:11
поделиться

4 ответа

Возможно, вы могли бы использовать FIFO , чтобы вы могли захватить pid первого процесса, например:

FIFO=my_fifo

rm -f $FIFO
mkfifo $FIFO

tail -f $1 > $FIFO &
TAIL_PID=$!

cat $FIFO | nc -l -p 9977

kill $TAIL_PID

rm -f $FIFO
7
ответ дан 7 November 2019 в 09:59
поделиться

Наконец, мне удалось найти хвостовой процесс с помощью ps . Благодаря идее ennuikiller.

Я использовал ps , чтобы собрать хвост из аргументов и убить его. Это своего рода взлом, но он сработал. :)

Если вы найдете способ получше, поделитесь.

Вот полный сценарий:
(Последнюю версию можно найти здесь: http://docs.karamatli.com/dotfiles/bin/logserver )

if [ -z "$1" ]; then
    echo Usage: $0 LOGFILE [PORT]
    exit -1
fi
if [ -n "$2" ]; then
    PORT=$2
else
    PORT=9977
fi

TAIL_CMD="tail -f $1"

function kill_tail {
    # find and kill the tail process that is detached from the current process
    TAIL_PID=$(/bin/ps -eo pid,args | grep "$TAIL_CMD" | grep -v grep | awk '{ print $1 }')
    kill $TAIL_PID
}
trap "kill_tail; exit 0" SIGINT SIGTERM

while true; do
    ( $TAIL_CMD & ) | nc -l -p $PORT -vvv
    kill_tail
done
2
ответ дан 7 November 2019 в 09:59
поделиться

Один из способов - просто выполнить ps -ef и grep для tail с вашим скриптом ppid

1
ответ дан 7 November 2019 в 09:59
поделиться

Вы пробовали:

nc -l -p 9977 -c "tail -f $1"

(непроверено)

Или -e с файлом сценария, если ваш nc не имеет ] -c . Возможно, вам понадобится nc , который был скомпилирован с параметром GAPING_SECURITY_HOLE . Да, вы должны сделать соответствующие выводы из названия этой опции.

1
ответ дан 7 November 2019 в 09:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: