Linux /dev目錄詳解(轉http://blog.csdn.net/maopig/article/details/7195048) 在linux下,/dev目錄是很重要的,各種設備都在下麵。下麵簡單總結一下: dev是設備(device)的英文縮寫。/dev這個目錄對所有的用戶都十分重要。因為 ...
Linux /dev目錄詳解(轉http://blog.csdn.net/maopig/article/details/7195048)
在linux下,/dev目錄是很重要的,各種設備都在下麵。下麵簡單總結一下:
dev是設備(device)的英文縮寫。/dev這個目錄對所有的用戶都十分重要。因為在這個目錄中包含了所有Linux系統中使用的外部設備。但是這裡並不是放的外部設備的驅動程式,這一點和windows,dos操作系統不一樣。它實際上是一個訪問這些外部設備的埠。我們可以非常方便地去訪問這些外部設備,和訪問一個文件,一個目錄沒有任何區別。
Linux沿襲Unix的風格,將所有設備認成是一個文件。
關於一些特殊設備,我曾經總結過一些:
/dev/null和/dev/zero:http://www.51testing.com/index.php?uid-225738-action-viewspace-itemid-235339
/dev/tty、/dev/console、/dev/pty、/dev/pts等:http://www.51testing.com/index.php?uid-225738-action-viewspace-itemid-212419
設備文件分為兩種:塊設備文件(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:隨機數設備
(PS:隨機數設備,後面我會再寫篇博客總結一下)
/dev目錄下的節點是怎麼創建的?
devf或者udev會自動幫你創建得。
kobject是sysfs文件系統的基礎,udev通過監測、檢測sysfs來獲取新創建的設備的。
Linux系統各個目錄的作用
/
這就是根目錄。對你的電腦來說,有且只有一個根目錄。所有的東西,我是說所有的東西都是從這裡開始。舉個例子:當你在終端里輸入“/home”,你其實是在告訴電腦,先從/(根目錄)開始,再進入到home目錄。
/root
這是系統管理員(root user)的目錄。對於系統來說,系統管理員就好比是上帝,它能對系統做任何事情,甚至包括刪除你的文件。因此,請小心使用root帳號。
/bin
這裡存放了標準的(或者說是預設的)linux的工具,比如像“ls”、“vi”還有“more”等等。通常來說,這個目錄已經包含在你的“path”系統變數裡面了。什麼意思呢?就是:當你在終端里輸入ls,系統就會去/bin目錄下麵查找是不是有ls這個程式。
/etc
這裡主要存放了系統配置方面的文件。舉個例子:你安裝了samba這個套件,當你想要修改samba配置文件的時候,你會發現它們(配置文件)就在/etc/samba目錄下。
/dev
這裡主要存放與設備(包括外設)有關的文件(unix和linux系統均把設備當成文件)。想連線印表機嗎?系統就是從這個目錄開始工作的。另外還有一些包括磁碟驅動、USB驅動等都放在這個目錄。
/home
這裡主要存放你的個人數據。具體每個用戶的設置文件,用戶的桌面文件夾,還有用戶的數據都放在這裡。每個用戶都有自己的用戶目錄,位置為:/home/用戶名。當然,root用戶除外。
/tmp
這是臨時目錄。對於某些程式來說,有些文件被用了一次兩次之後,就不會再被用到,像這樣的文件就放在這裡。有些linux系統會定期自動對這個目錄進行清理,因此,千萬不要把重要的數據放在這裡。
/usr
在這個目錄下,你可以找到那些不適合放在/bin或/etc目錄下的額外的工具。比如像游戲阿,一些列印工具拉等等。/usr目錄包含了許多子目錄:/usr/bin目錄用於存放程式;/usr/share用於存放一些共用的數據,比如音樂文件或者圖標等等;/usr/lib目錄用於存放那些不能直接運行的,但卻是許多程式運行所必需的一些函數庫文件。你的軟體包管理器(應該是“新立得”吧)會自動幫你管理好/usr目錄的。
/opt
這裡主要存放那些可選的程式。你想嘗試最新的firefox測試版嗎?那就裝到/opt目錄下吧,這樣,當你嘗試完,想刪掉firefox的時候,你就可以直接刪除它,而不影響系統其他任何設置。安裝到/opt目錄下的程式,它所有的數據、庫文件等等都是放在同個目錄下麵。
舉個例子:剛纔裝的測試版firefox,就可以裝到/opt/firefox_beta目錄下,/opt/firefox_beta目錄下麵就包含了運行firefox所需要的所有文件、庫、數據等等。要刪除firefox的時候,你只需刪除/opt/firefox_beta目錄即可,非常簡單。
/usr/local
這裡主要存放那些手動安裝的軟體,即不是通過“新立得”或apt-get安裝的軟體。它和/usr目錄具有相類似的目錄結構。讓軟體包管理器來管理/usr目錄,而把自定義的腳本(scripts)放到/usr/local目錄下麵,我想這應該是個不錯的主意。
/media
有些linux的發行版使用這個目錄來掛載那些usb介面的移動硬碟(包括U盤)、CD/DVD驅動器等等。
Linux中/proc目錄下文件詳解(一)
這個文件包含了由md設備驅動程式控制的RAID設備信息。 示例: [root@localhost ~]# cat /proc/mdstat Personalities : unused devices: <none> -------------------------------------------------------------------------------- /proc/meminfo文件 這個文件給出了記憶體狀態的信息。它顯示出系統中空閑記憶體,已用物理記憶體和交換記憶體的總量。它還顯示出內核使用的共用記憶體和緩衝區總量。這些信息的格式和free命令顯示的結果類似。 示例: [root@localhost ~]# cat /proc/meminfo MemTotal: 223812 kB MemFree: 3764 kB Buffers: 9148 kB Cached: 92112 kB SwapCached: 364 kB Active: 183640 kB Inactive: 17196 kB HighTotal: 0 kB HighFree: 0 kB LowTotal: 223812 kB LowFree: 3764 kB SwapTotal: 626524 kB SwapFree: 620328 kB Dirty: 12 kB Writeback: 0 kB Mapped: 142880 kB Slab: 12668 kB Committed_AS: 376732 kB PageTables: 2336 kB VmallocTotal: 3907576 kB VmallocUsed: 2968 kB VmallocChunk: 3904224 kB HugePages_Total: 0 HugePages_Free: 0 Hugepagesize: 4096 kB -------------------------------------------------------------------------------- /proc/misc文件 這個文件報告用內核函數misc_register登記的設備驅動程式。 示例: [root@localhost ~]# cat /proc/misc 63 device-mapper 175 agpgart 135 rtc -------------------------------------------------------------------------------- /proc/modules文件 這個文件給出可載入內核模塊的信息。lsmod程式用這些信息顯示有關模塊的名稱,大小,使用數目方面的信息。 示例: [root@localhost /]# cat /proc/modules md5 4033 1 - Live 0x10a7f000 ipv6 232577 8 - Live 0x10b0c000 parport_pc 24705 1 - Live 0x10a8b000 lp 11565 0 - Live 0x10a7b000 parport 41737 2 parport_pc,lp, Live 0x10a55000 autofs4 24005 0 - Live 0x10a74000 i2c_dev 10433 0 - Live 0x109d2000 i2c_core 22081 1 i2c_dev, Live 0x10a6d000 sunrpc 160421 1 - Live 0x10a9d000 ipt_REJECT 6465 1 - Live 0x109da000 ipt_state 1857 5 - Live 0x109eb000 ip_conntrack 40693 1 ipt_state, Live 0x10a62000 iptable_filter 2753 1 - Live 0x10896000 ip_tables 16193 3 ipt_REJECT,ipt_state,iptable_filter, Live 0x109ed000 dm_mod 54741 0 - Live 0x109f8000 button 6481 0 - Live 0x10905000 battery 8517 0 - Live 0x109d6000 ac 4805 0 - Live 0x10908000 uhci_hcd 31449 0 - Live 0x109dd000 ehci_hcd 31557 0 - Live 0x10949000 snd_via82xx 27237 2 - Live 0x10953000 snd_ac97_codec 64401 1 snd_via82xx, Live 0x10912000 snd_pcm_oss 47609 0 - Live 0x1093c000 snd_mixer_oss 17217 2 snd_pcm_oss, Live 0x1090c000 snd_pcm 97993 2 snd_via82xx,snd_pcm_oss, Live 0x10923000 snd_timer 29765 1 snd_pcm, Live 0x108ec000 snd_page_alloc 9673 2 snd_via82xx,snd_pcm, Live 0x108bd000 gameport 4801 1 snd_via82xx, Live 0x108a6000 snd_mpu401_uart 8769 1 snd_via82xx, Live 0x108b9000 snd_rawmidi 26725 1 snd_mpu401_uart, Live 0x108e4000 snd_seq_device 8137 1 snd_rawmidi, Live 0x1083b000 snd 54053 11 snd_via82xx,snd_ac97_codec,snd_pcm_oss,snd_mixer_oss,snd_pcm,snd_timer,snd_mpu401_uart,snd_rawmidi,snd_seq_device, Live 0x108f6000 soundcore 9889 2 snd, Live 0x1089b000 via_rhine 23497 0 - Live 0x1089f000 mii 4673 1 via_rhine, Live 0x10893000 floppy 58609 0 - Live 0x108a9000 ext3 116809 1 - Live 0x10875000 jbd 74969 1 ext3, Live 0x10861000 lsmod命令顯示結果如下: [root@localhost /]# lsmod Module Size Used by md5 4033 1 ipv6 232577 8 parport_pc 24705 1 lp 11565 0 parport 41737 2 parport_pc,lp autofs4 24005 0 i2c_dev 10433 0 i2c_core 22081 1 i2c_dev sunrpc 160421 1 ipt_REJECT 6465 1 ipt_state 1857 5 ip_conntrack 40693 1 ipt_state iptable_filter 2753 1 ip_tables 16193 3 ipt_REJECT,ipt_state,iptable_filter dm_mod 54741 0 button 6481 0 battery 8517 0 ac 4805 0 uhci_hcd 31449 0 ehci_hcd 31557 0 snd_via82xx 27237 2 snd_ac97_codec 64401 1 snd_via82xx snd_pcm_oss 47609 0 snd_mixer_oss 17217 2 snd_pcm_oss snd_pcm 97993 2 snd_via82xx,snd_pcm_oss snd_timer 29765 1 snd_pcm snd_page_alloc 9673 2 snd_via82xx,snd_pcm gameport 4801 1 snd_via82xx snd_mpu401_uart 8769 1 snd_via82xx snd_rawmidi 26725 1 snd_mpu401_uart snd_seq_device 8137 1 snd_rawmidi snd 54053 11 snd_via82xx,snd_ac97_codec,snd_pcm_oss,snd_mixer_oss,snd_pcm,snd_timer,snd_mpu401_uart,snd_rawmidi,snd_seq_device soundcore 9889 2 snd via_rhine 23497 0 mii 4673 1 via_rhine floppy 58609 0 ext3 116809 1 jbd 74969 1 ext3 -------------------------------------------------------------------------------- /proc/mounts文件 這個文件以/etc/mtab文件的格式給出當前系統所安裝的文件系統信息。這個文件也能反映出任何手工安裝從而在/etc/mtab文件中沒有包含的文件系統。 示例: [root@localhost /]# cat /proc/mounts rootfs / rootfs rw 0 0 /proc /proc proc rw,nodiratime 0 0 none /dev tmpfs rw 0 0 /dev/root / ext3 rw 0 0 none /dev tmpfs rw 0 0 none /selinux selinuxfs rw 0 0 /proc /proc proc rw,nodiratime 0 0 /proc/bus/usb /proc/bus/usb usbfs rw 0 0 /sys /sys sysfs rw 0 0 none /dev/pts devpts rw 0 0 none /dev/shm tmpfs rw 0 0 none /proc/sys/fs/binfmt_misc binfmt_misc rw 0 0 sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw 0 0 -------------------------------------------------------------------------------- /proc/pci文件 這個文件給出PCI設備的信息。用它可以方便地診斷PCI問題。你可以從這個文件中檢索到的信息包括諸如IDE介面或USB控制器這樣的設備,匯流排,設備和功能編號,設備延遲以及IRQ編號。 示例: [root@localhost /]# cat /proc/pci PCI devices found: Bus 0, device 0, function 0: Class 0600: PCI device 1106:3116 (rev 0). Master Capable. Latency=8. Prefetchable 32 bit memory at 0xe0000000 [0xe7ffffff]. Bus 0, device 1, function 0: Class 0604: PCI device 1106:b091 (rev 0). Master Capable. No bursts. Min Gnt=12. Bus 0, device 16, function 2: Class 0c03: PCI device 1106:3038 (rev 12. IRQ 5. Master Capable. Latency=32. I/O at 0xec00 [0xec1f]. Bus 0, device 16, function 1: Class 0c03: PCI device 1106:3038 (rev 12. IRQ 3. Master Capable. Latency=32. I/O at 0xe800 [0xe81f]. Bus 0, device 16, function 0: Class 0c03: PCI device 1106:3038 (rev 12. IRQ 11. Master Capable. Latency=32. I/O at 0xe400 [0xe41f]. Bus 0, device 16, function 3: Class 0c03: PCI device 1106:3104 (rev 130). IRQ 10. Master Capable. Latency=32. Non-prefetchable 32 bit memory at 0xdfffff00 [0xdfffffff]. Bus 0, device 17, function 0: Class 0601: PCI device 1106:3177 (rev 0). Bus 0, device 17, function 1: Class 0101: PCI device 1106:0571 (rev 6). IRQ 255. Master Capable. Latency=32. I/O at 0xfc00 [0xfc0f]. Bus 0, device 17, function 5: Class 0401: PCI device 1106:3059 (rev 80). IRQ 5. I/O at 0xe000 [0xe0ff]. Bus 0, device 18, function 0: Class 0200: PCI device 1106:3065 (rev 116). IRQ 11. Master Capable. Latency=32. Min Gnt=3.Max Lat=8. I/O at 0xdc00 [0xdcff]. Non-prefetchable 32 bit memory at 0xdffffe00 [0xdffffeff]. Bus 1, device 0, function 0: Class 0300: PCI device 5333:8d04 (rev 0). IRQ 11. Master Capable. Latency=32. Min Gnt=4.Max Lat=255. Non-prefetchable 32 bit memory at 0xdfe80000 [0xdfefffff]. Prefetchable 32 bit memory at 0xd0000000 [0xd7ffffff]. -------------------------------------------------------------------------------- /proc/stat文件 這個文件包含的信息有CPU利用率,磁碟,記憶體頁,記憶體對換,全部中斷,接觸開關以及賞賜自舉時間(自1970年1月1日起的秒數)。 示例: [root@localhost /]# cat /proc/stat cpu 31994 3898 7161 381600 15254 451 0 cpu0 31994 3898 7161 381600 15254 451 0 intr 4615930 4404290 3364 0 0 12 0 7 0 2 0 0 12618 112114 0 44142 39381 ctxt 1310498 btime 1148891913 processes 4249 procs_running 4 procs_blocked 0 -------------------------------------------------------------------------------- /proc/uptime文件 這個文件給出自從上次系統自舉以來的秒數,以及其中有多少秒處於空閑。這主要供uptime程式使用。比較這兩個數字能夠告訴你長期來看CPU周期浪費的比例。 示例: [root@localhost /]# cat /proc/uptime 4477.04 4021.10 -------------------------------------------------------------------------------- /proc/version文件 這個文件只有一行內容,說明正在運行的內核版本。可以用標準的編程方法進行分析獲得所需的系統信息。 示例: [root@localhost /]# cat /proc/version Linux version 2.6.9-1.667 ([email protected]) (gcc version 3.4.2 20041017 (Red Hat 3.4.2-6.fc3)) #1 Tue Nov 2 14:41:25 EST 2004 proc/net子目錄 此目錄下的文件描述或修改了聯網代碼的行為。可以通過使用arp,netstat,route和ipfwadm命令設置或查詢這些特殊文件中的許多文件。 示例: [root@localhost /]# ls /proc/net anycast6 ip_conntrack mcfilter6 rt6_stats tcp arp ip_conntrack_expect netlink rt_acct tcp6 dev ip_mr_cache netstat rt_cache udp dev_mcast ip_mr_vif packet snmp udp6 dev_snmp6 ip_tables_matches psched snmp6 unix if_inet6 ip_tables_names raw sockstat wireless igmp ip_tables_targets raw6 sockstat6 igmp6 ipv6_route route softnet_stat ip6_flowlabel mcfilter rpc stat -------------------------------------------------------------------------------- 以下摘要介紹此目錄下文件的功能: arp 轉儲每個網路介面的arp表中dev包的統計 dev 來自網路設備的統計 dev_mcast 列出二層(數據鏈路層)多播組 igmp 加入的IGMP多播組 netlink netlink套介面的信息 netstat 網路流量的多種統計。第一行是信息頭,帶有每個變數的名稱。接下來的一行保存相應變數的值 raw 原始套介面的套介面表 route 靜態路由表 rpc 包含RPC信息的目錄 rt_cache 路由緩衝 snmp snmp agent的ip/icmp/tcp/udp協議統計;各行交替給出欄位名和值 sockstat 列出使用的tcp/udp/raw/pac/syc_cookies的數量 tcp TCP連接的套介面 udp UDP連接的套介面表 unix UNIX域套介面的套介面表 -------------------------------------------------------------------------------- 示例:[root@localhost /]# cat /proc/net/route Iface Destination Gateway Flags RefCnt Use Metric Mask MTU Window IRTT eth0 0035C2DA 00000000 0001 0 0 0 80FFFFF0 eth0 0000FEA9 00000000 0001 0 0 0 0000FFF0 eth0 00000000 0135C2DA 0003 0 0 0 00000000 -------------------------------------------------------------------------------- [root@localhost /]# cat /proc/net/tcp sl local_address rem_address st tx_queue rx_queue tr tm->when retrnsmt uid timeout inode 0: 00000000:8000 00000000:0000 0A 00000000:00000000 00:00000000 00000000 29 0 9525 1 0dde7500 3000 0 0 2 -1 1: 00000000:006F 00000000:0000 0A 00000000:00000000 00:00000000 00000000 0 0 9484 1 0dde79e0 3000 0 0 2 -1 2: 0100007F:0277 00000000:0000 0A 00000000:00000000 00:00000000 00000000 0 0 10049 1 0a8e3a00 3000 0 0 2 -1 3: 0100007F:14D7 00000000:0000 0A 00000000:00000000 00:00000000 00000000 99 0 9847 1 0dde7020 3000 0 0 2 -1 4: 0100007F:0019 00000000:0000 0A 00000000:00000000 00:00000000 00000000 0 0 10286 1 0a8e3520 3000 0 0 2 -1 -------------------------------------------------------------------------------- [root@localhost /]# cat /proc/net/arp IP address HW type Flags HW address Mask Device 218.194.53.1 0x1 0x2 00:0D:BC:78:07:3F * eth0 -------------------------------------------------------------------------------- [root@localhost /]# cat /proc/net/udp sl local_address rem_address st tx_queue rx_queue tr tm->when retrnsmt uid timeout inode 0: 00000000:8000 00000000:0000 07 00000000:00000000 00:00000000 00000000 29 0 9520 2 0b4ef7c0 105: 00000000:14E9 00000000:0000 07 00000000:00000000 00:00000000 00000000 99 0 10284 2 0b4ef040 111: 00000000:006F 00000000:0000 07 00000000:00000000 00:00000000 00000000 0 0 9483 2 0b4efcc0 116: 00000000:02F4 00000000:0000 07 00000000:00000000 00:00000000 00000000 0 0 9511 2 0b4efa40 119: 00000000:0277 00000000:0000 07 00000000:00000000 00:00000000 00000000 0 0 10050 2 0b4ef2c0 -------------------------------------------------------------------------------- /proc/scsi子目錄 此目錄下包含一個列出了所有檢測到的SCSI設備的文件,並且為每種控制器驅動程式提供一個目錄,在這個目錄下又為已安裝的此種控制器的每個實例提供一個子目錄。 示例: 由於本人的機器沒有SCSI設備,顧暫時無法提供示例。 -------------------------------------------------------------------------------- /proc/sys子目錄 在此目錄下有許多子目錄。此目錄中的許多項都可以用來調整系統的性能。這個目錄包含信息太多,無法介紹全部。只在示例中展示目錄下的一些文件。 示例:[root@localhost /]# ls /proc/sys debug dev fs kernel net proc sunrpc vm -------------------------------------------------------------------------------- [root@localhost ~]# ls /proc/sys/fs aio-max-nr dentry-state file-nr lease-break-time overflowgid aio-nr dir-notify-enable inode-nr leases-enable overflowuid binfmt_misc file-max inode-state mqueue quota -------------------------------------------------------------------------------- [root@localhost ~]# ls /proc/sys/kernel acct hotplug panic sem cad_pid modprobe panic_on_oops shmall cap-bound msgmax pid_max shmmax core_pattern msgmnb print-fatal-signals shmmni core_uses_pid msgmni printk sysrq ctrl-alt-del ngroups_max printk_ratelimit tainted domainname osrelease printk_ratelimit_burst threads-max exec-shield ostype pty vdso exec-shield-randomize overflowgid random version hostname overflowuid real-root-dev -------------------------------------------------------------------------------- [root@localhost ~]# ls /proc/sys/net core ethernet ipv4 ipv6 unix -------------------------------------------------------------------------------- [root@localhost sys]# ls /proc/sys/vm block_dump laptop_mode nr_pdflush_threads dirty_background_ratio legacy_va_layout overcommit_memory dirty_expire_centisecs lower_zone_protection overcommit_ratio dirty_ratio max_map_count page-cluster dirty_writeback_centisecs min_free_kbytes swappiness hugetlb_shm_group nr_hugepages vfs_cache_pressure -------------------------------------------------------------------------------- [root@localhost sys]# ls /proc/sys/net/ipv4 conf tcp_fack icmp_echo_ignore_all tcp_fin_timeout icmp_echo_ignore_broadcasts tcp_frto icmp_ignore_bogus_error_responses tcp_keepalive_intvl icmp_ratelimit tcp_keepalive_probes icmp_ratemask tcp_keepalive_time igmp_max_memberships tcp_low_latency igmp_max_msf tcp_max_orphans inet_peer_gc_maxtime tcp_max_syn_backlog inet_peer_gc_mintime tcp_max_tw_buckets inet_peer_maxttl tcp_mem inet_peer_minttl tcp_moderate_rcvbuf inet_peer_threshold tcp_no_metrics_save ip_autoconfig tcp_orphan_retries ip_conntrack_max tcp_reordering ip_default_ttl tcp_retrans_collapse ip_dynaddr tcp_retries1 ip_forward tcp_retries2 ipfrag_high_thresh tcp_rfc1337 ipfrag_low_thresh tcp_rmem ipfrag_secret_interval tcp_sack ipfrag_time tcp_stdurg ip_local_port_range tcp_synack_retries ip_nonlocal_bind tcp_syncookies ip_no_pmtu_disc tcp_syn_retries neigh tcp_timestamps netfilter tcp_tso_win_divisor route tcp_tw_recycle tcp_abort_on_overflow tcp_tw_reuse tcp_adv_win_scale tcp_vegas_alpha tcp_app_win tcp_vegas_beta tcp_bic tcp_vegas_cong_avoid tcp_bic_fast_convergence tcp_vegas_gamma tcp_bic_low_window tcp_westwood tcp_dsack tcp_window_scaling tcp_ecn tcp_wmem -------------------------------------------------------------------------------- [root@localhost sys]# cat /proc/sys/kernel/shmall 2097152 -------------------------------------------------------------------------------- [root@localhost sys]# cat /proc/sys/kernel/osrelease 2.6.9-1.667 -------------------------------------------------------------------------------- 總結:/proc文件系統包含了大量的有關當前系統狀態的信息。proc的手冊頁中也有對這些文件的解釋文檔。把文件和分析這些文件的工具產生的輸出進行比較能夠更加清晰地瞭解這些文件。 |