探索/proc文件系统
# cd /proc你会注意到的第一件事是,有一些 熟悉的冠冕堂皇的文件 ,然后一大堆 编号的目录 。 编号的 目录代表了 流程 ,更好地称为 PID和在其中,一个命令,占据他们。 该文件包含系统信息,如 上存储器 (meminfo中 ),CPU信息 (cpuinfo),以及可用的 文件系统 。 另请阅读: Linux的Free命令检查物理内存和交换内存 让我们先看一个文件:
# cat /proc/meminfo
示例输出
它返回类似于这样的东西:MemTotal: 604340 kB MemFree: 54240 kB Buffers: 18700 kB Cached: 369020 kB SwapCached: 0 kB Active: 312556 kB Inactive: 164856 kB Active(anon): 89744 kB Inactive(anon): 360 kB Active(file): 222812 kB Inactive(file): 164496 kB Unevictable: 0 kB Mlocked: 0 kB SwapTotal: 0 kB SwapFree: 0 kB Dirty: 0 kB Writeback: 0 kB AnonPages: 89724 kB Mapped: 18012 kB Shmem: 412 kB Slab: 50104 kB SReclaimable: 40224 kB ...正如你所看到的, 的/proc / meminfo中 ,包含了一些关于您的系统的内存,包括可用的(以 KB为单位)的总金额,并在上面两行免费量的信息。 运行 cat命令任何在 /proc将输出其内容的文件。有关任何文件的信息可以在手册页中通过运行:
# man 5 /proc/<filename>我会给你 的/proc的文件简要介绍:
- /proc/cmdline -内核的命令行信息。
- /proc/console -关于当前游戏机,包括TTY信息。
- /proc/devices -当前配置为运行内核设备驱动程序。
- /proc/dma -信息关于当前的DMA通道。
- /proc/fb -帧缓冲设备。
- /proc/filesystems -内核支持当前的文件系统。
- /proc/iomem -当前的系统存储器映射设备。
- /proc/ioports -注册端口地区与设备的输入输出通信。
- /proc/loadavg -系统平均负载。
- /proc/locks -文件目前由内核锁定。
- /proc/meminfo -有关系统内存的信息(见上面的例子)。
- /proc/misc -杂项主设备注册其他驱动程序。
- /proc/modules -目前加载的内核模块。
- /proc/mounts -由系统使用的所有坐骑列表。
- /proc/partitions -关于提供给系统分区的详细信息。
- /proc/pci -大约每PCI设备的信息。
- /proc/stat -记录或各种数据不停地从去年重启。
- /proc/swap -关于交换空间的信息。
- /proc/uptime -运行时间信息(秒)。
- /proc/version -内核版本,gcc版本和Linux发行版安装。
# cd /proc/12 # ls
示例输出
attr coredump_filter io mounts oom_score_adj smaps wchan autogroup cpuset latency mountstats pagemap stack auxv cwd limits net personality stat cgroup environ loginuid ns root statm clear_refs exe maps numa_maps sched status cmdline fd mem oom_adj schedstat syscall comm fdinfo mountinfo oom_score sessionid task如果我运行:
# cat /proc/12/status我得到以下:
Name: xenwatch State: S (sleeping) Tgid: 12 Pid: 12 PPid: 2 TracerPid: 0 Uid: 0 0 0 0 Gid: 0 0 0 0 FDSize: 64 Groups: Threads: 1 SigQ: 1/4592 SigPnd: 0000000000000000 ShdPnd: 0000000000000000 SigBlk: 0000000000000000 SigIgn: ffffffffffffffff SigCgt: 0000000000000000 CapInh: 0000000000000000 CapPrm: ffffffffffffffff CapEff: ffffffffffffffff CapBnd: ffffffffffffffff Cpus_allowed: 1 Cpus_allowed_list: 0 Mems_allowed: 00000000,00000001 Mems_allowed_list: 0 voluntary_ctxt_switches: 84 nonvoluntary_ctxt_switches: 0那么,这是什么意思?嗯,重要的是在顶部。我们可以从这个过程属于 xenwatch状态文件中看到。 其当前状态处于 睡眠状态 ,它的进程 ID是 12,很明显。 我们也可以看到谁在运行这一点,因为 UID和 GID均为 0,表明这个过程属于 root用户。 在任何编号的目录中,您将具有类似的文件结构。最重要的,它们的描述如下:
- cmdline -进程的命令行
- environ -环境变量
- fd -文件描述符
- limits -包含有关进程的限制的信息
- 坐mounts -相关信息
- cwd -链接到进程的当前工作目录
- exe -链接到过程的可执行
- root -链接到进程的工作目录