如何删除以下文件?
srwxrwxrwx 1 patroh root 0 Aug 8 16:11 0=
用户patroh
就是我自己。该rm
命令不起作用 - 当我执行时它不会给出任何错误rm 0
。
我不确定我是如何创建这个文件的?
答案1
输出中行开头s
的ls -l
将该行标识为 unix 域套接字。最后=
的 是套接字的类型指示器,是一个ls -F
添加的指示器。所以文件本身就被称为0
.
Unix 套接字是一种特殊的进程间通信方法,其行为大多类似于真实的网络套接字,但在文件系统中具有名称,这允许将常用的文件系统访问控制应用于套接字。您拥有的那个“文件”就是这样一个名称。
在打开它们的进程退出后,套接字伪文件往往会徘徊(无用),除非有什么措施小心地删除它们。但它们可以像任何文件一样被删除。 (嗯,至少在 Linux 上是这样。)例如,nc
创建一个 unix 套接字并将rm
其删除:
$ nc -U -l socket &
[1] 22480
$ ls -l
total 0
srwxr-x--- 1 ilkkachu ilkkachu 0 Aug 10 00:45 socket=
$ rm socket
$ ls -l
total 0
$ kill %1
如果rm
没有给出错误,则应该意味着它能够删除该文件。当然,这不会阻止此后重新创建文件。