Chinaunix首页 | 论坛 | 博客
  • 博客访问: 619324
  • 博文数量: 69
  • 博客积分: 1891
  • 博客等级: 上尉
  • 技术积分: 1359
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-20 23:38
文章分类

全部博文(69)

文章存档

2012年(46)

2011年(23)

分类: LINUX

2012-04-11 23:49:59

Linux 系统中有些特殊文件记录了系统的设备信息以及运行时信息,很多系统命令都是通过操作这些文件来实现的,下面简单介绍一下这些文件

一、/dev目录

/dev目录里包含了系统所使用的所有物理设备和虚拟设备

设备文件分为两种:块设备文件(b)和字符设备文件(c

设备文件一般存放在/dev目录下,常见设备文件作如下:
/dev/hd[a-t]
IDE设备
/dev/sd[a-z]
SCSI设备
/dev/fd[0-7]
:标准软驱
/dev/md[0-31]
:软raid设备
/dev/loop[0-7]
:本地回环设备
/dev/ram[0-15]
:内存
/dev/null
:无限数据接收设备,相当于黑洞
/dev/zero
:无限零资源
/dev/tty[0-63]
:虚拟终端
/dev/ttyS[0-3]
:串口
/dev/lp[0-3]
:并口
/dev/console
:控制台
/dev/fb[0-31]
framebuffer
/dev/cdrom => /dev/hdc
/dev/modem => /dev/ttyS[0-9]
/dev/pilot => /dev/ttyS[0-9]
/dev/random
:随机数设备
/dev/urandom
:随机数设备,非阻塞式

1)/dev/null

/dev/null 这是空设备,一般称作“黑洞”,所有写入它的内容都会丢失,而从它里面读却什么都读不到,它一般做如下用途:

1、禁止标准输出 cat $filename >/dev/null

2、禁止错误输出 rm $dir 2>/dev/null

3、清除文件内容 cat /dev/null > lpscm/target/output/logs/sys/webx.log


2)/dev/zero

/dev/zero 该设备无穷尽地提供空字符(ASCII NUL, 0x00),可以使用任何你需要的数目。它通常用于向设备或文件写入字符串0,用于初始化数据存储。

通过od /dev/zero 可以不停的读出0x00

例如,以下可以初始化一个1k的文件内容为0x00

dd if=/dev/zero f=~/test bs=1k count=1


3)/dev/loop

/dev/loop 是一种伪设备,这种设备使得文件可以如同块设备一样被访问。这种设备文件经常被用于光碟或是磁盘镜像

mount -o loop example.img /home/you/dir

4)/dev/tcp

/dev/tcp/$host/$port ,当在该文件上进行操作时,相当与对指定的套接口进行操作

例如,以下命令读取时间服务器上的时间:

cat

56022 12-04-05 05:16:38 50 0 0 820.6 UTC(NIST) *

以下命令读取80端口上的数据:

exec 5<>/dev/tcp/ 打开百度服务器的80端口 
echo -3 “GET /HTTP/1.1\n” >&5 #发送请求 
cat <&5 #读取数据 
 5)/dev/full

系统中,/dev/full,或常满设备是一个特殊,总是在向其写入时返回设备无剩余空间(错误码为ENOSPC),读取时则与/dev/zero相似,返回无限的空字符(NULL,  NUL, 0x00)。这个设备通常被用来测试程序在遇到磁盘无剩余空间错误时的行为。

$ echo "test" > /dev/full

bash: echo: 写错误: 设备上没有空间


6)/dev/urandom

/dev/random是一个特殊的,可以用作

/dev/urandom来产生随机密码

head -c 500 /dev/urandom | tr -dc a-z0-9A-Z | head -c 16; echo

7)/dev/ram

在开发中,程序经常需要频繁地读写某些临时文件,遇到这种情况,RAM disk就是最好的解决办法。

RAM disk就是将一块内存模拟成为某个磁盘驱动器,对应用程序来说,RAM disk和普通磁盘是完全一样的,也就是说,RAM disk对应用程序是“透明”的——唯一的区别在于,系统重新启动或者关机时,存储在RAM disk上的数据会丢失。

创建一个RAM disk

a)mke2fs -m 0 /dev/ram0 #格式化/dev/ram0 
b)mkdir /mnt/rd c)mount /dev/ram0 /mnt/rd #挂载/dev/ram0到文件系统 

  2、 /proc

