
次のファイルを削除する方法は?
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
ファイルを削除できることを意味します。もちろん、後でファイルが再生成されるのを防ぎません。