Вы можете перечислить другие сети в cli, используя nmcli
.
nmcli con show
или
nmcli d
Затем нужно скопировать UUID для дальнейшего подключения к нужному интерфейсу.
nmcli c up uuid
или
nmcli -p con up "my-eth1" ifname eth1
О ресурсах: для начала можно ознакомиться с этим: nmcli, затем можно пойти дальше и использовать nmcli_fedora23.
Кстати, вы можете глубже прорезаться через http://unix.stackexchange.com - например, connect through cli
Заключите команду в круглые скобки:
( tail -f z | grep 'd' ) &
kill -- -$!
Это убьет весь подпроцесс.
Здесь, указав отрицательный PID для уничтожения, мы уничтожаем всю группу процессов. См. man 1 kill
:
Отрицательные значения PID могут использоваться для выбора целых групп процесса; см. столбец PGID в выходных данных команды ps.
Или man 2 kill
:
Если pid меньше -1, то sig отправляется каждому процессу в группе процессов с идентификатором -pid.
Однако kill -PID
будет работать только , если управление заданиями включено в bash
(по умолчанию для интерактивных оболочек). В противном случае у вашего подпроцесса не будет выделенной группы процессов, и команда kill завершится ошибкой с kill: (-PID) - Нет такого процесса
Чтобы обойти это, либо активируйте управление заданиями в bash
( установить -m
) или использовать pkill -P $!
Я попробовал это, но у меня не сработало
( tail -f z | grep 'd' ) &
kill -- -$!
Я просто использовал именованный канал вместо безымянного канала
rm -f tailfifo; mkfifo tailfifo
tail -n 0 -f mylog.log >tailfifo &
TAIL_PID=$!
grep --line-buffered someword <tailfifo >outputfile &
GREP_PID=$!
#....
kill $TAIL_PID
kill $GREP_PID
Ответ xhienne не работает в не -интерактивном sh (тире ). использование ()
не создаст группу процессов, поэтому sh -c '(sleep 6m | sleep 8m) & kill -- -$!'
не сработает.
Тем не менее, вы можете использовать ps --no-headers --format pgid:1 $!
найти pgid всей трубы и убить его.
sleep 6m | sleep 8m &
pgid=`ps -ho $!`
kill -- -$pgid
Кроме того, использование ()
в конвейере приведет к тому, что оболочка не создаст группу процессов.
pgid() {
ps --no-headers --format pgid:1 $1
}
while true
do nc $ip $port
done | str2str -out tcpsvr://:5566 &
echo `pgid $!` == $$
wait