Linux — это интересная операционная система, в которой размещены некоторые виртуальные устройства для различных целей. Для программ, работающих в системе, эти виртуальные устройства действуют так, как будто это реальные файлы. Инструменты могут запрашивать и получать данные из этих источников. Данные генерируются ОС вместо того, чтобы считывать их с диска.
Одним из таких примеров является /dev/null . Это специальный файл, который присутствует в каждой системе Linux. Однако, в отличие от большинства других виртуальных файлов, вместо чтения он используется для записи. Все, что вы запишете в /dev/null , будет отброшено, забыто в пустоте. В системе UNIX он известен как нулевое устройство. Зачем вам выбрасывать что-то в пустоту?
Давайте посмотрим, что такое /dev/null и как он используется.
Оглавление:
- Предварительно
- Использование /dev/null
- Перенаправление вывода в /dev/null
- Перенаправить весь вывод в /dev/null
- Другие примеры
Предварительно
Прежде чем углубиться в использование /dev/null , мы должны иметь четкое представление о потоке данных stdout и stderr . Ознакомьтесь с этим коротким руководством по stdin, stderr и stdout.
Linux для Начинающих — Перенаправление вывода / ввода — /dev/null
Давайте сделаем небольшое уточнение. При запуске любой утилиты командной строки она генерирует два вывода. Вывод идет на stdout , а ошибка (если она возникла) — на stderr . По умолчанию оба этих потока данных связаны с терминалом.
Например, следующая команда выведет строку, заключенную в двойные кавычки. Здесь вывод сохраняется в stdout .
$ echo «Hello World»
Следующая команда покажет нам статус выхода ранее запущенной команды.
$ echo $?
Поскольку предыдущая команда была выполнена успешно, статус выхода равен 0. В противном случае статус выхода будет другим. Что произойдет, если вы попытаетесь выполнить недопустимую команду?
$ adfadsf $ echo $?
Теперь нам нужно разобраться в файловом дескрипторе. В экосистеме UNIX это целочисленные значения, присвоенные файлу. И stdout (дескриптор файла = 1), и stderr (дескриптор файла = 2) имеют определенный дескриптор файла. Используя дескриптор файла (1 и 2), мы можем перенаправить stdout и stderr в другие файлы.
Для начала, следующий пример перенаправит stdout команды echo в текстовый файл. Здесь мы не указали дескриптор файла. Если он не указан, bash будет использовать stdout по умолчанию.
$ echo «Hello World» > log.txt
Следующая команда перенаправит stderr в текстовый файл.
$ asdfadsa 2> error.txt
Использование /dev/null
Перенаправление вывода в /dev/null
Теперь мы готовы узнать, как использовать /dev/null . Сначала давайте проверим, как фильтровать обычный вывод и ошибки. В следующей команде grep попытается найти строку (hello, в данном случае) в каталоге «/sys».
$ grep -r hello /sys/
Однако это вызовет множество ошибок, поскольку без привилегий root grep не может получить доступ к ряду файлов. В этом случае он выдаст ошибку «Permission denied». Теперь, используя перенаправление, мы можем получить более четкий результат.
$ grep -r hello /sys/ 2> /dev/null
Вывод выглядит намного лучше, верно? Ничего! В этом случае у grep нет доступа ко многим файлам, а в тех, что есть, нет строки «hello».
В следующем примере мы будем пинговать Google.
$ ping google.com
Однако мы не хотим видеть все эти успешные результаты пинга. Вместо этого мы хотим сосредоточиться только на ошибках, когда ping не смог достичь Google. Как нам это сделать?
$ ping google.com 1> /dev/null
Здесь содержимое stdout сбрасывается в /dev/null , оставляя только ошибки.
Перенаправить весь вывод в /dev/null
В некоторых ситуациях вывод может оказаться бесполезным. Используя перенаправление, мы можем сбросить весь вывод в пустоту.
$ grep -r hello /sys/ > /dev/null 2>> /dev/null
Другие примеры
Это интересный пример. Знаете инструмент dd ? Это мощный инструмент для преобразования и копирования файлов. Узнайте больше о dd . Используя dd , мы можем проверить скорость последовательного чтения вашего диска. Конечно, это не точное измерение. Однако для быстрого теста это довольно полезно.
$ dd if= of=/dev/null status=progress bs=1M iflag=direct
Здесь я использовал Ubuntu 18.04.4 ISO в качестве большого файла.
Аналогичным образом вы также можете проверить скорость загрузки вашего интернет-соединения.
$ wget -O /dev/null
Надеемся, у вас есть четкое понимание того, что такое файл /dev/null. Это специальное устройство, которое при записи в него отбрасывает, а при чтении из него считывает null. Истинный потенциал этой интересной возможности заключается в интересных bash-скриптах.
Источник: wp-kama.ru
Зачем /dev/null, если можно без него?
Часто видел такое в кроне: /dev/null 2>не выводи» и оно будет мусорить в консоль, а нам это не нужно?
Решения вопроса 1
driverx18, считается, что у любой программы может быть вывод. если у конкретной программы его нет — то это свойство конкретной программы, я говорю об общем случае.
по умолчанию, если не указано, куда выводить стандартный поток сообщений, то вывод идёт в стандартное устройство вывода — на консоль.
по умолчанию, если не указано, куда выводить стандартный поток ошибок, то вывод идёт в стандартное устройство вывода — на консоль.
если приложение, запущенное через cron, делает вывод в стандартный поток сообщений и/или в стандартный поток ошибок, то cron это перехватывает и, в зависимости от настроек, может херить или, что встречается чаще, передавать в подсистему логгирования, класть в мейлбокс.
поэтому, если вывод сообщений и ошибок принудительно не переназначить в другое место (например, в /dev/null), он, как правило, окажется в почте.
Ответ написан более трёх лет назад
Комментировать
Нравится 9 Комментировать
Ответы на вопрос 2
PHP, Golang. https://github.com/index0h
Вот вам пример: есть некий сервис S, слушающий порт 80, нужно раз в секунду делать на него http запрос через curl (или wget), как только S начал отвечать 200-ым ответом, без ошибок — выполнить команду C. При этом любой ответ от curl/wget — ожидаемый, даже невозможность определить ip по хосту, и его не нужно выводить в консоль, или логгировать как-то по другому.
Это пример из жизни, используется при старте контейнеров через docker-compose, для выполнения последовательности запуска и миграций.
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Жил-был у бабушки серенький троллик.
Абсолютному большинству программ в линухе нельзя сказать — не выводи ничего. Есть отдельные программы с «тихим» режимом, но большинство выводит свои ошибки в консоль, причем иногда весьма подробно. В очень большом количестве случаев этот вывод тебе накуа не нужен — и его отправляют в /dev/null
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Ваш ответ на вопрос
Войдите, чтобы написать ответ
- Linux
- +2 ещё
Как скопировать SSH ключ на удалённую Ubuntu 18.04 при помощи ssh-copy-id?
- 1 подписчик
- 4 часа назад
- 60 просмотров
Источник: qna.habr.com
Dev null что такое minecraft
Для тех кто всё ещё не понял, это будет предмет, в слот которого не может поместится больше определённого кол-ва выбранных предметов. Если это количество достигнуто, то лут имеющий такой же id как и тот который лежит в нашем /dev/null`e не будет собираться.
Если вы всё ещё не поняли, то скажу так:
1. Это не имба.
2. Это полезно, особенно шахтёрам.
#1.1 контекстная реклама от партнеров
papasid
Ответов: 9240
#2: 2016-02-09 18:58:51 ЛС | профиль | цитата
Hammering писал(а):
Это полезно, особенно шахтёрам.
Hammering
Ответов: 326
#3: 2016-02-09 19:03:31 ЛС | профиль | цитата
papasid писал(а):
Не надо в лишний раз отвлекаться на очистку инвентаря от булыжниказемлигравия, то есть ты просто копаешься и тебе единственное что нужно делать — это менять буры.
papasid
Ответов: 9240
#4: 2016-02-09 19:16:32 ЛС | профиль | цитата
Не понял. Ресурсы что ли не нужны уже стали?
Почему нельзя старым способом — по одному предмету в каждую ячейку и будет лутаться что ты захочешь.
Hammering
Ответов: 326
#5: 2016-02-09 19:22:00 ЛС | профиль | цитата
Можно и так, но иногда не хочется закладывать весь инвентарь блоками.
—VanHelsing_1—
Ответов: 622
#6: 2016-02-09 19:26:16 ЛС | профиль | цитата
Мне кажется что старый вариант с закладыванием инвентаря блоками вполне сойдет,ну нужно это вводить..
Hammering
Ответов: 326
#7: 2016-02-09 19:26:56 ЛС | профиль | цитата
Примерно оформил блок, помещённый в /dev/null
LoneWanderer
Ответов: 1792
#8: 2016-02-09 19:30:25 ЛС | профиль | цитата
В принципе то да, наверное будет кому-то полезно и даже нужно, но будут ли этим заинтересованы все, и какие могут быть последствия после введения этой новой функции для шахтёра ?
Backend-Developer Мои документы Atarashi Jinsei
Hammering
Ответов: 326
#9: 2016-02-09 19:36:43 ЛС | профиль | цитата
-STS- писал(а):
какие могут быть последствия после введения этой новой функции для шахтёра ?
Последствий никаких, а пользоваться будут этим те, кому принципиально сохранять порядок в чистоте.
Возможно я плохо объясняю, надеюсь это видео объяснит что я имел ввиду:
BoulevardDepo
Ответов: 1229
#10: 2016-02-09 19:38:46 ЛС | профиль | цитата
Hammering, сторонние моды врятли придадут индивидуальности данному проекту.
Hammering
Ответов: 326
#11: 2016-02-09 19:41:53 ЛС | профиль | цитата
iHpWin писал(а):
Hammering, сторонние моды врятли придадут индивидуальности данному проекту.
Никто не говорил что это индивидуально, а нашёл я это в статьях для продвинутых пользователей Linux.
На мод для Minecraft я уже наткнулся случайно, пока искал более лаконичный ответ.
zelovo37
Ответов: 788
#12: 2016-02-09 22:10:26 ЛС | профиль | цитата
Hammering, Артём бред предлагаешь. Во первых
papasid писал(а):
Не понял. Ресурсы что ли не нужны уже стали?
Почему нельзя старым способом — по одному предмету в каждую ячейку и будет лутаться что ты захочешь.
Тогда внесёт некий имбаланс возможно потому-что шахтёры которые не умело закидывают,станут закидать в любом случае)
Hammering
Ответов: 326
#13: 2016-02-09 22:24:27 ЛС | профиль | цитата
zelovo37 писал(а):
Тогда внесёт некий имбаланс возможно потому-что шахтёры которые не умело закидывают,станут закидать в любом случае)
По секрету, оно помогает не подбирать определённый ресурс, а не выкидывать его. Так сказать рогатка, которая работает ну например только на булыжник. Понятия не имею как оно может помочь при закидывании.
NSAY
Ответов: 1306
#14: 2016-02-09 22:33:07 ЛС | профиль | цитата
Hammering писал(а):
-STS- писал(а):
Возможно я плохо объясняю, надеюсь это видео объяснит что я имел ввиду:
Всё просто
Черный список для предметов(блоков). Вы вносите в него любой блок и он вообще не собирается в инвентарь.
Hammering
Ответов: 326
#15: 2016-02-09 22:44:44 ЛС | профиль | цитата
NSAY писал(а):
Всё просто
Черный список для предметов(блоков). Вы вносите в него любой блок и он вообще не собирается в инвентарь.
Вообще этот предмет почти по такому принципу и работает.
Assasin
Разработчик
Ответов: 3014
NeverClan
[W] Inactive
#16: 2016-02-09 23:06:25 ЛС | профиль | цитата
Hammering писал(а):
Никто не говорил что это индивидуально, а нашёл я это в статьях для продвинутых пользователей Linux.
На мод для Minecraft я уже наткнулся случайно, пока искал более лаконичный ответ.
Не знаю, где вы нашли таких «продвинутых пользователей Linux», но на самом деле в Linux-е /dev/null используется для уничтожения чего бы то ни было, либо указания, что чего-то не существует. Например, можно направить вывод программы в /dev/null, и больше вы его нигде не увидите, или наоборот подать на вход программе /dev/null — тогда она вообще ничего не сможет прочитать.
Кратко: /dev/null как черная дыра — все принимает, ничего не отдает. В топике же вообще не понятно, что имеется в виду.
Мои рассказы | LHCreator — строй БАКи прямо в браузере | osu! team
Bugayov_lol
Ответов: 1128
St. Xenogen
I hate globes
#17: 2016-02-09 23:26:33 ЛС | профиль | цитата
Неплохо, за
NSAY
Ответов: 1306
#18: 2016-02-09 23:32:38 ЛС | профиль | цитата
Hammering писал(а):
Всё просто
Черный список для предметов(блоков). Вы вносите в него любой блок и он вообще не собирается в инвентарь.
Вообще этот предмет почти по такому принципу и работает.
судя по твоим словам не совсем так)
Черный список для предметов(блоков). Вы вносите в него любой блок и он вообще не собирается в инвентарь.
Предмет из черного списка может собираться в инвентарь в заданном количестве так? Либо не собираться вообще.
Источник: forum.minecraft-galaxy.ru