Linux学习-1

本文详细介绍了Linux的不同发行版,如Redhat、Debian、Slackware等,以及它们之间的联系和区别。重点讲解了CentOS-8的安装过程,包括环境准备和安装步骤。此外,还阐述了Linux的哲学思想,常用命令格式,系统目录命名规则,文件元数据,以及软链接和硬链接的概念与应用。通过示例展示了如何查看和修改命令历史的时间戳,以及如何创建和管理软硬链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

Linux发行版,不同发行版的联系与区别

Linux发行版

不同发行版的联系与区别

CentOS-8安装详解

环境准备

开始安装

实现历史命令记录执行命令时间

Linux哲学思想

Linux常用命令使用格式

Linux发行版系统目录名称命名规则及用途

文件系统的目录结构

常见的文件系统目录及功能

文件元数据

元数据信息

如何查看元数据

修改元数据时间戳

软连接与硬链接

软链接特性

硬链接特性

硬链接与软连接的区别

示例


Linux发行版,不同发行版的联系与区别


Linux发行版

Linux主要且流行的发现版本有很多,其中主要罗列如下:

Redhat:RHEL,CentOS,Fedora

Debian:ubuntu,deepin,mint

Slackware:SUSE Linux Enterprise Server,OpenSuse桌面

AIpine:一个面向安卓的轻型Linux发行版,AIpine采用musllibc和busybox以减少系统的体积和运行时资源消耗,但功能上比busybox完善,大小只有5M左右

ArchLinux:轻量简洁,遵循K.I.S.S.原则(keep it simple and stupid),Manjaro

Gentoo:极致性能,不提供传统意义的安装程序,下载源代码再本机上编译安装软件

LFS:Linux Form scratch自制Linux,只是一个说明书

Android:kernel+busybos+java虚拟机

不同发行版的联系与区别

不同发行版之间的联系和区别

联系:所有发行版都是使用Linux内核;都需要遵循GNU的GPL协定;所有的发行版都有自己的版本号,版本格式约定基本一样(主版本号.次版本号.发行号.修正号)。

区别:发行版的本质区别,在于继承不同版本的内核,库、程序的组成。不同发行版采用了不同的包管理器。如CentOS,openSUSE,RHEL,Fedora,SLES使用RPM包管理系统,包文件以rpm为扩展名;Ubuntu,Debian使用基于DPKG包管理系统文件以deb为扩展名。

CentOS-8安装详解


本例以VMware Workstation虚拟化软件安装CentOS8.3为例说明安装系统主要步骤。

环境准备

安装了workstation15.5 pro的windows电脑,CentOS-8.3.2011-x86_64-dvd1.iso镜像文件,下载链接:http://mirrors.aliyun.com/centos/8/isos/x86_64/

开始安装

1.打开vmware,选择创建新的虚拟机

2.选择自定义高级,按提示下一步

3.选择稍后安装操作系统,设置所要安装系统版本。

4.选择版本,选择需要安装对应的版本即可,没有找到就选择一个Linux版本内核,此处选择影响不大,最后系统安装的版本和你提供的镜像有关。

5.命名虚拟机,并选择安装位置。

6.编辑虚拟机的配置信息,处理器等信息需要略低于于你的物理机。

7.自定义硬件,删除不必要的硬件,来减少资源消耗(土豪请无视)。这边我删除了声卡和打印机,因为基本用不到。

8.完成虚拟机创建,选择ISO镜像文件。

9.打开虚拟机,进行安装。

10.选择Install CentOS Linux8,开始安装。

11.CentOS安装界面基本和windows一样了,无脑下一步下一步即可。

12.选择安装磁盘,安装软件选择,带GUI的Server,启用网络服务,设置超级用户密码并开始安装。

13.等待安装完成,创建一般账号并登录。

 

 

实现历史命令记录执行命令时间


可以通过设置命令历史相关环境变量来实现时间化显示历史操作命令记录

示例:

[root@localhost ~]# vim /etc/profile

#在文件最后加上如下命令:
export HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S $ "

#重新登录后即可生效

[root@localhost ~]# history
    1  2021-04-25 22:31:46 $ vim /etc/profile
    2  2021-04-25 22:31:46 $ ll
    3  2021-04-25 22:31:46 $ ks
    4  2021-04-25 22:31:46 $ history
    5  2021-04-25 22:31:46 $ logout
    6  2021-04-25 22:31:49 $ history
[root@localhost ~]# 

