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

Это как-то странно. Я пытаюсь отсканировать устройство iscsi, используя следующую команду:

echo 1 > /sys/block/sda/device/rescan >/dev/null 2>&1 # Doesn't work. The rescan won't recognize the new available disk space. echo 1 > /sys/block/sda/device/rescan # Works: recognizes the new available disk space. 

Как я могу отправить все stdout и stderr в /dev/null , так как я не хочу, чтобы мой экран стал беспорядочным?

 echo 1 > /sys/block/sda/device/rescan >/dev/null 2>&1 ^ ^ 

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

 echo 1 >/dev/null 2>&1 

который ничего не пишет о файлах в /sys .

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

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

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