proc 文件系统可以被用于收集有用的关于系统和运行中的内核的信息。下面是一些重要 的文件:

  • /proc/cpuinfo - CPU 的信息 (型号, 家族, 缓存大小等)

  • /proc/meminfo - 物理内存、交换空间等的信息

  • /proc/mounts - 已加载的文件系统的列表

  • /proc/devices - 可用设备的列表

  • /proc/filesystems - 被支持的文件系统

  • /proc/modules - 已加载的模块

  • /proc/version - 内核版本

  • /proc/cmdline – 系统启动时输入的内核命令行参数

  • /proc/nnn

  • /proc/self

1)/proc/cmdline 这个文件给出了内核启动的命令行 
实例: $ cat /proc/cmdline BOOT_IMAGE=/boot/vmlinuz-3.0.0-15-generic-pae root=UUID=bd8fa867-1ba4-4f9c-8c7e-eb979d949a6c ro quiet splash vt.handoff=7 
2/proc/cpuinfo 这个文件分别包含了系统各个CPU的信息,从0开始一直到最后一个CPU,会列出型号,制造商,和版本等信息 

  3/proc/devices 
这个文件包含了字符设备和块设备的主设备号,以及分配到这些设备号的名称 
  4)/proc/fielsystems
这个文件包含被编译进内核的文件系统,mount命令会读取该文件来识别未指定文件系统的挂载。 第一行的”nodev”表示这个文件系统不需要挂载块设备,也即是虚拟文件系统。

点击(此处)折叠或打开

  1. $ cat filesystems

  2. .
  3. nodev    anon_inodefs

  4. nodev    devpts

  5.     ext3

  6.     ext2

  7.     ext4

  8. .
6)/proc/loadavg 这个文件给出以几个不同的时间间隔计算的系统平均负载,这就如同uptime命令显示的结果那样。前三个数字是平均负载。这是通过计算过去1分钟,5分钟,15分钟里运行队列中的平均任务数得到的. 接下来的第一个数字表示瞬时可以运行的任务数,即是马上会被调度的任务数,接着是系统当前总共在运行的进程数,最后是最近一次运行的进程的ID

点击(此处)折叠或打开

  1. $ cat loadavg

  2. 0.05 0.07 0.05 4/492 5954
7)/proc/uptime 这个文件包含了系统启动的时长以及系统闲置的时长,都是用浮点数表示的,以秒为单位 $ cat uptime 9885.34 35197.49 7)/proc/nnn nnn对应进程的ID,这个目录里包含了nnn进程的运行时信息 查看进程相关信息:

点击(此处)折叠或打开

  1. 1、用/usr/lib/firefox-8.0/firefox –test 启动firefox进程
  2. 2、ps -aef | grep firefox
  3. kenvizhu 8877 1 3 14:49 ? 00:05:02 /usr/lib/firefox-8.0/firefox
上述结果显示有一个正在运行的firefox进程的pid8877,相对应的,/proc中会有一个叫8877的文件夹,里面包含了 该进程运行时的信息