Linux哲学思想


  • 一切皆文件,几乎把所有的资源系统抽象为文件形式:包括硬件设备,甚至通信接口等。这样的好处就是提供资源管理效率。
  • 由众多功能单一的程序组成:一个程序只做一个具体的用途。
  • 组合多个小程序完成复杂任务,程序分工明确运行后方便进程管理:程序代码也轻量化,高效,容易修复错误。小程序易于理解,维护,消耗系统资源较少,易于与其他工具结合实现更多的功能。
  • 避免复杂的人机交互界面,减少资源消耗:使用命令行接口执行效率更高,易于以编程的方式实现自动化任务。
  • 使用文本文件保存配置信息:文本文件易于阅读和编辑,系统故障时系统恢复也更容易。

Linux常用命令使用格式


Linux常用命令格式为:命令 [选项] [参数]。

命令格式中的 [] 代表可选项,也就是有些命令可以不写选项或参数,也能执行。那么,我们就用 Linux 中最常见的 ls 命令来解释一下命令的格式。如果按照命令的分类,那么 ls 命令应该属于目录操作命令。

COMMAND OPTIONS ARGUMENTS

  • 选项的作用,调整命令功能,可以根据不同的选项得到不同的功能。

示例:

[root@localhost ~]# ls
anaconda-ks.cfg  Documents  initial-setup-ks.cfg  Pictures  redis-6.0.3         Templates
Desktop          Downloads  Music                 Public    redis-6.0.3.tar.gz  Videos
[root@localhost ~]#

[root@localhost ~]# ls -l
total 2172
-rw-------. 1 root root    1526 Mar 16  2020 anaconda-ks.cfg
drwxr-xr-x. 2 root root      41 Apr 27  2020 Desktop
drwxr-xr-x. 2 root root       6 Mar 16  2020 Documents
drwxr-xr-x. 2 root root       6 Mar 16  2020 Downloads
-rw-r--r--. 1 root root    1653 Mar 16  2020 initial-setup-ks.cfg
drwxr-xr-x. 2 root root       6 Mar 16  2020 Music
drwxr-xr-x. 2 root root       6 Mar 16  2020 Pictures
drwxr-xr-x. 2 root root       6 Mar 16  2020 Public
drwxrwxr-x. 7 root root    4096 May 17  2020 redis-6.0.3
-rw-r--r--. 1 root root 2210882 Jun 27  2020 redis-6.0.3.tar.gz
drwxr-xr-x. 2 root root       6 Mar 16  2020 Templates
drwxr-xr-x. 2 root root       6 Mar 16  2020 Videos

[root@localhost ~]# ls -hl
total 2.2M
-rw-------. 1 root root 1.5K Mar 16  2020 anaconda-ks.cfg
drwxr-xr-x. 2 root root   41 Apr 27  2020 Desktop
drwxr-xr-x. 2 root root    6 Mar 16  2020 Documents
drwxr-xr-x. 2 root root    6 Mar 16  2020 Downloads
-rw-r--r--. 1 root root 1.7K Mar 16  2020 initial-setup-ks.cfg
drwxr-xr-x. 2 root root    6 Mar 16  2020 Music
drwxr-xr-x. 2 root root    6 Mar 16  2020 Pictures
drwxr-xr-x. 2 root root    6 Mar 16  2020 Public
drwxrwxr-x. 7 root root 4.0K May 17  2020 redis-6.0.3
-rw-r--r--. 1 root root 2.2M Jun 27  2020 redis-6.0.3.tar.gz
drwxr-xr-x. 2 root root    6 Mar 16  2020 Templates
drwxr-xr-x. 2 root root    6 Mar 16  2020 Videos
[root@localhost ~]#

Linux发行版系统目录名称命名规则及用途


文件系统的目录结构

在Linux系统中,文件以及目录被组织成一个单根倒置的树结构。

所有文件皆以根开始 ,以“/”表示,其他目录皆在根目录之下。

文件名称大小写敏感,例如:MAIL,Mail,mail...

以 "." 开头的文件为隐藏文件,路径以"/"分隔。

文件名

Linux文件系统目录结构

常见的文件系统目录及功能

/ 根目录

/boot 引导文件存放目录

/bin 所有用户使用的基本命令,二进程程序

/sbin

/lib 32位的库

/lib64 64位的库

/etc 配置文件目录

/home 普通用户家目录

/root 管理员的家目录

/media 便携式移动设备挂载点

/mnt 临时文件及特殊文件存储问题

/opt 第三方应用程序安装位置

/srv 系统运行的服务用到的数据

/tmp 临时文件存储位置

/usr

/var

/proc 用于输出内核与进程信息相关的虚拟文件系统

/sys 用于输出当前系统上硬件设备相关信息虚拟文件系统

/selinux selinux相关的安全策略等信息的存储位置

文件元数据


文件系统中的数据分为数据和元数据。

数据:数据是指普通文件中的实际信息内容。

