一、Linux的主要发行版,不同发行版之间的联系与区别。


1、什么是Linux

Linux操作系统是基于UNIX设计的一个性能稳定的多用户操作系统,Linux能运行各种工具软件、应用程序及网络协议,它支持安装在32位和64位CPU硬件上,也是目前企业中的主流服务器系统。


2、Linux的发展史

Linux发展历史年表

1991

8月25号 : 21岁的芬兰学生Linus Benedict Torvalds 在comp.os.minix 新闻组上宣布了它正在编写一个免费的操作系统。


9月1号 : Linux 0.01在网上发布。


1992

1月5号 : Linux v0.12 release 版本的内核重新以GUN GPL的协议发布。原来的许可证是禁止任何商业用途的。通过这次协议变更,发布和出售修改或未修改版的Linux成为了可能,只要你将这些复制版本以相同的GPL许可证发布,并且有相对应完整的源代码。在后来的一次采访中,Linus对这次许可证的更改说了这样一句话(让Linux遵守GPL绝对是我干过的最正确的事)

至此之后Linux迅猛发展至今。


3、 Linux操作系统发行版

Linux操作系统主流发行版本包括:Red Hat Linux、CentOS 、Debian、Ubuntu、SUSE Linux、Fedora Linux等,具体发行版本区别如下:

Linux主流发行版 (列表)

Linux主要发行版简介和安装_IT业界

参考链接:​https://blog.csdn.net/ithomer/article/details/9729933 ​


3.1Red Hat Linux

商业版本

Red Hat Linux 1994年创立,是最早的Linux发行版本之一,同时也是最著名的Linux版本,Red Hat Linux已经创造了自己的品牌,也就是"红帽操作系统"。2018年10月份IBM正式宣布以340亿美元收购红帽。


3.2 CentOS

社区企业版操作系统(Community Enterprise Operating System,CentOS)是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定

性的服务器以CentOS替代商业版的Red Hat Enterprise Linux使用。CentOS于Red Hat Linux不同之处在于CentOS并不包含封闭的源代码软件,可以开源免费使用,得到运维人员、企业、程序员的青睐,CentOS发

行版操作系统是目前企业使用最多的系统之一,2014年7月7日,正式发布centos 7,2019年9月25号,正式发了Centos8的新版本。2020年12月8日IBM宣布将停止发行Centos新版本并陆续停止支持。

随后以CentOS创始人之一Gregory Kurtzer为首,8小时内250人啸聚网络,计划以创建Rocky Linux(Rocky为已经逝世的另外一个CentOS创始人)取代CentOS。Rocky Linux与RHEL兼容目前已经创建了Github Rocky Linux项目组织(github.com/rocky-linux/rocky)和官网(rockylinux.org)。


3.3 Debian


Debian 是自由软件。

Debian 是由自由和开放源代码的软件组成的,并将始终保持100%自由。每个人都能自由使用、修改,以及分发。这是我们对我们的用户的主要承诺。它也是免费的。


Debian 是一个稳定且安全的基于 Linux 的操作系统。


Debian 是许多其他发行版的种子和基础。

许多非常受欢迎的 Linux 发行版,例如 Ubuntu、Knoppix、PureOS、SteamOS 以及 Tails,都选择了 Debian 作为它们的软件基础。Debian 提供了所有工具,因此每个人都可以用能满足自己需求的软件包来扩展 Debian 档案库中的软件包。


Debian 项目是一个社区。

Debian 不只是一个 Linux 操作系统。该软件由来自世界各地的数百名志愿者共同制作。即使您不是一个程序员或系统管理员,也可以成为 Debian 社区的一员。Debian 是由社区和共识驱动的,具有一个民主的治理架构。由于所有 Debian 开发人员都享有平等的权利,所以它不能被单个公司所控制。我们的开发人员遍布在60多个国家/地区,并且 Debian Installer 提供了超过80种语言的翻译支持。


3.4 Ubuntu

Ubuntu是一个以桌面应用为主的Linux操作系统,其名称来自非洲南部祖鲁语或豪萨语的"ubuntu"一词(译为吾帮托或乌班图),意思是"人性"、我的存在是因为大家的存在",是非洲传统的一种价值观。Ubuntu基于Debian发行版和GNOME桌面环境, Ubuntu发行版操作系统的目标在于为一般用户提供一个最新的、同时稳定的以开放自由软件构建而成的操作系统,目前Ubuntu具有庞大的社区力量,用户可以方便地从社区获得帮助。


