Linux文件系统

Linux文件系统

根目录下的文件

  • /
    ├── bin 存放用户使用的基本命令(可执行程序,二进制文件) 不能单独分区的
    ├── boot 跟内核有关的文件 grub 内核和BootLoader
    ├── cgroup 用来资源限制资源隔离 docker 容器化
    ├── dev device 设备文件

    • b block device 块设备 硬盘或者CD-rom 随机读写
      c character device 字符设备 传真 鼠标 打字机 顺序读写
  • ├── etc 各种系统包括应用的配置文件
    ├── home 每个用户的家目录 而且每个用户默认的工作目录
    ├── lib 程序包括系统所依赖的一些共享库文件及内核所依赖的模块文件
    ├── lib64 系统程序所依赖的库文件 .so 结尾,(Windows .dll)
    ├── lost+found 垃圾回收站
    ├── media 光盘或者U盘挂载点 媒体介质挂载点
    ├── misc 杂项 不好归类的东西
    ├── mnt 临时文件文件挂载点 新建一个分区
    ├── net 网络文件
    ├── opt 第三方的应用安装位置 nginx tomcat Apache
    ├── proc 伪文件系统 硬盘不存在,只存在于内存中,记录系统或者进程的运行信息 cpuinfo
    ├── root root的家目录
    ├── sbin 存放管理类命令 也不能单独分区
    ├── selinux 与selinux相关文件或者记录
    ├── srv 系统运行产生的一些文件
    ├── sys 伪文件系统 记录系统硬件的一些运行信息
    ├── tmp 杂项,临时文件以及应用产生的临时文件
    ├── usr 误以为user,Unix software resource

    • /lib /lib64 存放库文件
      /bin /sbin 存放系统的一些二进制文件(可执行文件)
      /local 用来存放第三方的应用或安装本地应用程序
      bin etc games lib lib64 libexec sbin share etc
      /share 用于存放帮助
      /etc/ 配置文件
      /include 主要用来存放头文件,对第三方应用做二次开发可能会用到
      /tmp 临时文件
  • └── var 日志存放以及应用产生的一些文件或者临时文件 邮件队列

    • /var/log/message 系统日志
      /var/log/boot.log 系统启动时候产生的一些日志
      /var/log/dmesg 输出内核或者是硬件的一些有效信息,可以使用dmesg
      /var/log/mail.log 邮件产生的日志
      /var/log/cron 系统和我们自定义的计划任务的日志
      /var/log/btmp | wtmp用来记录系统登录成功或者失败的用户(跟系统安全相关的)
      使用last(登录成功的用户及IP)和lasb(登录失败的用户及IP)命令查看
      /var/log/secure 记录用户登录信息
      /var/log/lastlog
      /var/lib/mysql MySQL数据存放目录
      /var/mail 邮件存放目录 由于邮件服务 此目录可能会满 rsync(命令)使用一个空目录来同步有问题的目录
      /var/spool/cron 跟计划任务相关的内容
  • 注:
    /var/log/dmesg:
    dmesg 查看启动时候的内核日志信息
    last(登录成功的用户及IP)
    lastb(登录失败的用户及IP)
    生产环境服务器暴露公网之中,经常会有网上的服务器去尝试登录我们的服务器,这时候需要用到
    lastb去查看哪些地址的服务器在扫我们的机器,然后把这些IP加入host_deny iptables 中。
    /sys : sysfs提供了一种比 /proc 更理想的途径,主要在于为管理Linux设备提供统一模型的接口

Linux上的应用程序的组成部分:

二进制程序:/bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin

echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

库文件:/lib, /lib64, /usr/lib, /usr/lib64, /usr/local/lib, /usr/local/lib64
配置文件:/etc, /etc/DIRECTORY, /usr/local/etc
帮助文件:/usr/share/man, /usr/share/doc, /usr/local/share/man, /usr/local/share/doc

文件类型:

  • 普通文件
    d directory目录文件
    b 块儿设备 block :硬盘
    c 字符设备 character :键盘
    l 符号链接文件
    p 管道文件 pipe :进程间通信可能会管道
    s 套接字文件socket :比如MySQL的套接字 本地客户端和服务器端互相通信使用socket,避免通过网络这种方式

