Просто добавьте это в свой unbound.conf
# Dns over TLS
forward-zone:
name: "."
forward-addr: 1.0.0.1@853
forward-addr: 9.9.9.9@853
forward-ssl-upstream: yes
forward-addr: 1.0.0.1
forward-addr: 9.9.9.9
$!
будет содержать PID последнего запущенного фонового задания. (команда, оканчивающаяся на&
). Вы не можете использовать его указанными способами для получения информации о других частях конвейера.
Тот факт, что ваш конвейер echo "test" | echo $!
выводит число, означает только то, что вы запустили фоновое задание в какой-то момент до запуска конвейера. Выведенное число не имеет ничего общего с вашим конвейером. В новой оболочке, где фоновые задания не запущены, этот конвейер ничего не выведет.
$!
— это PID задания, которое эта оболочка в последний раз переводила в фоновый режим. Если вы хотите что-то с ним сделать, вам обычно следует сохранить его в переменной, так как запуск другого фонового процесса перезапишет его. $!
в этом отношении похож на $?
, хотя перезаписывается не так быстро.
Как и в случае с любой другой переменной, если вы хотите сделать ее доступной для дочернего процесса, экспортируйте ее в среду.
background_command &
export background_command_pid=$!
…
bash -c 'echo "My background sibling process is $background_command_pid"'
Между прочим, вопреки вашему утверждению,$!
сохраняется в подоболочках.
$ sleep 3 & echo $!
23791
$ { echo $! | cat; }
23791
$ ( echo $!; /bin/cat /dev/null; ); /bin/cat /dev/null
23791
$ echo $! $(echo $!)
23791 23791
Запуск другого экземпляра bash не является подоболочкой. Вы путаете подоболочку с дочерним процессом, который является оболочкой .