有许多文件/proc,如/proc/cpuinfo,/proc/meminfo,/proc/devices等等,其中,打开时,返回系统信息。
这些文件在现实中似乎不存在,因为file在它们上运行只会表明它们是空的。
$ file /proc/cpuinfo
/proc/cpuinfo: empty
Run Code Online (Sandbox Code Playgroud)
这些文件究竟是如何工作的?
在阅读Linux 中free命令的手册页时。我发现这是从/proc/meminfo.
我了解一些条目,例如MemTotal和MemFree。其余是什么意思。
猫 /proc/meminfo 内存总量:3973736 kB MemFree:431064 KB 缓冲区:46604 kB 缓存:494648 kB 交换缓存:11360 KB 活跃:2322760 KB 非活动:933028 KB 活跃(匿名):2057952 kB 非活动(匿名):679956 kB 活动(文件):264808 kB 非活动(文件):253072 kB 不可避免:16 kB 锁定:16 kB 交换总计:4096568 kB SwapFree:3961748 kB 脏:236 KB 写回:0 kB AnonPages:2704520 kB 映射:182240 kB Shmem:23372 KB 平板:93848 KB SReclaimable:52044 kB 太阳回收:41804 kB 内核堆栈:5064 kB 页表:64928 kB NFS_不稳定:0 kB 弹跳:0 kB 写回时间:0 kB 提交限制:6083436 KB Committed_AS:7327800 KB Vmalloc 总计:34359738367 kB Vmalloc 使用:321156 KB VmallocChunk:34359411708 kB …
我正在新安装一个发行版,并希望设置一个交换分区,以便它与休眠兼容。
首先,我必须确定系统拥有的物理内存量。
$ grep MemTotal /proc/meminfo
MemTotal: 38740876 kB
Run Code Online (Sandbox Code Playgroud)
现在据我所知:
然而,RHEL 文档在这里说单位/proc/meminfo是千字节。
谁错了?该单元硬编码在 Linux 中,还是 RHEL 文档中?
我遵循了有关“如何使用 LKM 在 C 程序中创建 Linux Proc 文件”的教程指南。
我已经成功地制作了我的模块并加载了它。现在我想回显到我的 proc 文件以确保调用应该调用的方法。
我试过了:
$ echo "hello" > /proc/procEntry123 # But it says permission is denied!
$ sudo echo "hello" > /proc/procEntry123 # Same error message.
Run Code Online (Sandbox Code Playgroud)
如何提升权限以回显到此文件?我是该系统的唯一用户和管理员。
我有进程的pid。我想知道当前进程中运行的线程数。我知道我可以阅读 /proc/pid/stat 以获取此信息,但我不确定如何从 stat 中具体获取线程数。任何人都可以帮忙吗?
谢谢!
当符号链接的目标被删除时,它指向空,并且无法获得被删除目标的内容。
中的文件/proc/$PID/fd/显示为符号链接,但它们允许您访问已删除目标的内容,如下所述:Recover Deleted Linux Files Withlsof .
这是如何运作的?如果它不作为一个链接,为什么它显示为一个符号链接?proc 文件系统的符号链接实现是否保留了对文件 inode 的引用?
我正在尝试将我的 Ubuntu 12.04 VPS (OpenVZ) 配置为在内存不足时重新启动。为此,我在“/etc/sysctl.conf”文件中添加了以下几行。
vm.panic_on_oom = 1
kernel.panic = 14
Run Code Online (Sandbox Code Playgroud)
但是,当我使用命令“sudo sysctl -p”运行配置时,出现以下错误。
error: permission denied on key 'vm.panic_on_oom'
error: permission denied on key 'kernel.panic'
Run Code Online (Sandbox Code Playgroud)
我尝试以 root 身份运行相同的命令并发现相同的错误。
谁能指出我做错了什么?或者我该如何解决这个问题?
提前致谢。
我可以在 ln 手册页中阅读:
-L, --logical
make hard links to symbolic link references
Run Code Online (Sandbox Code Playgroud)
我在某处阅读了ln -L可以使用文件系统重新链接已删除但仍处于打开状态的/proc文件的地方。例如:
ln -L /proc/1234/fd/12 /tmp/my-file
Run Code Online (Sandbox Code Playgroud)
但我得到ENOENT:没有这样的文件或目录。如果我尝试使用不同的文件系统,则会得到无效的跨设备链接。
如果我不能ln -L用来恢复已删除的文件,那么它可以用来做什么?
这个问题是在 AIX (5.3) 的上下文中为需要存储在虚拟文件系统下的任何东西分配空间的基础 /proc
操作系统是否从 中获取空间/?例如我有:
Filesystem GB blocks Free %Used Iused %Iused Mounted on
/dev/hd4 0.25 0.08 70% 10983 38% /
/proc - - - - - /proc
Run Code Online (Sandbox Code Playgroud)
那么如果我/的使用率高达 99%会发生什么?proc 从哪里获得它的空间?
还是我都错了?是/proc服务器内存的只是一种表象?