-rw-r–r–. 1 root root 13 Mar 27 14:21 hello
drwxr-xr-x. 3 root root 200 Mar 27 08:09 snd
brw-rw—-+ 1 root cdrom 11, 0 Mar 27 08:09 sr0
crw-rw—-. 1 root root 10, 231 Mar 27 08:09 snapshot
lrwxrwxrwx. 1 root root 15 Mar 27 08:09 stderr -> /proc/self/fd/2
[root@CentOS68 ~]# ll /var/lib/mysql/mysql.sock
srwxrwxrwx. 1 mysql mysql 0 Mar 27 09:53 /var/lib/mysql/mysql.sock

目录管理类命令:cd 、pwd 、ls 、mkdir 、rmdir 、tree

cd
  • change directory,改变工作目录
    cd 、cd~ : 默认情况下是切换到自己的家目录下面
    cd ~ USERNAME :切换到指定用户的主目录
    cd -:在上一个目录和当前目录来回切换; cd – 相当于 cd $OLDPWD
    cd . 和 cd ..  :相对路径,表示当前目录和上一级目录
pwd
  • pwd [OPTION]…
    显示当前目录
ls
  • ls [OPTIONS] [ARG]

    d rwxr-xr-x. 2 root root 4096 Mar 22 22:23 Downloads
    – rw-r–r–. 1 root root 51 Mar 24 10:02 hello.sh
    文件类型 、 文件权限 、 链接数量 、 属主和属组 、 文件大小、 最近的修改日期(mtime) 、文件名称或者目录名称

    • -a 列出所有隐藏文件和目录
      -r 逆序显示
      -R 把当前目录下的目录的所有内容列出来(递归)
      -d 显示当前目录的详细信息,不显示目录下的内容
      -A 列出所有隐藏文件和目录 除了.和..
      -l 文件和目录名分行显示
      -S 把文件目录按照大小从大到小来排列
      -t 把文件和目录按照最近修改时间排列 从最新到最老的顺序排列
      -u 访问时间排序
      -h 以人类可读的方式将文件或者目录大小显示出来
mkdir
  • mkdir [OPTION]… DIRECTORY…    创建一个目录
    -p 表示存在时不返回错误,不存在时,自动创建所需的各目录,同时创建父目录和子目录
    -v 显示其过程详细信息
    -m MODE 创建目录时直接指定目录权限

    mkdir -pv /tmp/a/b/c/

rmdir
  • rmdir [OPTION]… DIRECTORY…
    删除空白目录
    -v  显示执行过程
    注:由rm -r 所取代, 递归删除所有目录和文件
tree
  • 目录结构查看
    -d 显示目录
    -L 指定层级数目
    -P pattern :只显示指定pattern匹配到的路径

    tree -L 1 -d /

文件内容查看:more、less、head、tail、cat、file、

more
  • more [options] file [ … ]
    -d : 显示翻页及退出提示
less
  • less : 一页一页查看文件内容
tail
  • tail [OPTION]… [FILE]…
    显示文件后面的内容
    tail -n 10
    tail – 10
    -f 实时查看文件的最新变化 ; 排查故障的时候 ===tailf
    -c # :指定获取后#字节的内容
  • head [OPTION]… [FILE]…
    显示文件前面的内容
    head – n 10 文件名
    head – 10 文件名
    -c # :指定获取后#字节的内容

    cat 文件名 | head
    题目:统计日志中频繁访问的前10个IP
    cat /var/log/httpd/access_log | cut -d” ” -f1 | sort | uniq -c | sort -nr | head

cat
  • cat [OPTION]… [FILE]…
    查看一个文件
    -E: 显示行结束符 $
    -n: 对显示出的每一行进行编号
    -A:显示所有控制符
    -T: –show-tabs 显示制表符
    -v : –show-nonprinting 显示其他的非打印字符
    -b:非空行编号
    -s:压缩连续的空行成一行

    cat -sn changping.log
    频繁使用的是 cat -An 文件名

  • tac 将文件内容倒序排列显示出来

file
  • file [文件路径]
    文件类型查看
文件的时间戳管理工具
  • 查看文件状态(属性信息或者元数据): stat
[s@magedu test]$ stat hello
Access: 2017-04-01 10:50:30.955996678 +0800 Modify: 2017-04-01 10:50:30.955996678 +0800 Change: 2017-04-01 10:50:30.955996678 +0800 
  • 可通过touch来修改时间戳 :
    touch [OPTION]… FILE…
    -a :修改atime
    -m :修改mtime
    -t :[[CC]YY]MMDDhhmm[.ss] :修改指定时间戳为某时间
    注:当touch一个不存在的文件时,会先创建一个空文件。如果不想创建一个空文件,则使用- c选项,如 touch -c a.txt ,即如果文件不存在,则不创建该文件。

文本处理工具:wc、cut 、sort 、uniq

wc
  • wc [OPTION]… [FILE]…
    字符统计
    -l :lines 统计行数
    -w:words统计单词个数
    -c:character 统计字符个数
[root@CentOS68 ~]# cat /etc/passwd | wc -l 50 [root@CentOS68 ~]# wc -l /etc/passwd 50 /etc/passwd
cut
  • cut OPTION… [FILE]…
    文件内容切割
    -d :指明分隔符
    -f :指明需要取出的字段
    cut -d: -f1,3-5,7 /etc/passwd
sort
  • sort [OPTION]… [FILE]…
    -r 逆序
    -n 以数值大小进行排序
    -f 忽略字符串大小写
    -t “c” 以后面的字符作为分隔符
    -k# 选择某个字段 进行排序
    -u 去重(除去连续重复的行,只保留一次)
uniq
  • uniq [OPTION]… [INPUT [OUTPUT]]
    -c 显示每行重复出现的次数
    -d 仅显示重复
    -u 显示不重复
diff
  • diff [OPTION]… FILES
    比较两个文件的异同
    diff -u a文件 b文件 > a.diff
    path -b b < b.diff
    diff -u foo.conf-broken foo.conf-works > foo.patch
    $ patch -b foo.conf-broken foo.patch

1、找出ifconfig “网卡名” 命令结果中本机的IPv4地址
[root@magedu ~]# ifconfig eth1 | head -2 | tail -1 | cut -d “:” -f2 | cut -d ” ” -f1
172.16.252.143
2、查出分区空间使用率的最大百分比值
[root@magedu ~]# df | tail -5 | awk ‘{print 5}’ | sort -t” ” -rn -k2
/dev/sr0 100%
/dev/sda2 12%
/dev/sda1 10%
tmpfs 1%
/dev/sda5 1%
3、查出用户UID最大值的用户名、UID及shell类型
[root@magedu ~]# cat /etc/passwd | cut -d “:” -f1,3,7 | sort -t: -nr -k2 | head -1
nfsnobody:65534:/sbin/nologin

文件管理:cp、mv、rm

cp
  • cp [OPTION] … [-T] SOURCE DEST
    cp [OPTION] … SOURCE … DIRECTORY
    cp [OPTION] … -t DIRECTORY SOURCE…
    -i :交互式
    -r:递归复制目录及内部的所有内容
    -a:归档,相当于 -dR –preserve=all
    -d:表示不跟踪符号链接所指向的原文件
    -p:保持原有文件的属性信息
    -f:强制覆盖
    -v:显示过程
mv
  • mv [OPTION]… [-T] SOURCE DEST
    mv [OPTION] … SOURCE … DIRECTORY
    mv [OPTION] … -t DIRECTORY SOURCE…
    -i:交互式
    -f:强制
rm
  • rm [OPTION] … FILE …
    -i:交互式
    -f:强制
    -r:递归

原创文章,作者:s,如若转载,请注明出处:http://www.178linux.com/72301

评论列表(1条)

  • renjin
    renjin 2017-04-05 15:42

    主要总结了linux 的文件系统的结构,及linux下常用的一些命令,内容写的挺好的,排版也挺不错的