The @
probably indicates a socket held in an abstract namespace
which doesn't belong to a file in the filesystem.
Quoting from The Linux Programming Interface by Michael Kerrisk:
57.6 The Linux Abstract Socket Namespace
The so-called abstract namespace is a Linux-specific feature that
allows us to bind a UNIX domain socket to a name without that name
being created in the file system. This provides a few potential
advantages:
- We don’t need to worry about possible collisions with existing names in the file system.
- It is not necessary to unlink the socket pathname when we have finished using the socket. The abstract name is automatically removed
when the socket is closed.
- We don’t need to create a file-system pathname for the socket. This may be useful in a chroot environment, or if we don’t have write
access to a file system.
To create an abstract binding, we specify the first byte of the
sun_path field as a null byte (\0).
[...]
Displaying a leading null byte
to denote such type of a socket may be difficult, so that is maybe the reason for the leading @
sign.
ss
program also shows socket endpoints like "@/tmp/.X11-unix/X0"