Linux根目录详解-转自鸟哥的私房菜

转自:http://myhat.blog.51cto.com/391263/107931/
 
  • *根目录(/)的意义与内容:
    根目录是整个系统最重要的一个目录,因为不但所有的目录都是由根目录衍生出来的,同时根目录也与开机/还原/系统修复等动作有关。 由于系统开机时需要特定的开机软体、核心档案、开机所需程式。函式库等等档案资料,若系统出现错误时,根目录也需要包含有能够修复档案系统的程式才行。 因为根目录是这么的重要,所以在FHS的要求方面,他希望根目录不要放在非常大的分割槽内, 因为越大的分割槽你会放入越多的资料,如此一来根目录所在分割槽就可能会有较多的发生错误的机会。
    因此FHS标准建议:根目录(/)所在分割槽应该越小越好,且应用程式所安排的软体最好不要与根目录放在同一个分割槽内,保持根目录越小也好。如此不但效能较佳,根目录所在的档案系统也较不容易发生问题。
    有鉴于上述的说明,因此FHS定义根目录(/)底下应该要有底下这些次目录的存在才好:
目录
应放置档案内容
/bin
系统有很多放置执行档的目录,但/bin 比较特殊。因为/bin 放置的在单人维护模式下还能够被操作的指令。在/bin底下的指令可以被root一般账号所使用,主要有:cat,chmod,chown,date,mv,mkdir,cp,bash等等常用的指令。
/boot
这个目录主要是放置开机会使用到的档案,包括Linux核心档案以及开机选单与关机所需设定档等等。Linux Kernel常用的档名为:vmlinuz,  如果使用的是grub这个开机管理程式,则还会存在/boot/grub这个目录哦!
/dev
在Linux系统上,任何装置与周边设备都是以档案的形态存在于这个目录当中的. 你只要透过存取这个目录底下的某个档案,就等于存取某个装置哦~ 比较重要的档案有/dev/null,/dev/zero./dev/tty,/dev/lp*,/dev/hd*,/dev/sd*等等
/etc
系统主要的设定档几乎都放置在这个目录内,例如人员的账号密码档,各种服务的起始档等等。一般来说,这个目录下的各档案属性是可以让一般使用者查阅的,但是只有root有权限修改。 FHS建议不要放置可执行档(binary)在这个目录中哦。比较重要的档案有:/etc/inittab,/etc/init.d,/etc/modprobe.conf,/etc/X11,/etc/fstab,/etc/sysconfig等等。另外,其下重要的目录有:
  • /etc/init.d/:所有服务的预设启动 . 都是放在这里的,例如要启动或关闭iptables 的话:『 /etc/init.d/iptables start』、『/etc/init.d/iptables stop』
  • /etc/xinetd.d/:这就是所谓的super daemon管理各项服务的设定档。
  • /etc/X11/:与Xwindow有关的各种设定档,尤其是 xorg.conf 或 XF86Config 这两个 X Server 的设定档。