3.5 SUSE Linux

SUSE(发音 /ˈsuːsə/),SUSE Linux 出自德国,SuSE Linux AG公司发行维护的Linux发行版,是属于此公司的注册商标2003年11月4日,Novell表示将会对SUSE提出收购。收购的工作于2004年1月完成。


3.6 Fedora Linux

Fedora Linux是由Fedora项目社区开发、红帽公司赞助,目标是创建一套新颖、多功能并且自由(开放源代码)的操作系统。Fedora是商业化的Red Hat Enterprise Linux发行版的上游源码。

Fedora对于用户而言,是一套功能完备、更新快速的免费操作系统;而对赞助者Red Hat公司而言,它是许多新技术的测试平台,被认为可用的技术最终会加入到Red Hat Enterprise Linux中。


4、 Linux内核命名规则

Linux内核是Linux操作系统的核心,一个完整的Linux发行版包括进程管理、内存管理、文件系统、系统管理、网络操作等部分。Linux内核版本命名在不同的时期有其不同的命名规范,其中在2.X版本中,X如果为奇数表示开发版、X如果为偶数表示稳定版,从2.6.X以及3.X,内核版本命名就没有严格的约定规范。也可以去官网下载内核:www.kernel.org.


其中Mainline表示主线开发版本Stable表示稳定版本,稳定版本主要由mainline测试通过而布。

Longterm表示长期支持版,会持续更新及Bug修复,如果长期版本被标记为EOL(End of Life),则表示不再提供更新


从Linux内核1994年发布1.0发布到目前主流3.X版本最新稳定版本是5.X


查看Linux内核

[root@xxx ~]# uname -a

Linux xxx 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux


二、Linux操作系统安装

  • 安装Centos7.9操作系统,创建一个自己名字的用户名,并正常登录。
  • 安装ubuntu操作系统,创建一个自己名字的用户名,并正常登录。
  • 获取系统镜像
  • 获取Centos系统
    在各大镜像站下载:
    ​​​http://mirrors.163.com​​​
    ​​​https://mirrors.tuna.tsinghua.edu.cn/​​​
    直接选择centos/7/isos/x86_64/,会指向最新的版本,如果要想下载以前的版本,可以到其他目录下下载readme,根据其中的地址,进行下载。
    Centos其他版本可以选择这里
    ​​​http://vault.centos.org​​​
  • 获取Centos系统
  • 在虚拟机上安装Centos 7.9系统
  • 创建VM
    Linux主要发行版简介和安装_IT业界_02

    Linux主要发行版简介和安装_IT业界_03

    Linux主要发行版简介和安装_其它_04

    Linux主要发行版简介和安装_IT业界_05
  • 选择centos镜像文件
    编辑虚拟机设置---CD/DVD驱动器---选择数据存储ISO文件---选择centos镜像
    Linux主要发行版简介和安装_其它_06
  • 启动虚拟机---打开浏览器控制台---开始安装系统
    光标移入黑色区域----点击鼠标----使用↑↓选择---Install Centos 7
    Linux主要发行版简介和安装_其它_07
    备注:可用Test this media检测安装介质有无损坏
  • 选择安装过程中的语言
    Linux主要发行版简介和安装_其它_08
  • 必须的选项:时区、安装源、软件选项、系统分区、网络
    Linux主要发行版简介和安装_其它_09
  • 选择时区
  • 选择系统语言
    Linux主要发行版简介和安装_其它_10
  • 安装源&软件包安装选项
    Linux主要发行版简介和安装_其它_11
  •  配置系统分区
    此次配置必仅配置必要的分区
    /boot分区 划分500M---1GB 存放Linux内核及系统启动过程所需文件,分区格式由xfs更改为ext4
    swap 分区 划分2048M 数据交换分区
    内存4GB以内----- swap内存容量*2
    内存4—16GB ----- swap内存容量*1
    64GB以上----------- swap内存容量512M
    128GB以上--------- swap内存容量可不分配
    / 分区 100GB 所有文件存放的根系统
    /data 50GB

    Linux主要发行版简介和安装_其它_12

    Linux主要发行版简介和安装_IT业界_13


    备注:选择Standard Partiton, 企业环境中还会用到LVM
    Linux主要发行版简介和安装_IT业界_14

    Linux主要发行版简介和安装_IT业界_15

    Linux主要发行版简介和安装_其它_16

    Linux主要发行版简介和安装_IT业界_17

    Linux主要发行版简介和安装_IT业界_18

    Linux主要发行版简介和安装_IT业界_19
    选择接受分区更改
  •  禁用KDUMP
    Linux主要发行版简介和安装_其它_20
  • 网络配置和主机名
    Linux主要发行版简介和安装_其它_21

    Linux主要发行版简介和安装_其它_22
    Linux主要发行版简介和安装_其它_23

    Linux主要发行版简介和安装_其它_24
  • 正式开始安装系统
  • 点击开始安装
    Linux主要发行版简介和安装_其它_25
  • 设置root密码
    Linux主要发行版简介和安装_其它_26

    设置root密码,并创建用户
    Linux主要发行版简介和安装_其它_27

    Linux主要发行版简介和安装_其它_28

    Linux主要发行版简介和安装_IT业界_29
  • 使用自建的用户名远程登录系统
    Linux主要发行版简介和安装_IT业界_30
  • 在虚拟机上安装Ubuntu 1804系统
  • 创建VM
    Linux主要发行版简介和安装_其它_31

    Linux主要发行版简介和安装_IT业界_32
  • 安装Ubuntu 1804系统
    Linux主要发行版简介和安装_IT业界_33
  • 选择语言
    Linux主要发行版简介和安装_其它_34
  • 键盘设置
    Linux主要发行版简介和安装_其它_35
  • 手动指定固定iP地址
    Linux主要发行版简介和安装_其它_36

    Linux主要发行版简介和安装_其它_37


    Linux主要发行版简介和安装_IT业界_38

    Linux主要发行版简介和安装_其它_39

    Linux主要发行版简介和安装_其它_40
  • 设置设置软件源的地址
    configure Ubuntuu archive mirror可修改为:http://mirrors.aliyun.com/ubuntu,然后点击Done
    Linux主要发行版简介和安装_IT业界_41
  • 分区
    /boot 1G
    Swap 2G
    /data 50G
    / 100G

    Linux主要发行版简介和安装_其它_42

    Linux主要发行版简介和安装_其它_43

    Linux主要发行版简介和安装_IT业界_44

    Linux主要发行版简介和安装_其它_45

    Linux主要发行版简介和安装_IT业界_46

    Linux主要发行版简介和安装_其它_47

    Linux主要发行版简介和安装_其它_48

    Linux主要发行版简介和安装_IT业界_49

    Linux主要发行版简介和安装_IT业界_50
  • 设置服务器名称和账号
  • Linux主要发行版简介和安装_IT业界_51
  • Featured Server Snaps(其他功能软件列表),一个也不选,直接移动到最后,选择Done
    Linux主要发行版简介和安装_其它_52
  • installing system(系统开始安装),选择Cancel update and reboot。

    Linux主要发行版简介和安装_其它_53
  • 移除安装镜像,启动Ubuntu系统
    Linux主要发行版简介和安装_其它_54
  • 漏截SSH Setup的设置,选择安装,然后点击Done(用 空格键 选择)
  • 启动后报错---待解决
    Linux主要发行版简介和安装_IT业界_55
  • 使用自建的用户名远程登录系统
    Linux主要发行版简介和安装_其它_56


    三、配置环境变量,实现执行history的时候可以看到执行命令的时间。

    1、 vi ~/.bash_profile

# .bash_profile


# Get the aliases and functions

if [ -f ~/.bashrc ]; then

. ~/.bashrc

fi


# User specific environment and startup programs


PATH=$PATH:$HOME/.local/bin:$HOME/bin


export PATH

#ignoredups 是默认值,可忽略重复的命令,连续且相同为"重复",ignorespace 忽略所有以空白开头的命令

#ignoreboth 相当于ignoredups, ignorespace的组合

export HISTCONTROL=ignoreboth

#显示命令时间和用户

export HISTTIMEFORMAT="%F %T `whoami` "

2、让环境变量生效

方式1:重新打开用户终端

方式2:执行命令source ~/.bash_profile

3、再次执行history

[monty@centos79 ~]$ history

1 2021-11-21 11:30:48 monty w

2 2021-11-21 11:30:48 monty clean

3 2021-11-21 11:30:50 monty w

4 2021-11-21 15:52:00 monty cat .bash_profile

5 2021-11-21 15:53:22 monty yum install vim -y

6 2021-11-21 15:54:17 monty vi ~/.bash_profile

7 2021-11-21 15:55:30 monty history

8 2021-11-21 15:58:23 monty source ~/.bash_profile

9 2021-11-21 15:58:29 monty history

