Мой ноутбук оснащен чипсетом Broadcom 4313, который использует тот же самый драйвер, что и ваш. Одна вещь, которую я наблюдал, заключается в том, что при устойчивом и относительно высоком сетевом трафике связь будет снижаться примерно на 10 секунд каждые 2 минуты. Это связано с тем, что драйвер сканирует точки доступа каждые 2 минуты, но не может это сделать, если ссылка поднята;
Я не уверен, почему это происходит, но обходной путь, который я нашел, это
Найти аппаратный адрес для вашего доступа точка. Один из способов сделать это - использовать команду iwconfig и посмотреть, где она говорит «Точка доступа:». У него будет адрес, похожий на AA: BB: CC: DD: EE: FF. Откройте индикатор «Сети», затем перейдите в «Редактировать подключения». Выберите свое беспроводное соединение, нажмите «Редактировать» и в поле BSSID (НЕ SSID), поместите аппаратный адрес с вашей точки доступа. Затем сохраните соединение.Я думаю, что происходит, если настроен BSSID, драйвер знает MAC-адрес маршрутизатора и не должен пытаться найти его каждые 2 минуты. Если он не настроен, все, что он знает, это SSID, и ему необходимо проверить MAC-адрес и по какой-то причине хочет сделать это постоянно.
Если значение foo > bar будет зависеть от того, есть ли команда с именем bar, которая сделает использование перенаправления намного сложнее и подвержено большей ошибке: каждый раз, когда я хочу перенаправить файл, мне сначала нужно было проверить, есть команда, названная как мой файл назначения.
Существует существенное различие между двумя операторами:
ls > log.txt -> Эта команда отправляет вывод в файл log.txt. ls | grep file.txt -> Эта команда отправляет вывод команды ls в grep через использование pipe (|), а команда grep ищет файл.txt во входном файле, предоставленном ему предыдущей командой.Если вам нужно было выполнить одну и ту же задачу с использованием первого сценария, это будет:
ls > log.txt; grep 'file.txt' log.txt
Таким образом, канал (с |) используется для отправки вывода для другой команды, тогда как перенаправление (с >) используется для перенаправления вывода в некоторый файл.
Из Руководства по системному администрированию Unix и Linux:
Перенаправление Оболочка интерпретирует символы & lt;,> и >> как инструкции для перенаправления ввода или вывода команды в файл или из него. Трубы Для подключения STDOUT одной команды к STDIN другого используйте | символ, обычно известный как труба.Итак, моя интерпретация: если это команда для команды, используйте трубу. Если вы выходите в файл или из него, используйте перенаправление.
Существует сильная синтаксическая разница между двумя:
Переадресация - это аргумент для программы. A pipe разделяет две команды. Вы можете думать о таких переадресациях: cat [<infile] [>outfile] , Это означает, что порядок не имеет значения: cat <infile >outfile совпадает с cat >outfile <infile. Вы даже можете смешивать перенаправления с другими аргументами: cat >outfile <infile -b и cat <infile -b >outfile оба прекрасно подходят. Также вы можете объединять более одного входа или выхода (входы будут считываться последовательно, и все выходные данные будут записываться в каждый выходной файл): cat >outfile1 >outfile2 <infile1 <infile2. Целью или источником перенаправления может быть либо имя файла, либо имя потока (например, 1, по крайней мере, в bash).
Но трубы полностью разделяют одну команду из другой команды, t смешивать их с аргументами:
[command1] | [command2]
Труба берет все, что записано на стандартный вывод из команды1, и отправляет его на стандартный ввод команды2.
Вы также можете комбинировать трубопроводы и перенаправление. Например:
cat <infile >outfile | cat <infile2 >outfile2
Первый cat будет читать строки из infile, затем одновременно записывать каждую строку в outfile и отправлять ее ко второму cat.
В второй cat, стандартный ввод сначала считывается из трубы (содержимое infile), затем считывается из infile2, записывая каждую строку в outfile2. После выполнения этого outfile будет копией infile, а outfile2 будет содержать infile, за которым следует infile2.
Наконец, вы действительно делаете что-то действительно похожее на ваш пример, используя перенаправление «здесь строки» (только для семейства bash) и backticks:
grep blah <<<`ls`
даст тот же результат, что и
ls | grep blah
Но я думаю, что версия перенаправления сначала будет считывать весь вывод ls в буфер (в памяти ), а затем подайте этот буфер на grep по одной строке за раз, тогда как версия с каналами будет принимать каждую строку от ls по мере ее появления и передать эту строку grep.
Сегодня я столкнулся с проблемой в C. По сути, у Трубы есть и другая семантика для перенаправления, даже если она отправлена на stdin. На самом деле, я думаю, что учитывая различия, трубы должны идти куда-то, кроме stdin, так что stdin и позволяет называть его stdpipe (чтобы сделать произвольный дифференциал) можно обрабатывать по-разному.
Учти это. При передаче одной программы на другой fstat, кажется, возвращается ноль в качестве st_size, несмотря на ls -lha /proc/{PID}/fd, показывающий, что есть файл. При перенаправлении файла это не так (по крайней мере на debian wheezy, stretch и jessie vanilla и ubuntu 14.04, 16.04 vanilla.
Если вы cat /proc/{PID}/fd/0 с перенаправление, которое вы сможете повторить, чтобы читать столько раз, сколько захотите. Если вы сделаете это с помощью трубы, вы заметите, что во второй раз, когда вы выполняете задачу последовательно, вы не получите тот же результат.