Когда я запускаю netstat --protocol unix
или lsof -U
вижу, что некоторые пути к сокетам Unix начинаются с символа @, например, @ / tmp / dbus-qj8V39Yrpa . Затем, когда я запускаю, ls -l /tmp
я не вижу файл с именем dbus-qj8V39Yrpa там.
Вопрос в том, что означает этот префиксный символ @? И второй связанный с этим вопрос: где я могу найти этот файл сокета unix ( @ / tmp / dbus-qj8V39Yrpa ) в файловой системе?
ss
программа также показывает конечные точки сокетов, такие как "@ / tmp / .X11-unix / X0"Ответы:
@
, Вероятно , указывает на сокет удерживается вabstract namespace
котором не принадлежит к файлу в файловой системе.Цитируя The Linux Programming Interface по Майкл Керриск :
Отображение ведущего
null byte
для обозначения такого типа сокета может быть затруднено, поэтому это может быть причиной для ведущего@
знака.источник
Согласно
man 7 unix
Похоже, они «абстрактные», поэтому в файловой системе нет реального пути
источник