«echo> / sys /…» не действует при использовании> / dev / null 2> & 1

Если вам нужны первые два миллиона строк:

head -n 2000000 sub2016

Если вы хотите, чтобы в файле произвольно выбирался блок из двух миллионов строк:

tail -n +$((RANDOM * RANDOM % 18000000)) sub2016 | head -n 2000000

Это выбирает два случайных числа между 0 и 32767, умножает их, уменьшает диапазон до 18 миллионов (20 миллионов минус 2 миллиона), пропускает такое количество строк и выводит два миллиона строк.

5
10.05.2017, 01:15
1 ответ
echo 1 > /sys/block/sda/device/rescan >/dev/null 2>&1
       ^                              ^

Здесь у вас есть два перенаправления вывода. Последний вступает в силу, поэтому он эквивалентен:

echo 1 >/dev/null 2>&1

, который ничего не записывает в файлы в /sys.

Здесь вы запускаете команду echo, которая выводит на стандартный вывод только то, что вы просите напечатать в командной строке, так что она не напечатает там ничего «удивительного». Кроме того, хотя вы можете получить ошибки, если первое перенаправление не может быть открыто, они, скорее всего, возникнут, когда перенаправление выполняется, т. е. из оболочки, а не из самой команды, поэтому даже перенаправление 2> может ничего не делать.

С другой стороны, если запуск этого повторного сканирования вызывает где-то вывод, скорее всего, он исходит из ядра посредством обычных механизмов ведения журнала. Поэтому вам нужно проверить, какова конфигурация ведения журнала, чтобы контролировать это.

Если вы используете виртуальный терминал Linux, некоторые сообщения ядра печатаются на активном виртуальном терминале. Вы можете использовать dmesg -n , чтобы установить уровень приоритета сообщений, поступающих на консоль.

22
27.01.2020, 20:31

Теги

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