一、Linux的主要发行版,不同发行版之间的联系与区别。
1、什么是Linux
Linux操作系统是基于UNIX设计的一个性能稳定的多用户操作系统,Linux能运行各种工具软件、应用程序及网络协议,它支持安装在32位和64位CPU硬件上,也是目前企业中的主流服务器系统。
2、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主流发行版 (列表)
参考链接: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
- 选择centos镜像文件
编辑虚拟机设置---CD/DVD驱动器---选择数据存储ISO文件---选择centos镜像 - 启动虚拟机---打开浏览器控制台---开始安装系统
光标移入黑色区域----点击鼠标----使用↑↓选择---Install Centos 7
备注:可用Test this media检测安装介质有无损坏 - 选择安装过程中的语言
- 必须的选项:时区、安装源、软件选项、系统分区、网络
- 选择时区
- 选择系统语言
- 安装源&软件包安装选项
- 配置系统分区
此次配置必仅配置必要的分区
/boot分区 划分500M---1GB 存放Linux内核及系统启动过程所需文件,分区格式由xfs更改为ext4
swap 分区 划分2048M 数据交换分区
内存4GB以内----- swap内存容量*2
内存4—16GB ----- swap内存容量*1
64GB以上----------- swap内存容量512M
128GB以上--------- swap内存容量可不分配
/ 分区 100GB 所有文件存放的根系统
/data 50GB
备注:选择Standard Partiton, 企业环境中还会用到LVM
选择接受分区更改 - 禁用KDUMP
- 网络配置和主机名
- 正式开始安装系统
- 点击开始安装
- 设置root密码
设置root密码,并创建用户 - 使用自建的用户名远程登录系统
- 在虚拟机上安装Ubuntu 1804系统
- 创建VM
- 安装Ubuntu 1804系统
- 选择语言
- 键盘设置
- 手动指定固定iP地址
- 设置设置软件源的地址
configure Ubuntuu archive mirror可修改为:http://mirrors.aliyun.com/ubuntu,然后点击Done - 分区
/boot 1G
Swap 2G
/data 50G
/ 100G - 设置服务器名称和账号
- Featured Server Snaps(其他功能软件列表),一个也不选,直接移动到最后,选择Done
- installing system(系统开始安装),选择Cancel update and reboot。
- 移除安装镜像,启动Ubuntu系统
- 漏截SSH Setup的设置,选择安装,然后点击Done(用 空格键 选择)
- 启动后报错---待解决
- 使用自建的用户名远程登录系统
三、配置环境变量,实现执行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相关的安全策略等信息的存储位置