В:
tail -n0 -f -- "$my_input" |
ql_receiver_lock_holder |
sed /xxx/q > "$my_output"
sed
завершится после прочтения первой строки, содержащей xxx
. ql_receiver_lock_holder
выйдет из (, убитого SIGPIPE )при первой записи, которую он сделает в стандартный вывод (теперь сломанного канала )после этого. tail
завершает работу при первой записи после этого. Если вы хотите, чтобы ql_receiver_lock_holder
и tail
завершались сразу после выхода sed
, не дожидаясь их следующей записи в стандартный вывод, вы можете использовать подходы, описанные в
Обратите внимание, что этот вид while read
цикла не является правильным способом обработки текста в оболочках . По крайней мере, вам понадобится что-то вроде:
while IFS= read -r line; do
printf '%s\n' "$line"
case $line in
(*xxx*) break
esac
done
для замены sed /xxx/q
, но это было бы ужасно неэффективно, за исключением очень небольшого ввода.
В демонстрационных целях я предположу, что ваше сетевое устройство — wlan0
. Замените wlan0
на имя вашего собственного интерфейса. Имя интерфейса можно проверить с помощью ifconfig -a
.
Прежде всего, начните с выполнения ifconfig wlan0 up
.
Проверьте, не заблокировано ли ваше устройство программно, запустивrfkill list all
:
0: phy0: Wireless LAN
Soft blocked: no
Hard blocked: no
1: hci0: Bluetooth
Soft blocked: no
Hard blocked: no
Если на вашем беспроводном устройстве установлена программная блокировка, запустите sudo rfkill unblock wifi
. Это сохранилось у меня после перезагрузки.
Определите, управляет ли ваш NetworkManager по-прежнему вашим -Fi, запустив nmcli
или nmcli dev status
. Если он помечен как неуправляемый, вы можете попробовать dev set wlan0 managed yes
.
Если у вас это не работает, проверьте /etc/NetworkManager/NetworkManager.conf
. В моем случае у меня были эти оскорбительные строки:
[keyfile]
unmanaged-devices=interface-name:wlan0
Я закомментировал строку unmanaged-devices=
, поставив перед ней #
, а затем запустив service network-manager restart
, что решило проблему для меня.
В общем, вы можете попробовать grep wlan0 /etc/ -R
и проверить все отображаемые файлы (так я обнаружил строку unmanaged Wi -Fi в настройках Network Manager ). Обязательно делайте резервные копии всего, что вы меняете.
Кроме того, в комментариях к исходному вопросу есть несколько команд для устранения неполадок.