2.1-2.5系统目录结构


2.1-2.2 系统目录结构(上)

目录结构的介绍

p_w_picpath

  • / 根 每一个文件和目录从根目录开始。 只有root用户具有该目录下的写权限。请注意,/root是root用户的家目录。

  • /bin中 - 用户二进制文件 包含二进制可执行文件。 在单用户模式下,你需要使用的常见linux命令都位于此目录下。系统的所有用户使用的命令都设在这里。 例如:ps、ls、ping、grep、cp

  • /sbin目录 - 系统二进制文件 就像/bin,/sbin同样也包含二进制可执行文件。 但是,在这个目录下的linux命令通常由系统管理员使用,对系统进行维护。例如:iptables、reboot、fdisk、ifconfig、swapon命令 普通用户用的命令都在/bin下,管理员可以使用命令在/sbin下。

  • /etc - 配置文件 包含所有程序所需的配置文件。 也包含了用于启动/停止单个程序的启动和关闭shell脚本。例如:/etc/resolv.conf、/etc/logrotate.conf

  • /dev - 设备文件 包含设备文件。 这些包括终端设备、USB或连接到系统的任何设备。例如:/dev/tty1、/dev/usbmon0

  • /proc - 进程信息 包含系统进程的相关信息,每个进程在该目录下都有一个目录。 这是一个虚拟的文件系统,包含有关正在运行的进程的信息。例如:/proc/{pid}目录中包含的与特定pid相关的信息。 这是一个虚拟的文件系统,系统资源以文本信息形式存在。例如:/proc/uptime

  • /var - 变量文件 var代表变量文件。 这个目录下可以找到内容可能增长的文件。 这包括 - 系统日志文件(/var/log);包和数据库文件(/var/lib);电子邮件(/var/mail);打印队列(/var/spool);锁文件(/var/lock);多次重新启动需要的临时文件(/var/tmp);

  • /tmp - 临时文件 包含系统和用户创建的临时文件。 当系统重新启动时,这个目录下的文件都将被删除。

  • /usr - 用户程序 包含二进制文件、库文件、文档和二级程序的源代码。 /usr/bin中包含用户程序的二进制文件。如果你在/bin中找不到用户二进制文件,到/usr/bin目录看看。例如:at、awk、cc、less、scp。 /usr/sbin中包含系统管理员的二进制文件。如果你在/sbin中找不到系统二进制文件,到/usr/sbin目录看看。例如:atd、cron、sshd、useradd、userdel。 /usr/lib中包含了/usr/bin和/usr/sbin用到的库。 /usr/local中包含了从源安装的用户程序。例如,当你从源安装Apache,它会在/usr/local/apache2中。

  • /home - HOME目录 所有用户用home目录来存储他们的个人档案。 例如:/home/john、/home/nikita 普通用户是在/home下,root用户则是在/下。

  • /boot - 引导加载程序文件 包含引导加载程序相关的文件。 内核的initrd、vmlinux、grub文件位于/boot下。 例如:initrd.img-2.6.32-24-generic、vmlinuz-2.6.32-24-generic

  • /lib - 系统库 包含支持位于/bin和/sbin下的二进制文件的库文件. 库文件名为 ld或lib.so.* 例如:ld-2.11.1.so,libncurses.so.5.7

  • /opt - 可选的附加应用程序 opt代表可选的。 包含从个别厂商的附加应用程序。 附加应用程序应该安装在/opt/或者/opt/的子目录下。

  • /mnt - 挂载目录 临时安装目录,系统管理员可以挂载文件系统。

  • /media - 可移动媒体设备 用于挂载可移动设备的临时目录,默认是空的。 举例来说,挂载CD-ROM的/media/cdrom,挂载软盘驱动器的/media/floppy;

  • /srv - 服务数据 srv代表服务。 包含服务器特定服务相关的数据。 例如,/srv/cvs包含cvs相关的数据。

如何查看一个命令依赖于哪些库,使用如下命令则会列出ls命令依赖的所有库文件。

ldd /bin/ls

树形查看目录的命令
tree /root   树形查看/root下目录及文件

如果没有此命令需要先安装tree

yum install -y tree

Ctrl+c可以中断此命令,因为有的目录很多,刷出来会比较慢。

指定目录最大的深度(如2层)

tree -L 2 /root

这样就会只显示/root下两层的目录,更深层的目录将不会显示出来。


2.3 ls命令

ls命令是linux下最常用的命令之一,ls是list的缩写。因为linux目录或者文件记录的信息实在太多,所以默认ls只显示非隐藏的目录以及文件名。ls直接执行不加参数时显示当前目录下的文件名。

