/dev/null файл стал регулярным файлом

Мой новый любимый инструмент проверки DNS является DNSCog: http://www.dnscog.com/report/webs.com

Я вижу много предупреждений и ошибок, но конкретно похоже, что ns2.webs.com не отвечает и IP, в то время как ns1.webs.com отвечает IP. Это заставит случайных пользователей не мочь добраться до Вашего веб-сайта.

Я также изучил бы другие ошибки о записях SOA, и NS записывает пропавших без вести.

19
задан 8 November 2013 в 22:17
4 ответа

Вы можете запустить lsof / dev / null и посмотреть, есть ли процесс, у которого он открыт, но он не покажет вам, что происходит в реальном времени.

Другой вариант - сделать устройство и переместить его на место.

mknod /dev/null.tmp c 1 3 && mv /dev/null.tmp /dev/null

Но я хотел бы сначала узнать, что нарушает работу системы. Изменили ли вы что-нибудь в последнее время, что может вызывать это?

8
ответ дан 2 December 2019 в 20:15

Причина, по которой вы не можете воссоздать / dev / null , скорее всего, заключается в том, что что-то непрерывно пишет в него вот так :

echo "foo" > /dev/null

Изучив содержимое файла, вы узнаете, что это может быть за процесс.

Чтобы исправить вашу систему, следуйте этим инструкциям:

  1. выключите систему
  2. загрузитесь с помощью init = / bin / bash
  3. remount / writeable
  4. создать символьное устройство
  5. reboot

Я настоятельно рекомендую провести тщательное исследование системы, чтобы определить, как был удален / dev / null. Убедитесь, что ваша система не работает. t взломан, внимательно проверьте журнал вашей системы.

7
ответ дан 2 December 2019 в 20:15

Когда вы удаляете (rm) / dev / null, любые программы / скрипты, которые выполняются и которым требуется "> / dev / null" или эквивалент, воссоздают новый (обычный) файл с таким именем. И они могут появиться в любое время (а некоторые также могут непрерывно писать в него)

Чтобы победить их:

вы создаете новый специальный файл / dev / null (под другим именем)

mknod /dev/newnull c 1 3
chmod 777 /dev/newnull

и перемещаете его ( как root) постоянно создаваемые:

mv -f /dev/newnull /dev/null

И только тогда вы можете перезагрузиться (не перезагружайтесь без правильного файла / dev / null на месте ... обычно это непросто) [Я забыл этот шаг, который, конечно, нужно. Спасибо @ Random832 за напоминание!]

В конце концов, вам нужно перезагрузиться, чтобы избавиться от существующей программы, у которой все еще будет открыт «/ dev / null», и которая будет записывать в файловую систему, даже если вы заменили ее впоследствии , постепенно заполняя эту файловую систему) (Действительно, как и при удалении файла, любая программа, у которой все еще открыт этот файловый дескриптор, все равно сможет писать в предыдущий индексный дескриптор,

29
ответ дан 2 December 2019 в 20:15

Я нашел причину и исправление в моей системе archlinux.

Если вы используете bash и HISTFILE = / dev / null находится в среде, вам не следует выполнять больше команд, чем $ HISTFILESIZE или $ HISTSIZE. Если вы выполнили в bash больше команд, чем $ HISTFILESIZE, а HISTFILE - / dev / null и вы вышли из bash, bash перемещает / dev / null в другое место и воссоздает / dev / null как обычный файл с разрешением 600.

Если вы используете tramp на emacs 24.4, tramp-sh.el устанавливает HISTFILE в / dev / null. Таким образом, если bash является оболочкой для root и если вы выполняете много операций root с tramp на emacs 24.4, когда вы убиваете emacs, tramp заставляет bash удалить /dev/null.

Пожалуйста, проверьте, установлен ли HISTFILE на / dev / null в .bashrc или в таких программах, как emacs 24.4.

В моем случае изменение оболочки на zsh работает вокруг того факта, что tramp заставляет bash удалить / dev / null в emacs 24.4.

4
ответ дан 2 December 2019 в 20:15

Теги

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