我运行了以下命令。
sudo sleep 100000
然后,我检查了 sudo 进程的内存使用情况。Sudo 正在使用908KiB私人记忆和4.2MiB共享内存。我知道 Linux 内核强制执行最小内存工作集不会带来问题,因为例如,bpfilter_umh 进程仅使用 60KiB 的私有内存,而 sd-spam 进程仅使用 4KiB 的共享内存。即使 sudo 以某种方式占用大量内存来提升进程,sudo 也应该能够在提升进程后将该内存释放回系统。
例如,在同一台计算机上运行多个用户会话时,每个会话都通过 sudo 运行多个命令,就会出现此问题。对于深度嵌套的 sudo 命令,即使用 sudo 调用脚本,然后使用 sudo 调用连续脚本,也会出现此问题。
那么,sudo 到底是怎么回事?为什么执行诸如提升进程权限之类的小事会占用如此多的内存?