ls参数介绍
  1. 命令格式: 命令[-选项][参数] 列入

ls -a /etc   显示/etc下隐藏文件

在Linux中“.”代表的是隐藏文件。

  1. ls命令集合

  • -a 显示所有文件,包括隐藏文件

  • -l 详细信息显示

  • -d 查看目录属性

  • -f 直接输出结果,不进行排序(ls预设会以档案名排序)

  • -i 列出inode号码

  • -F : 根据档案信息,给予附加数据结构,例如:*代表可执行文件 /代表目录 =代表socket档案 |代表FIFO档案

  • -A : 全部档案,包括隐藏档案,但是不显示 . 与 .. 这两个目录

  • -h : 档案容量以人类可以理解的方式显示(如GB、KB等)

  • -n : 列出UID与GID而非使用者与群组的名称

  • -r : 将结果反向序列输出

  • -R : 连同子目录内容一同列出

  • -S : 以档案容量大小排序,而不是用档案名排序

  • -t : 以时间排序,而不是用档案名排序

  • --color=never : 不依据档案特性给予颜色显示

  • --color=always : 总是依据档案特性给予颜色显示

  • --color=auto : 让系统自行依据设定来判断是否给予颜色

  • --full-time : 以完整时间模式(包括年月日时分)显示

  • --time={atime,ctime} : 输出access时间或改变权限属性时间(ctime),而非内容变更时间(mtime)


2.4 文件类型

ls -l文件每列的介绍
-rw-------. 1 root root  7690 12月  3 06:21

1列:文件类型和权限

2列 : 链接占用的节点(inode),如果是目录,这个数值与该目录有多少一级子目录有关系。

3列:该文件所有者

4列:该文件所属组

5列:该文件的大小

6列:6、7、8列为该文件最近的修改日期

9列:该文件文件名

inode是什么

理解inode,要从文件储存说起。

  • 文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。

  • 操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个 sector组成一个 block。

  • 文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"。

文件类型详解
  • d目录文件

  • -普通文件 普通文件(regular file):就是一般类型的文件,当用 ls -l 查看某个目录时,第一个属性为 ‘-‘ 的文件就是正规文件,或者叫普通文件。正规文件又可分成纯文字文件(ascii)和二进制文件(binary)。纯文本文件是可以通过cat, more, less等工具直接查看内容的,而二进制文件并不能。例如我们用的命令/bin/ls 这就是一个二进制文件。

  • l 链接文件(linux file),软连接就是该类型的文件 链接文件(link):ls -l 查看第一个属性为 ‘l’, 类似windows下的快捷方式。这种文件在linux中很常见,而且阿铭在日常的系统运维工作中用的很多,所以要特意留意一下这种类型的文件。

  • b 块设备,/dev/sda就是块设备 设备(device):与系统周边相关的一些档案,通常都集中在 /dev 这个目录之下! 通常又分为两种:块(block)设备 :就是一些储存数据,以提供系统存取的接口设备,简单的说就是硬盘。例如您的一号硬盘的代码是 /dev/sda1, 第一个属性为 ‘b’;另一种是字符(character)设备 :是一些串行端口的接口设备,例如键盘、鼠标等等,第一个属性为 ‘c’.

  • c 串行端口,例如鼠标键盘。

  • s 套接字文件(socket),用于进程间通信

  • p 管道文件。


2.5 alias命令和which命令

如何看一个命令的别名
which ls

查看ls命令的别名

如何查看当前那些命令做了别名
alias

直接敲alias即可列出来

如何设置别名
alias gaohanwei='ls -A'

当输入gaohanwei实际上使用的是ls -A这个命令

如何取消已经设置了的别名
unalias gaohanwei

这样就取消了gaohanwei这个别名

  • 用户可利用alias,自定指令的别名。若仅输入alias,则可列出目前所有的别名设置。 alias的效力仅及于该次登入的操作。若要每次登入是即自动设好别名,可在/etc/profile或自己的~/.bashrc中设定指令的别名。还有,如果想给每一位用户都生效的别名,请把alias la='ls -al'一行加在/etc/bashrc最后面,bashrc是环境变量的配置文件 /etc/bashrc和~/.bashrc 区别就在于一个是设置给全系统一个是设置给单用户使用. 利用alias可以把很长的命令变成任意我们喜欢的简短的 如果想永久生效,就把这条写入到 /etc/bashrc里面,并使用命令source .bashrc进行重启bashrc即可生效。