/home
这个系统预设的使用者家目录(home directory)。在你新增一个一般使用者账号时,预设的使用者家目录就会规范到这里来。比较重要的是,家目录有两种代号:
~:代表目前这个使用者的家目录,
~dmtsai :则代表dmtsai 的家目录!
/lib
系统的函式库非常的多,而/lib放置的则是在开机时会用到的函式库,以及在/bin或、sbin/底下的指令会呼叫的函式库而已。什么是函式库呢?你可以将它想成是『外挂』,某些指令必须要有这些『外挂』才能够顺利完成程式的执行之意。尤其重要的是/lib/modules/这个目录,因为该目录会放置核心先关的模组(驱动程式)哦!
/media
media是『媒体』的英文,顾名思义,这个/media底下放置的就是可移除的装置啦!包括软碟、光碟、DVD等等装置都暂时挂在于此。常见的档名有:、media/floppy, /media/cdrom等等。
/mnt
如果你想要暂时挂在某些额外的装置,一般建议你可以放置到这个目录中。在古早时候,这个目录的用途与/media相同,知识有了/media 之后,这个目录就用来暂时挂在用了。
/opt
这个是给第三方协力软体放置的目录.什么是第三方协力软体啊?举例来说,KDE这个桌面管理系统是一个独立的计划,不过他可以安装到Linux系统中,因此KDE的软体就建议放置到此目录下了。 另外,如果你想要自行安装额外的软体(非原本的distribution提供的),那么也能够将你的软体安装到这里来,不过,以前的Linux系统中,我们还是习惯放置在/user/local目录下。
/root
系统管理员(root)的家目录。 之所以放在这里,是因为如果进入单人维护模式而仅挂载根目录时,该目录就能够拥有root的家目录,所以我们会希望root的家目录与根目录放置在同一个分割槽中。
/sbin
Linux有非常多指令时用来设定系统环境的, 这些指令只有root 才能够用来【设定】系统,其他使用者最多只能用来【查询】而已。 放在/sbin 底下的为开机过程中所需要的,里面包括了开机、修复、还原系统所需要的指令。 至于某些服务器软体程式,一般则放置到/user/sbin当中。 至于本机自行安装的软体所产生的系统执行档(system binary),则放置到/user/local/sbin、当中了。 常见的指令包括: fdisk,fsck,ifconfig,init,mkfs 等等。
/srv
srv可以视为【service】的缩写,是一些网路服务启动之后,这些服务所需要取用的资料目录。 常见的服务例如WWW,FTP等等。举例来说,WWW服务器需要的网页资料就可以放置在/srv/www里面。
/tmp
这是让一般使用者或者是正在执行的程序暂时放置档案的地方。这个目录是人和人都能够存取的,所以你需要定期的清理一下。 当然,重要资料不可放置在此目录。 因为FHS甚至建议在开机时,应该要将/tmp下的资料都删除!
 