参考链接: Linux环境变量配置全攻略 <​​https://www.cnblogs.com/youyoui/p/10680329.html​​>

三、linux的哲学思想

1、一切皆文件

所有的资源系统抽象为文件形式:包括硬件设备,甚至通信接口等。作用:提高资源管理效率。

2、由众多功能单一的程序组成;链接程序共同完成复杂的任务

一个程序只做一件事,并且做好;组合小程序完成复杂任务。

作用:

  • 程序分工明确,运行后方便进程管理。程序代码也轻量化,高效,容易修复错误。
  • 小程序易于理解,维护,消耗系统资源较少,易于与其他工具结合实现更多的功能

    3.尽量避免跟用户交互。
    避免交互使用命令行接口执行效率更高,易于以编程的方式实现自动化任务

    4、避免令人困惑的用户界面

    5、使用文本文件保存配置信息。
    文本文件易于阅读和编辑。


    五、Linux常用命令使用格式总结

    1、命令格式

COMMAND [OPTIONS...] [ARGUMENTS...]

COMMAND [COMMAND] [COMMAND] ....

选项:用于启用或关闭命令的某个或某些功能

短选项:UNIX 风格选项,-c 例如:-l, -h

长选项:GNU风格选项,--word 例如:--all, --human

BSD风格选项: 一个字母,例如:a,使用相对较少

参数:命令的作用对象,比如:文件名,用户名等

2、范例

echo

echo [-neE][字符串]

选项:

-E (默认)不支持 \ 解释功能

-n 不自动换行

-e 启用 \ 字符的解释功能


date

[monty@centos79 ~]$ date help

Usage: date [OPTION]... [+FORMAT]

or: date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]

Display the current time in the given FORMAT, or set the system date.


Mandatory arguments to long options are mandatory for short options too.

-d, --date=STRING display time described by STRING, not 'now'

-f, --file=DATEFILE like --date once for each line of DATEFILE

-I[TIMESPEC], --iso-8601[=TIMESPEC] output date/time in ISO 8601 format.

TIMESPEC='date' for date only (the default),

'hours', 'minutes', 'seconds', or 'ns' for date

and time to the indicated precision.

-r, --reference=FILE display the last modification time of FILE

-R, --rfc-2822 output date and time in RFC 2822 format.

Example: Mon, 07 Aug 2006 12:34:56 -0600

--rfc-3339=TIMESPEC output date and time in RFC 3339 format.

TIMESPEC='date', 'seconds', or 'ns' for

date and time to the indicated precision.

Date and time components are separated by

a single space: 2006-08-07 12:34:56-06:00

-s, --set=STRING set time described by STRING

-u, --utc, --universal print or set Coordinated Universal Time (UTC)

--help display this help and exit

--version output version information and exit


Export

[monty@centos79 ~]$ help export

export: export [-fn] [name[=value] ...] or export -p

Set export attribute for shell variables.


Marks each NAME for automatic export to the environment of subsequently

executed commands. If VALUE is supplied, assign VALUE before exporting.


Options:

-f refer to shell functions

-n remove the export property from each NAME

-p display a list of all exported variables and functions