元数据:指用来描述一个文件的特征的系统数据,诸如访问权限、文件拥有者以及文件数据块的分布信息(inode…)等等

元数据信息

文件元数据信息如下:

File   文件名
Size   文件大小(字节)
Blocks   文件使用的数据块总数
IO Block   数据块的大小
regular file:文件类型(常规文件) 
Device 设备编号 
Inode 文件所在的Inode
Links 硬链接次数
Access 权限
Uid 属主id/用户
Gid 属组id/组名
Access Time:简写为atime,表示文件的访问时间。当文件内容被访问时,更新这个时间 
Modify Time:简写为mtime,表示文件内容的修改时间,当文件的数据内容被修改时,更新这个时间。 
Change Time:简写为ctime,表示文件的状态时间,当文件的状态被修改时,更新这个时间,例如文件的链接数,大小,权限,Blocks数。

如何查看元数据

可以使用命令:stat

示例如下:

[root@localhost ~]# stat anaconda-ks.cfg 
  File: anaconda-ks.cfg
  Size: 1268      	Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d	Inode: 202176641   Links: 1
Access: (0600/-rw-------)  Uid: (    0/    root)   Gid: (    0/    root)
Context: system_u:object_r:admin_home_t:s0
Access: 2021-04-13 23:35:27.952296406 +0800
Modify: 2021-04-13 22:39:24.429113079 +0800
Change: 2021-04-13 22:39:24.429113079 +0800
 Birth: -
[root@localhost ~]#

修改元数据时间戳

可以使用命令:touch

选项:
-a 仅改变atime和ctime

-m 仅改变mtime和ctime

-t [[CC]YY]MMDDhhmm[.ss]指定atime和mtime的时间戳

示例:

[root@localhost tmp]# touch aaron.txt
[root@localhost tmp]# ll
total 16
-rw-r--r--. 1 root root    0 Apr 25 22:05 aaron.txt

[root@localhost tmp]# ll anaconda.log 
-rw-r--r--. 1 root root 1593 Apr 13 23:36 anaconda.log
[root@localhost tmp]# touch /tmp/anaconda.log
[root@localhost tmp]# ll /tmp/anaconda.log
-rw-r--r--. 1 root root 1593 Apr 25 22:07 /tmp/anaconda.log
[root@localhost tmp]# 

[root@localhost tmp]# touch $(date -d "2 year" +%F_%T).log
[root@localhost tmp]# 
[root@localhost tmp]# ll
total 16
-rw-r--r--. 1 root root    0 Apr 25 22:10 2023-04-25_22:10:51.log

软连接与硬链接


软链接:soft链接或symbolic链接,保存了其代表文件的绝对路径,是另外一种文件,在硬盘上有独立的区块,访问时替换自身路径,软链接文件和原文件本质上不是同一个文件。

硬链接:hard链接,硬链接inode指向同一个文件在硬盘中的区块,本质是同一个文件

软链接特性

  • 一个符号链接的内容是它引用文件的名称
  • 可以对目录创建软连接
  • 可以对跨分区的文件实现
  • 指向的是另一个文件的路径,其大小为指向的路径字符串的长度;不增加或减少目标文件inode的引用计数
  • 软链接如果使用相对路径,是相对于原文件的路径,而非相对于当前目录

硬链接特性

  • 创建硬链接会在对应的目录中增加额外的记录项以引用文件
  • 对应于同一文件系统上一个物理文件
  • 每个目录引用相同的inode号
  • 创建时链接数增加
  • 删除文件时,rm目录递减计数的链接,文件要存在,至少有一个链接数,当链接数为0时,该文件被删除
  • 不能跨驱动器或分区创建
  • 不支持对目录创建硬链接

硬链接与软连接的区别

项目硬链接软连接

本质

是同一个文件不是同一个文件
跨设备不支持支持
inode相同不同
链接数创建新的硬链接,链接数会增加,删除硬链接,链接数减少创建或删除,链接数不会变化
文件夹不支持支持
相对路径原始文件相对路径是相对于当前工作目录原始文件的相对路径是相对于链接文件的相对路径
删除源文件只是链接数减一,链接文件的访问不受影响链接文件将无法访问
文件类型和源文件相同链接文件,和源文件无关
文件大小和源文件相同是源文件的路径长度



示例

同文件示例

[root@localhost data]# stat l2.txt
  File: l2.txt
  Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d	Inode: 26690304    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:default_t:s0
Access: 2021-04-25 23:19:02.030220011 +0800
Modify: 2021-04-25 23:19:02.030220011 +0800
Change: 2021-04-25 23:19:02.030220011 +0800
 Birth: -
[root@localhost data]# stat dir2/l2.txt
  File: dir2/l2.txt -> l2.txt
  Size: 6         	Blocks: 0          IO Block: 4096   symbolic link
