cgroupディレクトリを削除するとrmdirは正常に動作しますが、rm -rfが機能しないのはなぜですか?

cgroupディレクトリを削除するとrmdirは正常に動作しますが、rm -rfが機能しないのはなぜですか?

これはcgroupツリーです。ルートノードはデモで、子ノードは1つだけです。

demo/
├── cgroup.clone_children
├── cgroup.procs
├── cgroup.sane_behavior
├── child
│   ├── cgroup.clone_children
│   ├── cgroup.procs
│   ├── notify_on_release
│   ├── pool_size
│   └── tasks
├── notify_on_release
├── pool_size
├── release_agent
└── tasks

私は子ノードを削除するためにrm -rf hit errorを試しましたが、rmdirは正常に動作します。

[root@iZ8vbf3rrty84cddfc7w8mZ cgroup]# rm -rf demo/child/
rm: cannot remove ‘demo/child/cgroup.procs’: Operation not permitted
rm: cannot remove ‘demo/child/tasks’: Operation not permitted
rm: cannot remove ‘demo/child/pool_size’: Operation not permitted
rm: cannot remove ‘demo/child/notify_on_release’: Operation not permitted
rm: cannot remove ‘demo/child/cgroup.clone_children’: Operation not permitted
[root@iZ8vbf3rrty84cddfc7w8mZ cgroup]#
[root@iZ8vbf3rrty84cddfc7w8mZ cgroup]# rmdir demo/child/
[root@iZ8vbf3rrty84cddfc7w8mZ cgroup]#

rmdirは動作しますが、rm -rfがここで動作しない理由

答え1

rm -rfすべてのファイルを削除したら、ディレクトリを削除します。rmdirディレクトリを削除するだけです。

pool_sizecgroupから個々のファイルを削除することは意味がありません。それは何ですか?する?しかし、cgroupを削除することは意味があります。rm -rf偽のファイルが実際のファイルと同じように見えたので、私は知りませんでした。

実際、これは実際のファイルとは逆です。実際のディレクトリにファイルがないまでは削除できませんが、ファイルがある場合は特定の偽のディレクトリを削除する必要があります。

だから。

答え2

このrmコマンドはすべてのファイルも削除します(cgroup擬似ファイルシステム)。

rmdirすべてのファイルが削除されると、このコマンドはディレクトリを削除します。

擬似ファイルシステムをファイルとして扱っていないようです。だから渡すことができます。

これがバグかどうかはわかりません。

関連情報