首页 > 系统相关 >Linux基础知识

Linux基础知识

时间:2023-01-09 14:22:24浏览次数:29  
标签:文件 链接 文件系统 基础知识 Linux inode 目录

Linux

Linux系统目录结构

  在Linux或者Unix系统中,所有文件和目录都被组织成以一个根节点开始的树状结构,文件系统的最顶层是由根目录开始\,根目录下既可以是文件。如果一个目录或者文件是以.开头的,则表示这个文件或目录是隐藏的。系统目录结构如下所示:

目录具体含义:

  • /bin  Binaries(二进制文件)的缩写,存放着最经常使用的命令
  • /boot  用于存放启动Linux时所需要的一些核心文件,包括一些链接文件以及镜像文件
  • /dev  Devices的缩写,用于存放Linux的外部设备,在Linux中设备也是以文件的形式进行表示的,访问设备的方式与访问文件的方式类似。
  • /etc  Etcetera(等等)的缩写,用来存放所有系统管理所需要的配置文件和子目录
  • /home  用户的主目录,在Linux中,每个用户都有一个自己的目录,一般是以用户的账号进行命名的,如上途中的alice,bob等
  • /lib  Library(库)的缩写,这个目录存放着系统最基本的动态链接共享库,几乎所有的应用程序都会用到这些共享库
  • /lost+found  这个目录一般是空的,当系统非法关闭后,会暂时保存一些文件
  • /media  Linux系统会自动识别一些设备(u盘,光驱),识别到后会将这些设备自动挂载此目录下
  • /mnt  系统提供该目录是为了让用户临时挂载别的文件系统,例如光驱或者u盘
  • /opt  存放其他需要额外安装的软件
  • /proc  Process(进程)的缩写,/proc是一种伪文件系统(即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟目录,可以通过直接访问这个目录来获取系统信息。这个目录的内容不在硬盘上,而是在内存里面。可以通过直接修改里面的某些文件,来实现对系统的设置,例如,可以向特定的文件写入内容,来实现屏蔽主机的ping命令:
    echo 1 /proc/sys/net/ipv4/icmp_echo_ignore_all,向这个文件写入1,就可实现屏蔽ping命令,使得其他主机无法ping到当前主机。
  • /root  为系统管理员的用户目录
  • /selinux  这个目录是 Redhat/CentOS 所特有的目录,Selinux 是一个安全机制,类似于 windows 的防火墙,这个目录存放selinux相关的文件。
  • /sys 这是Linux2.6内核的一个重大变化,该目录下安装了2.6内核中新出现的一个文件系统sysfs,sysfs文件系统集成了以下三种文件系统的信息:
    1. 针对进程信息的proc文件系统
    2. 针对设备的devfs文件系统
    3. 针对伪终端的devpts文件系统
  • /tmp  Temporary的所缩写,用来存放一些临时文件
  • /usr  Unix Shared Resources, 共享资源目录,用户的很多应用程序和文件都存放在这个目录下,相当于Windows的Program Files目录
  • /usr/bin  系统用户使用的应用程序
  • /usr/src  内核源代码默认的放置目录
  • /var  Variable缩写,这个目录存放着不断扩充的东西,通常会将经常被修改的目录或者文件存在这里,例如日至文件
  • /run  是一个临时文件系统,存储系统启动以来的信息,当系统重启的时候,这个目录下的文件应该被删掉或清除。

软链接与硬链接

  Linux文件系统中,数据分为元数据和用户数据,用户数据,即文件数据块(data block)是记录文件真实内容的地方。元数据是文件的附加属性,记录了如文件大小,创建时间,属主,inode(索引节点,为一个结构体)等信息。在Linux文件系统中,文件名并不是文件的唯一标识,元数据中的inode号才是文件的唯一标识。为解决文件的共享使用问题,Linux引入了应链接和软链接的概念,通过链接,隐藏了源文件的路径,提升了权限安全以及节省了内存。
  文件名只是为了方便区分和记忆,在Linux文件系统中,系统和程序是通过inode号来寻找正确的文件数据块,通过文件名获取文件内容的过程如下:

   filename-->inode-->data block

  在Linux中,可通过ls -i filename来查看文件的inode号,可以通过stat filename查看文件的inode信息

硬链接

  若一个inode号对应多个文件名,则城这些文件为硬链接,硬链接是指一个文件使用了多个别名,但是这些文件都具有相同的inode号。

特点:

  • 所有文件具有相同的inode号以及data block
  • 只能对已经存在的文件创建硬链接
  • 不能对目录创建硬链接
  • 不能交叉文件系统创建硬链接(因为inode号只在各文件系统下是唯一的,当Linux系统下挂载了多个文件系统后,可能出现inode号重复)
  • 删除一个硬链接并不影响其他的硬链接

  可以使用命令df -i --print-type来查看当前系统中挂载的文件系统类型,各文件系统使用情况以及文件系统挂载点等信息。

软链接

若文件的用户数据快中存放的是另一个文件的路径指向,则该文件就称为软链接,因此软链接本质上就是一个文件,只是文件的内容比较特殊,软链接有自己的inode号以及用户数据,因此软链接的创建和锁定和使用限制较少。

特点:

  • 软链接有自己的文件权限及属性
  • 可对不存在的文件或者目录创建软链接
  • 软链接可交叉文件系统进行创建
  • 删除软链接并不影响被指向的文件。若被指向的文件被删除,则相关的软链接称为死链接(dangling link),若被指向的文件被重建,则死链接可恢复为正常的链接
链接的创建
ln -s filename softlink      # 建立软链接
ln filename hadrlink         # 建立硬链接

cp -s filename softlink      # 建立软链接
cp -l filename hardlink      # 建立硬链接

文件存储-关于inode补充
  文件存储在硬盘上,硬盘的最小存储单位叫做扇区(sector),每个扇区存储512个字节,操作系统在读取硬盘的时候,不会一个扇区一个扇区的读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个块(Block),这种由多个扇区组成的块,是文件存取的最小单位,块的大小,最常见的是4kB,即8个连续的扇区组成一个快。文件数据都存储在块中,那么,还必须找到一个地方存储文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"。
  inode包含文件的元信息,具体来说有如下内容:

  1. 文件的字节数
  2. 文件拥有者的user id
  3. 文件的group id
  4. 文件的 r w x 权限
  5. 文件的时间戳,ctime表示inode上一次变动的时间,mtime表示文件内容上一次的变动时间,atime表示文件上一次打开的时间
  6. 文件数据Block的位置

  inode也会占用硬盘的空间,因此在硬盘格式化的时候,操作系统会自动将硬盘分为两个区域,一个是数据区,用于存放所有的文件数据;另一个是inode区(inode table),用于存放inode所包含的信息。每个inode的大小为128或者256个字节,inode节点的总数,在格式化的时候就已经给定,一般是1kB或者2kB就设置一个inode。假定在一块1G的硬盘中,每个inode节点的大小为128字节,每1KB设置一个inode,那么inode table的大小就会达到128M,占据整块硬盘容量的12.8%,可以使用df -i查看每个硬盘下的inode总数以及使用情况(可以看到每个硬盘下的inode总数,以使用的inode数量,未使用的inode数量等信息)

每个文家都必须有一个inode,因此可能会发生inode已经用光,但是硬盘还未满的情况,此时也是无法进行文件创建的

目录文件:

在Linux系统中,目录也是一种文件,打开目录,实际上就是打开目录文件,目录文件的结构较为简单,其内容是由一些列目录项构成的目录列表,每个目录项由两部分构成,该目录下文件的文件名,以及文件名所对应的inode号。由ls -i dir可查看特定目录下的所有目录项。

目录文件的链接数:

创建文件的时候,默认生成两个目录项...,.相当于当前目录文件的硬链接,而..相当于当前目录父目录的硬链接,因此,任何一个目录的硬链接总数,等于2加上它的子目录总数,这里的2是父目录对其的“硬链接”和当前目录下.对其的硬链接

Linux文件类型

Linux常见的文件类型有七种:

表示符号 文件类型 补充
- 常规文件 即file
d 目录文件 目录
b 块设备文件 Block Device 文件,如硬盘,支持以Block为单位进行随机访问
c 字符设备文件 Character Device 文件,如键盘支持以字符为单位进行线性访问
l 符号链接文件 Symbol Link 软链接文件
p 管道文件 pipe文件
s 套接字文件 socket文件

对于普通文件,ls -l会显示文件的大小,但是在设备类文件中,会显示两个用逗号隔开的数字,这两个数字不表示文件的大小。第一个数字表示主设备号,第二个数字表示次设备号,主设备号用于区分设备类型,用于决定加载设备的驱动程序。次设备号用于区分同一类型的不同设备,如硬盘1,硬盘2

文件基本属性

Linux 环境变量配置方法记录

Linux读取配置的环境变量的方法:

export    # 显示当前系统定义的所有环境变量

echo $PATH     # 输出当前的PATH环境变量值

Linux下环境变量可分为用户自定义的环境变量以及系统级别的环境变量:

  • 用户自定义环境变量: 所在文件 ~/.bashrc 或者~/.profile,部分系统~/.bash_profile
  • 系统级别的环境变量: 所在文件/etc/bashrc 或者 /etc/profile 或者 /etc/bash_profile,部分系统为/etc/environment

环境变量配置方法:

  1. 直接使用export命令在终端修改
   export /home/mysql/bin:$PATH
   export $PATH:/home/mysql/bin

   生效时间 :立即生效
   生效期限 : 仅在当前终端内有效,关闭当前终端后自动失效
   生效范围 : 仅限于当前用户有效

  1. 修改文件 ~/.bashrc 或者~/.profile,部分系统~/.bash_profile
   vim ~/.bashrc
   # 设置环境变量
   export /home/mysql/bin:$PATH

   生效时间 :在相同用户下打开新终端的时候生效,或者执行source ~/.bashrc时生效
   生效期限 : 永久生效
   生效范围 : 仅限于当前用户有效

  1. 修改文件/etc/bashrc 或者 /etc/profile 或者 /etc/bash_profile,部分系统为/etc/environment
   vim /etc/bashrc
    # 设置环境变量
   export /home/mysql/bin:$PATH

   生效时间 :打开新终端的时候生效,或者执行source /etc/bashrc时生效
   生效期限 : 永久生效
   生效范围 : 对所有用户有效

Tips
可在在自己的项目中自定义需要的环境变量文件,例如myProject.profile,在此文件中可以使用export定义一系列环境变量,然后在 ~/.profile文件中加入source myProject.profile,即可将项目中自定义的环境变量引入当前用户终端下使用。

还可以通过alias定义一些命令的别名,例如alias cdpro="cd /home/test/project"

xcs

标签:文件,链接,文件系统,基础知识,Linux,inode,目录
From: https://www.cnblogs.com/ncepubye/p/17036844.html

相关文章

  • Linux 防火墙状态
    1.查看防火墙状态:active(running)即是开启状态:systemctlstatusfirewalld2.查看已开发端口命令:firewall-cmd--list-all3.新增防火墙开放端口:firewall-cmd--zone=......
  • Linux文件的S和T权限
    S与T权限上图中,S_IRWXUS_IRWXGS_IRWXO代表常见的三段权限:拥有者,同组用户,其他用户的权限,而S_ISUIDS_ISGIDS_ISVTX代表的是S权限与T权限.S权限S权......
  • 【linux】记一次疑难杂症-HTTP请求RST
    问题背景生产环境与第三方联通时,时常有丢包的情况发生,具体现象为有时候应用服务器表现为未收到报文,抓包表现为RST生产环境通讯方式为https,应用前端有SSL及F5负载,业务入......
  • 【linux】nginx: [emerg] getpwnam("nginx") failed in /usr/local/nginx/conf/nginx.
    启动nginx报错:        nginx:[emerg]getpwnam("nginx")failedin/usr/local/nginx/conf/nginx.conf:2是因为配制文件中使用的启动账户在系统中并没有找到解......
  • 人大金仓Linux安装启动报错-bash: basic_path: 未找到命令
    linux系统安装人大金仓,莫名报错,报错为找到bash命令basic_path。感觉是脚本那个位置写错,(但是这个包是官网上面的包,照常安装应该不会出现问题)去/opt/Kingbase/ES/V8/data/......
  • Linux学习笔记:终端删除键失效解决办法
    一、删除键变空格近日在安装vi时遇到报错,遂卸载了部分包进行重新安装。安装后出现终端乱序,输错命令按Backspace删除键进行删除时不能删除反而添加空格,并且导致某些快......
  • 【linux】linux Centos8系统,防火墙配置常用命令,systemctl 和firewall
    本文环境:Linux系统CentOS8.264bitCentOS7版本及以上版本较centos6有较大改动,例如:采用systemctl命令来开启service,它是服务管理中主要的工具,融合了之前service和chkconf......
  • linux指令nmcli
    参见: https://blog.csdn.net/yulin003/article/details/125561203nmcli 是NetworkManager的命令行工具。nm代表 NetworkManager,cli代表Command-Line命令行。......
  • 【linux】RabbitMQ学习-vhost 详解
    vhost本质上是一个mini版的RabbitMQ服务器,拥有自己的队列、绑定、交换器和权限控制;vhost通过在各个实例间提供逻辑上分离,允许你为不同应用程序安全保密地运行数据;vhost是......
  • RabbitMQ Linux安装与启动服务
    本文转载自https://blog.csdn.net/chengmin123456789/article/details/1247102771、先下载erlang-23.2.3-1.el7.x86_64与rabbitmq-server-3.8.11-1.el7.noarch百度网......