点击(此处)折叠或打开

  1. ls -l /proc/8877
  2. dr-xr-xr-x 2 kenvizhu kenvizhu 0 2012-04-05 16:52 attr
  3. -rw-r--r-- 1 kenvizhu kenvizhu 0 2012-04-05 16:52 autogroup
  4. -r-------- 1 kenvizhu kenvizhu 0 2012-04-05 16:52 auxv
  5. -r--r--r-- 1 kenvizhu kenvizhu 0 2012-04-05 16:52 cgroup
  6. --w------- 1 kenvizhu kenvizhu 0 2012-04-05 16:52 clear_refs
  7. -r--r--r-- 1 kenvizhu kenvizhu 0 2012-04-05 14:49 cmdline
  8. -rw-r--r-- 1 kenvizhu kenvizhu 0 2012-04-05 16:52 comm
  9. -rw-r--r-- 1 kenvizhu kenvizhu 0 2012-04-05 16:52 coredump_filter
  10. -r--r--r-- 1 kenvizhu kenvizhu 0 2012-04-05 16:52 cpuset
  11. lrwxrwxrwx 1 kenvizhu kenvizhu 0 2012-04-05 16:52 cwd -> /home/kenvizhu
  12. -r-------- 1 kenvizhu kenvizhu 0 2012-04-05 16:52 environ
  13. lrwxrwxrwx 1 kenvizhu kenvizhu 0 2012-04-05 14:49 exe -> /usr/lib/firefox-8.0/firefox
  14. dr-x------ 2 kenvizhu kenvizhu 0 2012-04-05 14:49 fd
  15. dr-x------ 2 kenvizhu kenvizhu 0 2012-04-05 16:52 fdinfo
  16. -r-------- 1 kenvizhu kenvizhu 0 2012-04-05 16:52 io
  17. -r--r--r-- 1 kenvizhu kenvizhu 0 2012-04-05 16:52 latency
  18. -r--r--r-- 1 kenvizhu kenvizhu 0 2012-04-05 16:52 limits
  19. -rw-r--r-- 1 kenvizhu kenvizhu 0 2012-04-05 16:52 loginuid
  20. -r--r--r-- 1 kenvizhu kenvizhu 0 2012-04-05 14:49 maps
  21. -rw------- 1 kenvizhu kenvizhu 0 2012-04-05 16:52 mem
  22. -r--r--r-- 1 kenvizhu kenvizhu 0 2012-04-05 16:52 mountinfo
  23. -r--r--r-- 1 kenvizhu kenvizhu 0 2012-04-05 16:52 mounts
  24. -r-------- 1 kenvizhu kenvizhu 0 2012-04-05 16:52 mountstats
  25. dr-xr-xr-x 5 kenvizhu kenvizhu 0 2012-04-05 16:52 net
  26. -rw-r--r-- 1 kenvizhu kenvizhu 0 2012-04-05 16:52 oom_adj
  27. -r--r--r-- 1 kenvizhu kenvizhu 0 2012-04-05 16:52 oom_score
  28. -rw-r--r-- 1 kenvizhu kenvizhu 0 2012-04-05 16:52 oom_score_adj
  29. -r--r--r-- 1 kenvizhu kenvizhu 0 2012-04-05 16:52 pagemap
  30. -r--r--r-- 1 kenvizhu kenvizhu 0 2012-04-05 16:52 personality
  31. lrwxrwxrwx 1 kenvizhu kenvizhu 0 2012-04-05 16:52 root -> /
  32. -rw-r--r-- 1 kenvizhu kenvizhu 0 2012-04-05 16:52 sched
  33. -r--r--r-- 1 kenvizhu kenvizhu 0 2012-04-05 16:52 schedstat
  34. -r--r--r-- 1 kenvizhu kenvizhu 0 2012-04-05 16:52 sessionid
  35. -r--r--r-- 1 kenvizhu kenvizhu 0 2012-04-05 16:52 smaps
  36. -r--r--r-- 1 kenvizhu kenvizhu 0 2012-04-05 16:52 stack
  37. -r--r--r-- 1 kenvizhu kenvizhu 0 2012-04-05 14:49 stat
  38. -r--r--r-- 1 kenvizhu kenvizhu 0 2012-04-05 16:52 statm
  39. -r--r--r-- 1 kenvizhu kenvizhu 0 2012-04-05 14:49 status
  40. -r--r--r-- 1 kenvizhu kenvizhu 0 2012-04-05 16:52 syscall
  41. dr-xr-xr-x 26 kenvizhu kenvizhu 0 2012-04-05 14:51 task
  42. -r--r--r-- 1 kenvizhu kenvizhu 0 2012-04-05 16:52 wchan


  • cmdline 包含了启用该进程的命令行信息

            cat /proc/9674/cmdline

             /usr/lib/firefox-8.0/firefox-test

  •  cwd -> /home/kenvizhu 表明进程的当前工作目录
  •  environ 该文件存放了该进程的环境变量
  • exe -> /usr/lib/firefox-8.0/firefox 指向可执行文件路径
  • fd 存放了该进程打开的文件描述符
  • limits 存放了资源限制信息

阅读(2973) | 评论(2) | 转发(1) |
给主人留下些什么吧!~~

kenvifire2012-05-08 10:25:31

重返人生: RAM盘非常快,但它要求系统内存为其所用。此外,RAM盘常使用易失性存储器,要特别小心啊~~.....
恩,临时使用就好了。

重返人生2012-04-12 10:25:06

RAM盘非常快,但它要求系统内存为其所用。此外,RAM盘常使用易失性存储器,要特别小心啊~~