An argument of `--' disables further option processing.


Exit Status:

Returns success unless an invalid option is given or NAME is invalid.


Ifconfig

[root@centos79 ~]# ifconfig --help

Usage:

ifconfig [-a] [-v] [-s] <interface> [[<AF>] <address>]

[add <address>[/<prefixlen>]]

[del <address>[/<prefixlen>]]

[[-]broadcast [<address>]] [[-]pointopoint [<address>]]

[netmask <address>] [dstaddr <address>] [tunnel <address>]

[outfill <NN>] [keepalive <NN>]

[hw <HW> <address>] [mtu <NN>]

[[-]trailers] [[-]arp] [[-]allmulti]

[multicast] [[-]promisc]

[mem_start <NN>] [io_addr <NN>] [irq <NN>] [media <type>]

[txqueuelen <NN>]

[[-]dynamic]

[up|down] ...


Screen

[root@centos79 ~]# screen --help

Use: screen [-opts] [cmd [args]]

or: screen -r [host.tty]


Options:

-4 Resolve hostnames only to IPv4 addresses.

-6 Resolve hostnames only to IPv6 addresses.

-a Force all capabilities into each window's termcap.

-A -[r|R] Adapt all windows to the new display width & height.

-c file Read configuration file instead of '.screenrc'.

-d (-r) Detach the elsewhere running screen (and reattach here).

-dmS name Start as daemon: Screen session in detached mode.

-D (-r) Detach and logout remote (and reattach here).

-D -RR Do whatever is needed to get a screen session.

-e xy Change command characters.

-f Flow control on, -fn = off, -fa = auto.

-h lines Set the size of the scrollback history buffer.

-i Interrupt output sooner when flow control is on.

-l Login mode on (update /var/run/utmp), -ln = off.

-ls [match] or

-list Do nothing, just list our SockDir [on possible matches].

-L Turn on output logging.

-m ignore $STY variable, do create a new screen session.

-O Choose optimal output rather than exact vt100 emulation.

-p window Preselect the named window if it exists.

-q Quiet startup. Exits with non-zero return code if unsuccessful.

-Q Commands will send the response to the stdout of the querying process.

-r [session] Reattach to a detached screen process.

-R Reattach if possible, otherwise start a new session.

-s shell Shell to execute rather than $SHELL.

-S sockname Name this session <pid>.sockname instead of <pid>.<tty>.<host>.

-t title Set title. (window's name).

-T term Use term as $TERM for windows, rather than "screen".

-U Tell screen to use UTF-8 encoding.

-v Print "Screen version 4.01.00devel (GNU) 2-May-06".

-wipe [match] Do nothing, just clean up SockDir [on possible matches].

-x Attach to a not detached screen. (Multi display mode).

-X Execute <cmd> as a screen command in the specified session.


六、描述Linux发行版的系统目录名称命名规则以及用途。


1、系统目录名称命名规则

  • 文件和目录被组织成一个单根倒置树结构
  • 文件系统从根目录下开始,用"/"表示
  • 根文件系统(rootfs):root filesystem
  • 标准Linux文件系统(如:ext4),文件名称大小写敏感,例如:MAIL, Mail, mail, mAiL
  • 以 . 开头的文件为隐藏文件
  • 路径分隔的 /
  • 文件名最长255个字节
  • 包括路径在内文件名称最长4095个字节
  • 目录颜色
    蓝色-->目录
    绿色-->可执行文件
    红色-->压缩文件
    浅蓝色-->链接文件
    灰色-->其他文件
  • 除了斜杠和NUL,所有字符都有效.但使用特殊字符的目录名和文件不推荐使用,有些字符需要用引号来引用
  • 每个文件都有两类相关数据元数据:metadata,即属性, 数据:data,即文件内容
  • 使用Linux的文件系统分层结构:FHS Filesystem Hierarchy Standard ,参考文档:http://www.pathname.com/fhs/ ​​


    2、系统目录用途

    /boot:引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader, grub)都存放于此目录
    /bin:所有用户使用的基本命令;不能关联至独立分区,OS启动即会用到的程序
    /sbin:管理类的基本命令;不能关联至独立分区,OS启动即会用到的程序
    /lib:启动时程序依赖的基本共享库文件以及内核模块文件(/lib/modules)
    /lib64:专用于x86_64系统上的辅助共享库文件存放位置
    /etc:配置文件目录
    /home/USERNAME:普通用户家目录
    /root:管理员的家目录
    /media:便携式移动设备挂载点
    /mnt:临时文件系统挂载点
    /dev:设备文件及特殊文件存储位置
    b: block device,随机访问
    c: character device,线性访问
    /opt:第三方应用程序的安装位置
    /srv:系统上运行的服务用到的数据
    /tmp:临时文件存储位置
    /usr: universal shared, read-only data 系统默认的软件都会放置到/usr
    bin: 保证系统拥有完整功能而提供的应用程序
    sbin:
    lib:32位使用
    lib64:只存在64位系统
    include: C程序的头文件(header files)
    share:结构化独立的数据,例如doc, man等
    local:第三方应用程序的安装位置
    bin, sbin, lib, lib64, etc, share
    /var: variable data files 常用于存放可变化的数据,比如一些日志信息等
    cache: 应用程序缓存数据目录
    lib: 应用程序状态信息数据
    local:专用于为/usr/local下的应用程序存储可变数据
    lock: 锁文件
    log: 日志目录及文件
    opt: 专用于为/opt下的应用程序存储可变数据
    run: 运行中的进程相关数据,通常用于存储进程pid文件
    spool: 应用程序数据池
    tmp: 保存系统两次重启之间产生的临时数据
    /proc: 用于输出内核与进程信息相关的虚拟文件系统
    /sys:用于输出当前系统上硬件设备相关信息虚拟文件系统
    /selinux: security enhanced Linux,selinux相关的安全策略等信息的存储位置