Linux-系统目录
[TOC]
系统目录
/
,这就是根目录。对你的电脑来说,有且只有一个根目录。所有的东西,我是说所有的东西都是从这里开始。举个例子:当你在终端里输入“/home”,你其实是在告诉电脑,先从/(根目录)开始,再进入到home目录。/root
,这是系统管理员(root user)的目录。对于系统来说,系统管理员就好比是上帝,它能对系统做任何事情,甚至包括删除你的文件。因此,请小心使用root帐号。/bin
,这里存放了标准的(或者说是缺省的)linux的工具,比如像“ls”、“vi”还有“more”等等。通常来说,这个目录已经包含在你的“path”系统变量里面了。什么意思呢?就是:当你在终端里输入ls,系统就会去/bin目录下面查找是不是有ls这个程序。/sbin
下的命令属于基本的系统命令,如shutdown,reboot,,用于启动系统,修复系统。/sbin目录下的命令通常只有管理员才可以运行/etc
,这里主要存放了系统配置方面的文件。举个例子:你安装了samba这个套件,当你想要修改samba配置文件的时候,你会发现它们(配置文件)就在/etc/samba目录下。/dev
,这里主要存放与设备(包括外设)有关的文件(unix和linux系统均把设备当成文件)。想连线打印机吗?系统就是从这个目录开始工作的。另外还有一些包括磁盘驱动、USB驱动等都放在这个目录。/home
,这里主要存放你的个人数据。具体每个用户的设置文件,用户的桌面文件夹,还有用户的数据都放在这里。每个用户都有自己的用户目录,位置为:/home/用户名。当然,root用户除外。/tmp
,这是临时目录。对于某些程序来说,有些文件被用了一次两次之后,就不会再被用到,像这样的文件就放在这里。有些linux系统会定期自动对这个目录进行清理,因此,千万不要把重要的数据放在这里。/usr
,注意 usr 指 Unix System Resource 而不是 User. 在这个目录下,你可以找到那些不适合放在/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驱动器等等。/proc
,有关当前系统状态的信息
/usr/bin与/usr/local/bin
/usr/bin下面的都是系统预装的可执行程序,会随着系统升级而改变。
/usr/local/bin目录是给用户放置自己的可执行程序的地方,推荐放在这里,不会被系统升级而覆盖同名文件。
所有用户皆可用的系统程序放在/bin
超级用户才能使用的系统程序放在/sbin
所有用户都可用的应用程序放在/usr/bin
超级用户才能使用的应用程序放在/usr/sbin
所有用户都可用的与本地机器无关的程序存放在/usr/local/bin
超级用户才能使用的与本地机器无关的程序存放在/usr/local/sbin
man hier 查看文件系统层次手册
/dev
/dev 中包含所有 Linux 系统中使用的外部设备。但是这里并不是放的外部设备的驱动程序,它实际上是一个访问这些外部设备的端口。我们可以非常方便地去访问这些外部设备,和访问一个文件,一个目录没有任何区别。
设备分类
- 字符型设备
字符设备是指每次与系统传输1个字符的设备。这些设备节点通常为传真、虚拟终端和串口调制解调器、键盘之类设备提供流通信服务,它通常不支持随机存取数据。 字符设备在实现时,大多不使用缓存器。系统直接从设备读取/写入每一个字符。例如,键盘这种设备提供的就是一个数据流,当你敲入“cnblogs”这个字符串时,键盘驱动程序会按照和输入完全相同的顺序返回这个由七个字符组成的数据流。它们是顺序的,先返回c,最后是s。 - 块设备
块设备是指与系统间用块的方式移动数据的设备。这些设备节点通常代表可寻址设备,如硬盘、CD-ROM和内存区域。块设备通常支持随机存取和寻址,并使用缓存器。操作系统为输入输出分配了缓存以存储一块数据。当程序向设备发送了读取或者写入数据的请求时,系统把数据中的每一个字符存储在适当的缓存中。当缓存被填满时,会采取适当的操作(把数据传走),而后系统清空缓存。它与字符设备不同之处就是,是否支持随机存储。字符型是流形式,逐一存储。 - 伪设备
在类Unix操作系统中,设备节点并不一定要对应物理设备。没有这种对应关系的设备是伪设备。操作系统运用了它们提供的多种功能。部份经常使用到的伪设备包括: null,zero,full,loop,random,urandom
/dev/sd{x} 和 /dev/nvme…
/dev/sda2 91G 36G 55G 40% /
/dev/nvme0n1p1 1012G 17G 945G 2% /data
/dev/sd{x}
是传统的 机械硬盘 和 SATA 接口的 SSD 固态硬盘的常用命名。/dev/nvme...
是新的 NVM Express 接口固态硬盘的命名。
特殊设备
/dev/stdin
,标准输入设备,即键盘/dev/stdout
,标准输出设备,即显示器/dev/stderr
,标准错误输出设备,即显示器/dev/null
,它丢弃一切写入其中数据,相当于黑洞,常被用于丢弃不需要的输出流/dev/zero
,无限零输入设备,提供无限的空字符(NULL, ASCII NUL, 0x00),常见用法是产生一个特定大小的空白文件/dev/full
,常满设备,总是在向其写入时返回设备无剩余空间(错误码为ENOSPC),读取时则与/dev/zero相同,常被用来测试程序在遇到磁盘无剩余空间错误时的行为/dev/random
,随机数发生器,允许程序访问来自设备驱动程序或其它来源的背景噪声/dev/urandom
,伪随机数设备/dev/fd
,记录用户打开的文件描述符/dev/hd[a-t]
,IDE设备。hda一般是指IDE接口的硬盘,hda一般指第一块硬盘,类似的有hdb,hdc等/dev/sd[a-z]
,SCSI设备。sda一般是指SATA接口的硬盘,sda一般指第一块硬盘,类似的有sdb,sdc等。现在的内核都会把硬盘,移动硬盘,U盘之类的识别为sdX的形式。/dev/cdrom
,光驱
/dev/cdrom不是一个驱动设备文件,而只是一个驱动设备文件的链接,它可能指向/dev/hdc或者/dev/hdb或者其他的以hd打头的设备。至于指向哪一个,要看你的光驱是挂在哪个ide口上:
/dev/hda Primary IDE1
/dev/hdb Secondary IDE1
/dev/hdc Primary IDE2
/dev/hdd Secondary IDE2
当然也可能有hde,hdf,要看你的电脑有没有那么多ide接口。
最后,你也可以改变/dev/cdrom的指向:
sudo rm /dev/cdrom
sudo ln -s /dev/hdd /dev/cdrom
这样,你就把Secondary IDE2上挂载的硬盘指向了cdrom的dev了/dev/tty[0-63]
,终端设备。
tty一词源于Teletypes,或者teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西,后来这东西被键盘与显示器取代,所以现在叫终端比较合适。终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。
pty(伪终端,虚拟终端):但是如果我们远程telnet到主机或使用xterm时不也需要一个终端交互么?是的,这就是虚拟终端pty(pseudo-tty)
/dev/pts/,pts(pseudo-terminal slave)是pty的实现方法
/dev/ptmx,与ptmx(pseudo-terminal master)配合使用实现pty,pts/ptmx结合使用,进而实现pty/dev/console
,控制台终端。
在Linux 系统中,计算机显示器通常被称为控制台终端 (Console)。它仿真了类型为Linux的一种终端(TERM=Linux),并且有一些设备特殊文件与之相关联:tty0、tty1、tty2 等。当你在控制台上登录时,使用的是tty1。使用Alt+[F1—F6]组合键时,我们就可以切换到tty2、tty3等上面去。tty1–tty6等称为虚拟终端,而tty0则是当前所使用虚拟终端的一个别名,系统所产生的信息会发送到该终端上(这时也叫控制台终端)。因此不管当前正在使用哪个虚拟终端,系统信息都会发送到控制台终端上。/dev/console即控制台,是与操作系统交互的设备,系统将一些信息直接输出到控制台上。
参考
Linux /dev目录详解和Linux系统各个目录的作用
http://blog.csdn.net/maopig/article/details/7195048linux /dev 常见特殊设备介绍与应用[loop,null,zero,full,random]
http://www.cnblogs.com/chengmo/archive/2010/10/25/1857775.html
上一篇 Hexo博客(01)GitHub Pages创建博客并绑定域名
下一篇 XML
页面信息
location:
protocol
: host
: hostname
: origin
: pathname
: href
: document:
referrer
: navigator:
platform
: userAgent
: