Linux目录管理

一、Linux核心目录结构

1.概述

在linux中目录一切从跟开始,linux目录类似于倒挂的大树

2.Linux核心目录(根下)

目录(windows叫文件夹),一般用来分类存放文件

/ 根,斜线 \ 反斜线

根下核心目录 说明
/etc/ 系统服务配置文件的目录,存放系统,服务的配置
/home/ 普通用户家目录,比如oldboy 目录为/home/oldboy
/root/ root用户的家目录
/dev/ device 设备文件目录,硬盘,光盘
/tmp/ temp临时目录,临时存放文件的地方
/proc/ process 系统服务,进程信息

image

3.路径表示形式

路径形式 说明
绝对路径 从根开始的路径是绝对路径,
/etc/
相对路径 不是从根开始的路径就是相对路径
进入etc etc/hostname

补充:相对路径相当于当前所在目录

二、目录结构深入-文件

1.1 /etc/ 下面

文件名称 说明 企业应用
/etc/hostname 主机名配置文件 每个linux主机配置主机名,根据主机名区别不同功能
/etc/hosts 主机名和ip的对应关系 在网站中做访问使用
/etc/sysconfig/network-scripts/ifcfg-eth0 网卡配置文件 物理机需要修改,云服务器自动
/etc/fstab 开机自动挂载的配置文件 配置磁盘挂载使用
/etc/motd 文件中的内容会在用户登录系统后显示出来 显示温馨提示
/etc/issue
/etc/issue.net
文件中的内容会在用户登录系统钱显示出来 这个文件内容一般会被清空

1) 修改主机名 (必会)

建议:

  • 看到主机名就能知晓,这个节点的作用
  • 推荐英文,“-”,“.” 就行,不要加入其它特殊符号,不要加入中文
#命令同时修改临时+永久	表示一直生效
[root@lnh oldboy]# hostnamectl set-hostname lnh
#查看主机名
[root@lnh oldboy]# cat /etc/hostname
lnh

旧系统修改建议:

  • 命令行通过hostname命令修改(临时修改,重启linux后失效)
  • 手动修改/etc/hostname 文件内容(永久修改,重启linux后生效)

2)网卡配置文件

[root@lnh oldboy]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 
TYPE=Ethernet
BOOTPROTO=none
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=10.0.0.200
PREFIX=24
GATEWAY=10.0.0.2
DNS1=223.5.5.5
DNS2=8.8.8.8
#修改网卡配置文件后要重启服务
[root@lnh oldboy]# systectl restart network

补充:DNS(域名解析服务) 用于把域名转换为ip

域名baidu.com --->DNS--->ip地址

3)/etc/rc.local 开机自启动配置文件

第一次使用这个文件之前需要给/etc/rc.d/rc.local 增加执行权限
chmod +x /etc/rc.d/rc.local

提示:

/etc/rc.local 本质是个快捷方式(软链接),源文件是/etc/rc.d/rc.local

4) /etc/motd /etc/issue

建议motd 写入系统基本信息

issue文件清空。 使用命令 >/etc/issue

1.2 /var/ 下面

variable

文件路径 说明 应用建议
/var/ 经常变化的内容
/var/log 系统及服务的各种日志目录
/var/log/secure 存放用户登录情况日志 分析是否有恶意破解情况
/var/log/messages 通用各种服务的日志 分析服务,系统异常

以secure为例,查看登录日志

先连接几次,失败,然后查看日志
[root@lnh oldboy]# ssh -p 22 root@10.0.0.200   #ssh远程连接的命令  -p 指定端口号 root 用户名 ip
root@10.0.0.200's password: 
Permission denied, please try again.
root@10.0.0.200's password: 
Permission denied, please try again.
[root@lnh ~]# cat /var/log/secure
Nov 30 00:08:40 lnh sshd[5328]: pam_succeed_if(sshd:auth): requirement "uid >= 1000" not met by user "root"
Nov 30 00:08:42 lnh sshd[5328]: Failed password for root from 10.0.0.200 port 56366 ssh2
Nov 30 00:08:42 lnh unix_chkpwd[5332]: password check failed for user (root)
Nov 30 00:08:42 lnh sshd[5328]: pam_succeed_if(sshd:auth): requirement "uid >= 1000" not met by user "root"
Nov 30 00:08:44 lnh sshd[5328]: Failed password for root from 10.0.0.200 port 56366 ssh2  #提示密码错误
Nov 30 00:08:44 lnh sshd[5328]: Connection closed by 10.0.0.200 port 56366 [preauth]

1.3 /proc/ 下面

文件路径 说明 应用建议
/proc 存放的是各种内存中的进程信息,linux内核配置,系统信息。
这个是虚拟目录,不会占用磁盘空间
/proc/cpuinfo cpu信息 未来监控使用,获取cpu指标
/proc/meminfo 内存信息 未来监控使用,获取内存指标
/proc/loadavg 系统负载信息,衡量系统繁忙程度
/proc/mounts 系统挂载信息

补充:

1)CPU信息

cpu 颗数,cpu核心数

  • cpu颗数,有多少个物理的cpu
  • cpu核心数:1颗中有多少个核心,每个核心相当于是一个工人
[root@lnh oldboy]# lscpu   #查看cpu信息,核心数,颗数
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                1    #核心数
On-line CPU(s) list:   0    #cpu颗数
Thread(s) per core:    1
Core(s) per socket:    1
Socket(s):             1

2)内存信息

内存与磁盘(硬盘)的区别

  • 硬盘:永久存储数据的地方
  • 内存:临时存放数据的地方

内存:

  • cpu速度太快了,硬盘速度较慢,cpu就要等着硬盘,早晨系统缓慢
  • 内存速度比cpu慢,比硬盘快
  • 运行磁盘中程序,运行在内存中

cpu:

  • 用于处理数据,速度最快

三、文件属性体系

1.概述

[root@lnh ~]# ls -lhi
total 20M
33575828 drwxr-xr-x. 80 root root 8.0K Dec  1 09:35 etc

image

2.inode与block

了解inode与block的含义即可,未来在磁盘出现故障的时候使用

1)概述

  • inode索引节点,inode号码类似于身份证号码,通过inode号码可以找到文件的内容

  • inode是一个空间,inode号是空间的位置,inode空间存放:

    • inode空间存放的是文件属性信息,文件大小,修改时间,权限,所有者
    • inode空间存放block的位置(指向文件实体的指针)
    • 这里不存放文件名
  • block块(数据块):存放数据

2)inode与block的关系

image

用户访问查看oldboy.txt文件内容的流程

  1. 用户访问oldboy.txt的时候,系统会先找出他对应的inode空间(根据inode号码)
  2. 访问来到inode空间后,确认用户,确认权限
  3. 权限信息正确就准许通过,可以访问inode对应的block区域(也就是数据)

3)inode和block的特点

  • inode索引节点,存放文件属性信息,block位置
  • 每创建一个非空文件至少占用1个inode,1个block,一般文件都要有一个inode
  • inode,block的数量是在格式化的时候创建的
  • 正常情况下block的使用起来会更快
  • 创建小文件不足4k,1个block还有剩余空间使用,无法给其他文件使用
  • 创建文件大于4k,占用多个block

4)如何查看block和inode的使用情况

  • 查看block的使用情况命令(也就是通常说的磁盘空间使用情况):df -h

  • 查看inode的使用情况:df -i

  • 补充:

    文件名是存放在目录的block中,没有存放在inode中,所以文件名不是文件属性

3.文件类型

1)windows与linux文件类型的区别

  • windows下面通过扩展名来区分不同文件类型,如果扩展名修改则无法使用 lidao.avi weixin.exe
  • Linux下面的扩展名仅仅用于展示,随意修改

虽然Linux不区分扩展名,但是推荐创建文件的时候加上,以便区分文件

常用的扩展名 说明
.txt 普通文件
.sh .bash shell脚本
.conf .cfg .xml .yaml .yml 配置文件
.py python脚本文件

2)Linux文件类型 必会

linux常见文件类型 含义
- 文件 file,范围较广
d 目录 directory
l 软链接,类似与windows快捷方式
c 字符设备 char 特殊文件,不断输出,吸入
b 块设备 block 硬盘
s 套接字 scoket文件
p 管道文件
[root@lnh ~]# ll -d / /etc/hostname /dev/null /dev/sda /etc/rc.local
dr-xr-xr-x. 21 root root  276 Nov 28 23:04 /
crw-rw-rw-.  1 root root 1, 3 Sep 20 17:56 /dev/null
brw-rw----.  1 root disk 8, 0 Sep 20 17:56 /dev/sda
-rw-r--r--.  1 root root    4 Sep 20 17:57 /etc/hostname
lrwxrwxrwx.  1 root root   13 Sep 14 16:37 /etc/rc.local -> rc.d/rc.local

3) 如何查看文件类型

file命令查看详细文件类型

文件的分类 说明
txt 普通文件(文本文件),我们日常可以查看或直接修改,平时书写就是这种,脚本
data 数据文件,需要用专用的命令查看。比如压缩包
二进制文件 大部分都是命令
[root@lnh ~]# file / /etc/hostname /dev/null /dev/sda /etc/rc.local /bin/ls
/:             directory
/etc/hostname: ASCII text
/dev/null:     character special
/dev/sda:      block special
/etc/rc.local: symbolic link to `rc.d/rc.local'
/bin/ls:       ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=aaf05615b6c91d3cbb076af81aeff531c5d7dfd9, stripped

4.软硬链接 必会

1)概述

软链接:类似与windows中快捷方式,也是一种文件;用于存放源文件的路径(位置+名字),应用最多

硬链接:在同一个分区中,不同的文件的inode号码相同,这些文件互为硬链接,很少使用

2)如何创建

ln(link) 创建软链接或硬链接,默认创建硬链接

创建软链接 ln -s 源文件 软链接文件

创建硬链接ln 源文件 硬链接文件

#创建源文件
[root@lnh ~]# touch oldboy.txt
#创建软链接
[root@lnh ~]# ln -s oldboy.txt oldboy.txt_soft
#创建硬链接
[root@lnh ~]# ln oldboy.txt oldboy.txt_hard
[root@lnh ~]# ll -i
total 0
33654334 -rw-r--r--. 2 root root  0 Dec  1 17:38 oldboy.txt
33654334 -rw-r--r--. 2 root root  0 Dec  1 17:38 oldboy.txt_hard     #硬链接的inode与源文件一致
33654335 lrwxrwxrwx. 1 root root 10 Dec  1 17:38 oldboy.txt_soft -> oldboy.txt
#从源文件位置写入内容
[root@lnh ~]# echo haha >> oldboy.txt
#从软链接位置写入内容
[root@lnh ~]# echo hehe >> oldboy.txt_soft 
[root@lnh ~]# cat oldboy.txt
haha
hehe
[root@lnh ~]# cat oldboy.txt_soft 
haha
hehe

#创建绝对路径的软链接
[root@lnh ~]# ln -s /root/oldboy.txt oldboy.txt_juedui_soft
[root@lnh ~]# ll
total 8
-rw-r--r--. 2 root root 10 Dec  1 17:40 oldboy.txt
-rw-r--r--. 2 root root 10 Dec  1 17:40 oldboy.txt_hard
lrwxrwxrwx. 1 root root 16 Dec  1 17:41 oldboy.txt_juedui_soft -> /root/oldboy.txt

提示:如果源文件被删除或改名或移动走,软链接会如何?

软链接指向的源位置会闪烁

3)软硬链接的区别 面试题

image

  1. 啥意思

    软链接(符号链接) ,类似与windows的快捷方式,存放源文件的位置和文件的属性信息

    硬链接:同一个分区中inode号码相同的文件,互为硬链接

  2. 咋来的

    软链接通过ln -s创建,硬链接通过ln创建

  3. 特点

    软链接比较常用,可以给文件,目录创建

    硬链接只能给文件创建,不能跨分区,无法给目录创建硬链接,较少使用

  4. 咋没的

    删除软链接,源文件不受影响

    删除源文件,软链接无法使用,红底白字闪烁

    删除硬链接,源文件,软链接无影响

    删除源文件和硬链接,这个文件就删除了

5.用户与用户组

6.权限

7.文件大小 必会

查看文件大小

[root@lnh ~]# ll -h /etc/hosts
-rw-r--r--. 1 root root 158 Jun  7  2013 /etc/hosts
[root@lnh ~]# ll -h /etc/
total 1.1M
drwxr-xr-x.  3 root root  101 Sep 14 16:38 abrt
-rw-r--r--.  1 root root   16 Sep 14 16:41 adjtime
-rw-r--r--.  1 root root 1.5K Apr  1  2020 aliases
-rw-r--r--.  1 root root  12K Sep 14 17:05 aliases.db
drwxr-xr-x.  2 root root  261 Nov 30 21:59 alternatives

查看目录大小

[root@lnh ~]# du -hs /etc/
33M	/etc/

-h 人类可读形式显示大小
-s 不要显示目录汇总所有的子目录,只显示汇总信息,不显示所有查看指定目录所占的空间

8.时间

linux文件时间 说明
mtime modify 修改时间,最常用
atime access 访问时间
ctime change 文件属性的变化时间

stat 查看文件的属性+文件名

[root@lnh ~]# stat oldboy.txt
  File: ‘oldboy.txt’
  Size: 10        	Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d	Inode: 33654334    Links: 2
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2022-12-01 17:40:24.601622910 +0800
Modify: 2022-12-01 17:40:21.604622848 +0800
Change: 2022-12-01 17:40:21.604622848 +0800
 Birth: -

企业案例:一个基于软链接服务的升级流程

未来可以设计基于软链接的升级与回滚流程

  • 升级:删除旧的软链接,创建软链接指向新的版本即可
  • 回滚:删除旧的软链接,创建软链接指向旧的可用的版本即可

image

posted @ 2022-12-28 11:18  wh459086748  阅读(203)  评论(0)    收藏  举报