Device: fd00h/64768d	Inode: 9919914     Links: 1
Access: (0777/lrwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:default_t:s0
Access: 2021-04-25 23:30:40.671811903 +0800
Modify: 2021-04-25 23:30:40.671811903 +0800
Change: 2021-04-25 23:30:40.671811903 +0800
 Birth: -
#软连接inode不同,证明不是一个文件

[root@localhost data]# stat l1.txt
  File: l1.txt
  Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d	Inode: 26072382    Links: 2
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:default_t:s0
Access: 2021-04-25 23:18:58.546161561 +0800
Modify: 2021-04-25 23:18:58.546161561 +0800
Change: 2021-04-25 23:21:29.748698204 +0800
 Birth: -
[root@localhost data]# stat dir1/l1.txt
  File: dir1/l1.txt
  Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d	Inode: 26072382    Links: 2
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:default_t:s0
Access: 2021-04-25 23:18:58.546161561 +0800
Modify: 2021-04-25 23:18:58.546161561 +0800
Change: 2021-04-25 23:21:29.748698204 +0800
 Birth: -
#硬链接inode相同,证明是同一个文件

跨分区或设备示例:

[root@localhost data]# ln l1.txt /boot/l1.txt
ln: failed to create hard link '/boot/l1.txt' => 'l1.txt': Invalid cross-device link
[root@localhost data]# ln -s l2.txt /boot/l2.txt
[root@localhost data]#
[root@localhost data]# stat l2.txt /boot/l2.txt
  File: l2.txt
  Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d	Inode: 26690304    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:default_t:s0
Access: 2021-04-25 23:19:02.030220011 +0800
Modify: 2021-04-25 23:19:02.030220011 +0800
Change: 2021-04-25 23:19:02.030220011 +0800
 Birth: -
  File: /boot/l2.txt -> l2.txt
  Size: 6         	Blocks: 0          IO Block: 4096   symbolic link
Device: 801h/2049d	Inode: 32611       Links: 1
Access: (0777/lrwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:boot_t:s0
Access: 2021-04-25 23:40:25.120339255 +0800
Modify: 2021-04-25 23:40:05.942026623 +0800
Change: 2021-04-25 23:40:05.942026623 +0800
 Birth: -
[root@localhost data]#
#硬链接跨分区创建提示失败,软链接跨分区创建成功,查看文件正常

链接数示例:

[root@localhost data]# ln l1.txt dir1/l1.txt
[root@localhost data]# ln -s l2.txt dir2/l2.txt
[root@localhost data]# ll
total 0
drwxr-xr-x. 2 root root 20 Apr 25 23:21 dir1
drwxr-xr-x. 2 root root 20 Apr 25 23:30 dir2
-rw-r--r--. 2 root root  0 Apr 25 23:18 l1.txt
-rw-r--r--. 1 root root  0 Apr 25 23:19 l2.txt
#硬链接链接数增加,软链接连接数不变

文件类型、大小示例:


[root@localhost data]# stat l1.txt dir1/l1.txt
  File: l1.txt
  Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d	Inode: 26072382    Links: 2
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:default_t:s0
Access: 2021-04-25 23:18:58.546161561 +0800
Modify: 2021-04-25 23:18:58.546161561 +0800
Change: 2021-04-25 23:21:29.748698204 +0800
 Birth: -
  File: dir1/l1.txt
  Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d	Inode: 26072382    Links: 2
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:default_t:s0
Access: 2021-04-25 23:18:58.546161561 +0800
Modify: 2021-04-25 23:18:58.546161561 +0800
Change: 2021-04-25 23:21:29.748698204 +0800
 Birth: -
[root@localhost data]# stat l2.txt dir2/l2.txt
  File: l2.txt
  Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d	Inode: 26690304    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:default_t:s0
Access: 2021-04-25 23:19:02.030220011 +0800
Modify: 2021-04-25 23:19:02.030220011 +0800
Change: 2021-04-25 23:19:02.030220011 +0800
 Birth: -
  File: dir2/l2.txt -> l2.txt
  Size: 6         	Blocks: 0          IO Block: 4096   symbolic link
Device: fd00h/64768d	Inode: 9919914     Links: 1
Access: (0777/lrwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:default_t:s0
Access: 2021-04-25 23:33:57.829025846 +0800
Modify: 2021-04-25 23:30:40.671811903 +0800
Change: 2021-04-25 23:30:40.671811903 +0800
 Birth: -

#硬链接源文件和链接文件类型一致,软链接源文件和链接文件类型不同
#l1.txt和dir1/l1.txt Size一样大
#l2.txt和dir2/l2.txt Size不一样大,且软链接文件大小等于源文件路径大小

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值