事实上FHS针对根目录所定义的标准就仅有上面的东西,不过我们的Linux底下还有许多目录你也需要了解一下的。 底下是几个在Linux当中也是非常重要的目录哦:
目錄
應放置檔案內容
/lost+found
這個目錄是使用標準的ext2/ext3檔案系統格式才會產生的一個目錄,目的在於當檔案系統發生錯誤時, 將一些遺失的片段放置到這個目錄下。這個目錄通常會在分割槽的最頂層存在, 例如你加裝一顆硬碟於/disk中,那在這個系統下就會自動產生一個這樣的目錄『/disk/lost+found』
/proc
這個目錄本身是一個『虛擬檔案系統(virtual filesystem)』喔!他放置的資料都是在記憶體當中, 例如系統核心、行程資訊(process)、周邊裝置的狀態及網路狀態等等。因為這個目錄下的資料都是在記憶體當中, 所以本身不佔任何硬碟空間啊!比較重要的檔案例如:/proc/cpuinfo, /proc/dma, /proc/interrupts, /proc/ioports, /proc/net/* 等等。
/sys
這個目錄其實跟/proc非常類似,也是一個虛擬的檔案系統,主要也是記錄與核心相關的資訊。 包括目前已載入的核心模組與核心偵測到的硬體裝置資訊等等。這個目錄同樣不佔硬碟容量喔!
除了這些目錄的內容之外,另外要注意的是,因為根目錄與開機有關,開機過程中僅有根目錄會被掛載, 其他分割槽則是在開機完成之後才會持續的進行掛載的行為。就是因為如此,因此根目錄下與開機過程有關的目錄, 就不能夠與根目錄放到不同的分割槽去!那哪些目錄不可與根目錄分開呢?有底下這些:
  • /etc:設定檔
  • /bin:重要執行檔
  • /dev:所需要的裝置檔案
  • /lib:執行檔所需的函式庫與核心所需的模組
  • /sbin:重要的系統執行檔
這五個目錄千萬不可與根目錄分開在不同的分割槽!請背下來啊! 好了,談完了根目錄,接下來我們就來談談/usr以及/var囉!先看/usr裡面有些什麼東西:
  • /usr 的意義與內容:
依據FHS的基本定義,/usr裡面放置的資料屬於可分享的與不可變動的(shareable, static), 如果你知道如何透過網路進行分割槽的掛載(例如在伺服器篇會談到的NFS伺服器),那麼/usr確實可以分享給區域網路內的其他主機來使用喔!
很多讀者都會誤會/usr為user的縮寫,其實usr是Unix Software Resource的縮寫, 也就是『Unix作業系統軟體資源』所放置的目錄,而不是使用者的資料啦!這點要注意。 FHS建議所有軟體開發者,應該將他們的資料合理的分別放置到這個目錄下的次目錄,而不要自行建立該軟體自己獨立的目錄。
因為是所有系統預設的軟體(distribution發佈者提供的軟體)都會放置到/usr底下,因此這個目錄有點類似Windows 系統的『C:\Windows\ + C:\Program files\』這兩個目錄的綜合體,系統剛安裝完畢時,這個目錄會佔用最多的硬碟容量。 一般來說,/usr的次目錄建議有底下這些:
目錄
應放置檔案內容
/usr/X11R6/
為X Window System重要資料所放置的目錄,之所以取名為X11R6是因為最後的X版本為第11版,且該版的第6次釋出之意。
/usr/bin/
絕大部分的使用者可使用指令都放在這裡!請注意到他與/bin的不同之處。(是否與開機過程有關)
/usr/include/
c/c++等程式語言的檔頭(header)與包含檔(include)放置處,當我們以tarball方式 (*.tar.gz 的方式安裝軟體)安裝某些資料時,會使用到裡頭的許多包含檔喔!
/usr/lib/
包含各應用軟體的函式庫、目標檔案(object file),以及不被一般使用者慣用的執行檔或腳本(.)。 某些軟體會提供一些特殊的指令來進行伺服器的設定,這些指令也不會經常被系統管理員操作, 那就會被擺放到這個目錄下啦。要注意的是,如果你使用的是X86_64的Linux系統, 那可能會有/usr/lib64/目錄產生喔!
/usr/local/
系統管理員在本機自行安裝自己下載的軟體(非distribution預設提供者),建議安裝到此目錄, 這樣會比較便於管理。舉例來說,你的distribution提供的軟體較舊,你想安裝較新的軟體但又不想移除舊版, 此時你可以將新版軟體安裝於/usr/local/目錄下,可與原先的舊版軟體有分別啦! 你可以自行到/usr/local去看看,該目錄下也是具有bin, etc, include, lib...的次目錄喔!
/usr/sbin/
非系統正常運作所需要的系統指令。最常見的就是某些網路伺服器軟體的服務指令(daemon)囉!
/usr/share/
放置共享文件的地方,在這個目錄下放置的資料幾乎是不分硬體架構均可讀取的資料, 因為幾乎都是文字檔案嘛!在此目錄下常見的還有這些次目錄:
  • /usr/share/man:線上說明文件
  • /usr/share/doc:軟體雜項的文件說明
  • /usr/share/zoneinfo:與時區有關的時區檔案
/usr/src/
一般原始碼建議放置到這裡,src有source的意思。至於核心原始碼則建議放置到/usr/src/linux/目錄下。
  • /var 的意義與內容:
如果/usr是安裝時會佔用較大硬碟容量的目錄,那麼/var就是在系統運作後才會漸漸佔用硬碟容量的目錄。 因為/var目錄主要針對常態性變動的檔案,包括快取(cache)、登錄檔(log file)以及某些軟體運作所產生的檔案, 包括程序檔案(lock file, run file),或者例如MySQL資料庫的檔案等等。常見的次目錄有:
目錄
應放置檔案內容
/var/cache/
應用程式本身運作過程中會產生的一些暫存檔;
/var/lib/
程式本身執行的過程中,需要使用到的資料檔案放置的目錄。在此目錄下各自的軟體應該要有各自的目錄。 舉例來說,MySQL的資料庫放置到/var/lib/mysql/而rpm的資料庫則放到/var/lib/rpm去!
/var/lock/
某些裝置或者是檔案資源一次只能被一個應用程式所使用,如果同時有兩個程式使用該裝置時, 就可能產生一些錯誤的狀況,因此就得要將該裝置上所(lock),以確保該裝置只會給單一軟體所使用。 舉例來說,燒錄機正在燒錄一塊光碟,你想一下,會不會有兩個人同時在使用一個燒錄機燒片? 如果兩個人同時燒錄,那片子寫入的是誰的資料?所以當第一個人在燒錄時該燒錄機就會被上鎖, 第二個人就得要該裝置被解除鎖定(就是前一個人用完了)才能夠繼續使用囉。
/var/log/
重要到不行!這是登錄檔放置的目錄!裡面比較重要的檔案如/var/log/messages, /var/log/wtmp(記錄登入者的資訊)等。
/var/mail/
放置個人電子郵件信箱的目錄,不過這個目錄也被放置到/var/spool/mail/目錄中! 通常這兩個目錄是互為連結檔啦!
/var/run/
某些程式或者是服務啟動後,會將他們的PID放置在這個目錄下喔! 至於PID的意義我們會在後續章節提到的。
/var/spool/
這個目錄通常放置一些佇列資料,所謂的『佇列』就是排隊等待其他程式使用的資料啦! 這些資料被使用後通常都會被刪除。舉例來說,系統收到新信會放置到/var/spool/mail/中, 但使用者收下該信件後該封信原則上就會被刪除。信件如果暫時寄不出去會被放到/var/spool/mqueue/中, 等到被送出後就被刪除。如果是工作排程資料(crontab),就會被放置到/var/spool/cron/目錄中!
建議在你讀完整個基礎篇之後,可以挑戰FHS官方英文文件 ,相信會讓你對於Linux作業系統的目錄有更深入的瞭解喔!
  • 針對FHS,各家distributions的異同
由於FHS僅是定義出最上層(/)及次層(/usr, /var)的目錄內容應該要放置的檔案或目錄資料, 因此,在其他次目錄層級內,就可以隨開發者自行來配置了。舉例來說,CentOS的網路設定資料放在 /etc/sysconfig/network-.s/ 目錄下,但是SuSE則是將網路放置在 /etc/sysconfig/network/ 目錄下,目錄名稱可是不同的呢!不過只要記住大致的FHS標準,差異性其實有限啦!
 
PS.
FHS:Filesystem Hierarchy Standard(文件系统目录标准),FHS采用树形结构组织文件,定义了系统中每个区域的用途、所需要的最小构成的文件和目录同时还给出了例外处理与矛盾处理。
 
    
 

转载于:https://www.cnblogs.com/LinuxSuDa/p/4252560.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/472481.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python多线程没用_Python中的多线程cv2.imshow()不起作用

我有两个摄像头(使用OpenNI,每个摄像头有两个流,由相同的驱动程序API实例处理),并且想要两个线程,每个线程捕获数据从每个摄像机独立,即驱动程序API的一个实例,说cam_handler&#x…

数据结构与算法 pdf_整理一个月完成的数据结构与算法PDF和测试代码免费拿

点击上方「10分钟编程」关注我呦让我们每天「博学」一点点数据结构与算法作为一名2021届的学生,今年7月份就要面临秋招了,那么对于应届生来说,要想脱颖而出,笔试就显得太重要了,算法题是笔试环节的最重要组成部分&…

天池 在线编程 部门统计(哈希)

文章目录1. 题目2. 解题1. 题目 描述 公司给你提供了所有员工的信息,包括其ID,姓名和所属部门。 以及他们之间的朋友关系,每个关系中由2个ID组成,如 “1, 2” 代表1号员工和2号员工是朋友。 朋友关系不具有传递性,即B…

android 过滤emoji表情符号,android怎样过滤字符串中的emoji表情

满意答案jdubysct2016.03.15采纳率:43% 等级:8已帮助:863人解决方案对于字符串处理,首选就是正则表达式去处理,而在android系统中可以自定义InputFilter去过滤需要处理掉的字符串,代码如下InputFilter emojiFilter new InputFilter ( ) {…

c++exe程序在别人电脑上双击无法打开_Windows10电脑磁盘占用率过高,用这二招轻松解决...

在操作计算机时,可能会看到类似“Srtasks.Exe”的信息,这个Srtasks.Exe表明Windows10电脑磁盘占用率过高。这是被称为“Microsoft系统保护后台任务”的可信Microsoft进程的可执行文件,Windows 10的“任务计划程序”经常使用该进程自动创建还原…

Swift学习笔记 闭包表达式

闭包是功能性自包含模块,可以在代码中被传递和使用。 Swift 中的闭包与 C 和 Objective-C 中的 blocks 以及其他一些编程语言中的 lambdas 比较相似。 闭包的形式主要有三种: 1. 全局函数是一个有名字但不会捕获任何值的闭包 2. 嵌套函数是一个有名字并可以捕获其封…

链接聚合是将一组物理接口_500字描述华为VLAN聚合工作原理 你看懂了吗?

VLAN聚合的工作过程和通行情况是如何的呢?工作原理如下:和普通VLAN都有一个三层逻辑接口和若干物理接口,VLAN聚合定义的Super-VLAN和Sub-VLAN比较特殊:Sub-VLAN:只包含物理接口,不能建立三层VLANIF接口&…

天池 在线编程 区分用户名(哈希)

文章目录1. 题目2. 解题1. 题目 描述 给出一组用户名,如果有重复的用户名,则在用户名后添加数字区别,并返回修改后的数组。 样例 1: 输入:["aa", "bb", "cc", "bb", "aa", &…

Android标签库,JSP Struts之HTML标签库详解 _Android/移动互联网/物联网/_夜鹰教程网...

标签库 说明HTML 标签 用来创建能够和 Struts 框架和其他相应的 HTML 标签交互的 HTML 输入表单Bean 标签 在访问 JavaBeans 及其属性,以及定义一个新的 bean 时使用Logic 标签 管理条件产生的输出和对象集产生的循环Template 标签 随着 Tiles 框架包的出现&#xf…

python实现解释器_Python设计模式之解释器模式

解释器模式 对每个应用来说,至少有以下两种不同的用户分类。 基本用户:这类用户只希望能够凭直觉使用应用。他们不喜欢花太多时间配置或学习应用的内部。对他们来说,基本的用法就足够了。 高级用户:这些用户,实际上通常…

蓝桥杯 之 基础练习10:十进制转十六进制

【循环 整除 求余 判断】 /*问题描述 十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,…

python选项卡控件_python GUI库图形界面开发之PyQt5选项卡控件QTabWidget详细使用方法与...

PyQt5选项卡控件QTabWidget简介QTabWidget控件提供了一个选项卡和一个页面区域,默认显示第一个选项卡的页面,通过单击各选项卡可以查看对应的界面,如果在一个窗口中显示的输入字段很多,则可以对这些字段进行拆分,分别放…

天池 在线编程 区间合并(字符串)

文章目录1. 题目2. 解题1. 题目 描述 现在给你两个字符串区间(按字典顺序), 请你判断两个区间是否可以合并。 字符串区间[a, b),包括所有以a开头的字符串。 例如,区间[a, b)和区间[ab,c)是可以合并的, 区间[a,b)和区间[b, c]也是可以合并的…

Android全局窗口模糊,javascript – 窗口焦点和模糊事件在Android浏览器上无法正常工作...

我发现当连接到窗口,文档或正文时,javascript焦点和模糊事件在Android浏览器上无法正确触发.我想要一个在桌面浏览器上正常工作的简单测试脚本,但在Android股票浏览器,Dolphin和Opera mobile上都失败了:Focus testwindow.onfocus function() {document.getElementB…

burp爆破线程设置多少_你知道线程池创建多少线程比较合理吗?

为什么会使用多线程创建多少线程比较合适结束语《Java 2019 超神之路》《Dubbo 实现原理与源码解析 —— 精品合集》《Spring 实现原理与源码解析 —— 精品合集》《MyBatis 实现原理与源码解析 —— 精品合集》《Spring MVC 实现原理与源码解析 —— 精品合集》《Spring Boot …

LeetCode 1812. 判断国际象棋棋盘中一个格子的颜色

文章目录1. 题目2. 解题1. 题目 给你一个坐标 coordinates ,它是一个字符串,表示国际象棋棋盘中一个格子的坐标。下图是国际象棋棋盘示意图。 如果所给格子的颜色是白色,请你返回 true,如果是黑色,请返回 false 。 给…

Unity 官方网站

http://msdn.microsoft.com/en-us/library/dn170416.aspx转载于:https://www.cnblogs.com/Qiaoyq/p/4257355.html

python数组遍历输出所有组合_python遍历列表和数组实例讲解

python遍历实例总结python同时遍历数组的索引和值的实例你想在迭代一个序列的同时跟踪正在被处理的元素索引。获取索引内置的 enumerate() 函数可以很好的解决这个问题:>>> my_list [a, b, c]>>> for idx, val in enumerate(my_list):... print(…

dev c++ 代码补全_zsh配置与代码自动补全+tmux配置

先上链接ohmyzsh​github.comzsh-autosuggestions​github.comgpakosz/.tmux​github.com问题描述代码需要,更换了服务器,发现新服务器上zsh没有自动补全,难受得不行,并且没有个性化的配置,强迫症顶不住,tm…

android 获取栈顶activity,Android : 如何得到Activities栈顶的Activity名称

众所周知,Android中的任务等等都是通过栈来管理的,Activities的管理也不例外。栈这种数据结构是大家再熟悉不过了。它的先进后出特性让Android可以很容易实现从当前Activity回到或者重新启动先前的Activity.(注:当系统资源匮乏的时候,系统会释…