1、按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别。
Linux 发行版
slackware:SUSE Linux Enterprise Server (SLES) , OpenSuse桌面
debian: ubuntu,deepin(深度),mint
redhat:(1)、RHEL: RedHat Enterprise Linux, 每18个月发行一个新版本(2)、CentOS: Community Enterprise Operating System 兼容RHEL的格式(3)、中标麒麟:中标软件(4)、 Fedora:每6个月发行一个新版本
Alpine: 一个面向安全的轻型 Linux 发行版。它不同于通常 Linux 发行版,Alpine 采用了 musllibc 和 busybox 以减小系统的体积和运行时资源消耗,但功能上比 busybox 又完善的多,只有5M左右大小
ArchLinux:轻量简洁,遵循K.I.S.S.原则( keep it simple and stupid ),Manjaro
Gentoo:极致性能,不提供传统意义的安装程序,下载源代码在本机上编译安装软件
LFS:Linux From scratch 自制Linux,只是一个说明书
Android:kernel+busybox(工具集)+java虚拟机
常用版本
RHEL
Marc Ewing早在卡内基梅隆大学读书的时候就戴着他祖父的红色曲球帽. Marc在Marc Ewing大学常把自己的软件命名为Red
Hat — Red hat 1, Red Hat 2 用来区别他人的软件. 所以当他开始自己的Linux项目, 自然就会命名为Red Hat
Linux。Ewing非常乐于帮助同学解决计算机问题 “你的朋友可能会说, 去跟我的朋友Marc交流. 谁是Marc? 他是红帽男孩. ”
所以, 至少在他们最亲密的朋友当中, 红帽子成为了技术专家的同义词
1993年,Bob Young建立ACC公司,营销Linux和UNIX的支持软件和书籍杂志
1995年,Bob Young 收购了MarcEwing的业务,合并后的ACC公司成为新的Red Hat软件公司,发布了Red Hat Linux 2.0
2018年10月29日,IBM宣布将以约340亿美元收购开源软件和技术主要供应商红帽公司
CentOS 和Rockey Linux
2004年,Gregory Kurtzer和CentOS的其他创始成员基于开源的RHEL创建了CentOS,将Enterprise Linux引入了社区。
2014年,红帽宣布正式赞助CentOS。CentOS的几个核心团队入职Red Hat专门负责其开发。并在Red Hat在理事会中占了三席,但是其社区属性得到保留,交易结果是一部分包括将CentOS商标和IP转移到Red Hat以安全保存。CentOS 8于2019年9月交付,紧随RHEL 8之后,CentOSStream的发布和发布是对下一个次要更新中即将发布内容预览版本。可以说是RHEL的beta频道。
2019,巨头IBM花重资收购了RedHat。并承诺Red Hat忠于其开源根基不会改变,声称" Red Hat对开源的使命和坚定承诺将保持不变。"
2020年12月8日IBM宣布将惯例支持到2029年CentOS 8,提前在2年内就终结,唯一的升级途径是CentosStream—AKA,RHEL的Beta发布,并建议不再生产环境中使用。预示着CentOS可能会正式死亡。CentOS已死,但是CentOS精神将会永存。随后以CentOS创始人之一Gregory Kurtzer为首,8小时内250人啸聚网络,计划以创建Rocky Linux(Rocky为已经逝世的另外一个CentOS创始人)取代CentOS。Rocky Linux与RHEL兼容目前已经创建了Github RockyLinux项目组织(github.com/rocky-linux/rocky)和官网(rockylinux.org)
2、安装Centos7.9和ubuntu操作系统,创建一个自己名字的用户名,并可以正常登录,将主要步骤截图。
[root@zabbix-web-server2 ~]# cat /etc/passwd | grep sx
[root@zabbix-web-server2 ~]# useradd sx
[root@zabbix-web-server2 ~]# echo 'sunxiang' | passwd --stdin sx
Changing passwordforuser sx.
passwd: all authentication tokens updated successfully.
[root@zabbix-web-server2 ~]# su - sx
[sx@zabbix-web-server2 ~]$
[sx@zabbix-web-server2 ~]$
3、配置环境变量,实现执行history的时候可以看到执行命令的时间。
[root@zabbix-web-server2 ~]# vim .bash_profile
PATH=$PATH:$HOME/bin
HISTTIMEFORMAT="%F %T"
exportPATH
[root@zabbix-web-server2 ~]# source .bash_profile
[root@zabbix-web-server2 ~]# history
12021-12-2511:55:32rz-E
22021-12-2511:55:32**0yum install-yrz
32021-12-2511:55:32yum install-yrz
42021-12-2511:55:32rz-E
52021-12-2511:55:32**000000
62021-12-2511:55:32yum provide rz
72021-12-2511:55:32yum--help
82021-12-2511:55:32yum provides rz
4、总结Linux哲学思想。
一切皆文件:把几乎所有资源统统抽象为文件形式;包括硬件设备,甚至通信接口等;open(),read(),write(),close(),delete(),create()。
由众多功能单一的程序组成;一个程序只做一件事,并且做好;组合小程序完成复杂任务。
尽量避免跟用户交互;目标:易于以编程的方式实现自动化任务。
使用文本文件保存配置信息。
5、总结Linux常用命令使用格式,并用实例说明。例如echo、screen、date、ifconfig、export等命令
Linux常用命令的通用格式:
command [option..] [arguments..]
选项:
用于启用或关闭命令的某个功能;
选项有短选项和长选项之分,多个短选项可以组合,长选项只能一次一个。
echo
echo-显示一行文本
允许在标准输出上显示STRING(s).
-n不输出行尾的换行符.
-e允许对下面列出的加反斜线转义的字符进行解释.
-E禁止对在STRINGs中的那些序列进行解释.
--help显示帮助并退出(须单独运行)
--version输出版本信息并退出(须单独运行)
在没有-E的情况下,可承认并可以内置替换以下序列:
\NNN
字符的ASCII代码为NNN(八进制)
\\
反斜线
\a
报警符(BEL)
\b
退格符
\c
禁止尾随的换行符
\f
换页符
\n
换行符
\r
回车符
\t
水平制表符
\v
纵向制表符
[root@zabbix-web-server2 ~]# echo -e "a\nb\nc"
a
b
c
screen
screen [-AmRvx-ls-wipe][-d <作业名称>][-h <行数>][-r <作业名称>][-s ][-S <作业名称>]
Screen命令参数:
-A-[r|R] 将所有的视窗都调整为目前终端机的大小。
-cfilename 用指定的filename文件替代screen的配置文件’.screenrc’.
-d[pid.tty.host] 断开screen进程(使用该命令时,screen的状态一定要是Attached,也就是说有用户连在screen里)。一般进程的名字是以pid.tty.host这种形式表示(用screen-list命令可以看出状态)。
-D[pid.tty.host] 与-d命令实现一样的功能,区别就是如果执行成功,会踢掉原来在screen里的用户并让他logout。
-h<行数> 指定视窗的缓冲区行数。
-ls或–list 显示目前所有的screen作业。
-m即使目前已在作业中的screen作业,仍强制建立新的screen作业。
-pnumber or name 预先选择一个窗口。
-r[pid.tty.host] 恢复离线的screen进程,如果有多个断开的进程,需要指定[pid.tty.host]
-R先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。
-sshell 指定建立新视窗时,所要执行的shell。
-S<作业名称> 指定screen作业的名称。(用来替代[pid.tty.host]的命名方式,可以简化操作).
-v显示版本信息。
-wipe检查目前所有的screen作业,并删除已经无法使用的screen作业。
-x恢复之前离线的screen作业。
#创建一个带名字的screen会话,并且attached模式
[root@zabbix-web-server2 ~]#screen -S test
#在会话中执行ping命令
[root@zabbix-web-server2 ~]#ping 10.0.0.7
64bytes from10.0.0.7:icmp_seq=96ttl=64time=0.865 ms
64bytes from10.0.0.7:icmp_seq=97ttl=64time=0.235 ms
64bytes from10.0.0.7:icmp_seq=98ttl=64time=0.268 ms
#关闭当前终端
#再次连接服务器查看所有会话
[root@zabbix-web-server2 ~]# screen -ls
There is a screen on:
28381.test (Detached)
1Socketin/var/run/screen/S-root.
#执行会话
[root@zabbix-web-server2 ~]# screen -r 28381
64bytes from10.0.0.7:icmp_seq=96ttl=64time=0.865 ms
64bytes from10.0.0.7:icmp_seq=97ttl=64time=0.235 ms
64bytes from10.0.0.7:icmp_seq=98ttl=64time=0.268 ms
64bytes from10.0.0.7:icmp_seq=99ttl=64time=0.246 ms
64bytes from10.0.0.7:icmp_seq=100ttl=64time=0.233 ms
64bytes from10.0.0.7:icmp_seq=101ttl=64time=0.259 ms
64bytes from10.0.0.7:icmp_seq=102ttl=64time=0.267 ms
64bytes from10.0.0.7:icmp_seq=103ttl=64time=0.527 ms
date
date-打印或设置系统日期和时间
根据指定格式显示当前时间或设置系统时间.
-d,--date=STRING
显示由 STRING 指定的时间, 而不是当前时间
-f,--file=DATEFILE
显示 DATEFILE 中每一行指定的时间, 如同将 DATEFILE 中的每行作为--date的参数一样
-I,--iso-8601[=TIMESPEC] 按照 ISO-8601 的日期/时间格式输出时间.
TIMESPEC=`date' (或者不指定时)仅输出日期,等于 `hours', `minutes', 或`seconds' 时按照指定精度输出日期及时间.
-r,--reference=FILE
显示 FILE 的最后修改时间
-R,--rfc-822
根据 RFC-822 指定格式输出日期
-s,--set=STRING
根据 STRING 设置时间
-u,--utc,--universal
显示或设置全球时间(格林威治时间)
--help
显示本帮助文件并退出
--version
显示版本信息并退出
格式 FORMAT 控制着输出格式. 仅当选项指定为全球时间时本格式才有效。 分别解释如下:
%%
文本的 %
%a
当前区域的星期几的简写 (Sun..Sat)
%A
当前区域的星期几的全称 (不同长度) (Sunday..Saturday)
%b
当前区域的月份的简写 (Jan..Dec)
%B
当前区域的月份的全称(变长) (January..December)
%c
当前区域的日期和时间 (Sat Nov0412:02:33 EST1989)
%d
(月份中的)几号(用两位表示) (01..31)
%D
日期(按照 月/日期/年 格式显示) (mm/dd/yy)
%e
(月份中的)几号(去零表示) (1..31)
%h
同 %b
%H
小时(按24小时制显示,用两位表示) (00..23)
%I
小时(按12小时制显示,用两位表示) (01..12)
%j
(一年中的)第几天(用三位表示) (001..366)
%k
小时(按24小时制显示,去零显示) (0..23)
%l
小时(按12小时制显示,去零表示) (1..12)
%m
月份(用两位表示) (01..12)
%M
分钟数(用两位表示) (00..59)
%n
换行
%p
当前时间是上午 AM 还是下午 PM
%r
时间,按12小时制显示 (hh:mm:ss [A/P]M)
%s
从1970年1月1日0点0分0秒到现在历经的秒数 (GNU扩充)
%S
秒数(用两位表示)(00..60)
%t
水平方向的 tab 制表符
%T
时间,按24小时制显示(hh:mm:ss)
%U
(一年中的)第几个星期,以星期天作为一周的开始(用两位表示) (00..53)
%V
(一年中的)第几个星期,以星期一作为一周的开始(用两位表示) (01..52)
%w
用数字表示星期几 (0..6);0代表星期天
%W
(一年中的)第几个星期,以星期一作为一周的开始(用两位表示) (00..53)
%x
按照 (mm/dd/yy) 格式显示当前日期
%X
按照 (%H:%M:%S) 格式显示当前时间
%y
年的后两位数字 (00..99)
%Y
年(用4位表示) (1970...)
%z
按照 RFC-822 中指定的数字时区显示(如,-0500) (为非标准扩充)
%Z
时区(例如, EDT (美国东部时区)), 如果不能决定是哪个时区则为空
默认情况下,用0填充数据的空缺部分. GNU 的 date 命令能分辨在`%'和数字指示之间的以下修改.
`-' (连接号) 不进行填充 `_' (下划线) 用空格进行填充
[root@zabbix-web-server2 ~]# date
Sun Dec2613:12:48 CST2021
[root@zabbix-web-server2 ~]# date +%m%d%H%M%S
1226131305
ifconfig
ifconfig 是一个用来查看、配置、启用或禁用网络接口的工具,这个工具极为常用的。可以用这个工具来临时性的配置网卡的IP地址、掩码、广播地址、网关等。也可以把 它写入一个文件中(比如/etc/rc.d/rc.local),这样系统引导后,会读取这个文件,为网卡设置IP地址
语 法:ifconfig [网络设备][down up-allmulti-arp-promisc][add<地址>][del<地址>][<硬件地址>][io_addr][irq][media<网络媒介类型>][mem_start<内存地址>][metric<数目>][mtu<字节>][netmask<子网掩码>][tunnel<地址>][-broadcast<地址>][-pointopoint<地址>][IP地址]
参数:
up 启动指定网络设备/网卡
down 关闭指定网络设备/网卡
-arp设置指定网卡是否支持ARP协议
-promisc设置是否支持网卡的promiscuous模式,如果选择此参数,网卡将接收网络中发给它所有的数据包
-allmulti设置是否支持多播模式,如果选择此参数,网卡将接收网络中所有的多播数据包
-a显示全部接口信息
-s显示摘要信息(类似于 netstat-i)
add 给指定网卡配置IPv6地址
del 删除指定网卡的IPv6地址
<硬件地址> 配置网卡最大的传输单元
mtu<字节数> 设置网卡的最大传输单元 (bytes)
netmask<子网掩码> 设置网卡的子网掩码
tunel 建立隧道
dstaddr 设定一个远端地址,建立点对点通信
-broadcast<地址> 为指定网卡设置广播协议
-pointtopoint<地址> 为网卡设置点对点通讯协议
multicast 为网卡设置组播标志
为网卡设置IPv4地址
txqueuelen<长度> 为网卡设置传输列队的长度
[root@zabbix-web-server2 ~]# ifconfig
ens33:flags=4163 mtu1500
inet10.0.0.40 netmask255.255.255.0 broadcast10.0.0.255
inet6 fe80::c3ad:1f16:72da:df69 prefixlen64scopeid 0x20
ether00:0c:29:b6:93:36 txqueuelen1000(Ethernet)
RX packets27468bytes29751320(28.3 MiB)
RX errors0dropped0overruns0frame0
TX packets4030bytes343320(335.2 KiB)
TX errors0dropped0overruns0carrier0collisions0
lo:flags=73 mtu65536
inet127.0.0.1 netmask255.0.0.0
inet6 ::1 prefixlen128scopeid 0x10
loop txqueuelen1000(Local Loopback)
RX packets0bytes0(0.0 B)
RX errors0dropped0overruns0frame0
TX packets0bytes0(0.0 B)
TX errors0dropped0overruns0carrier0collisions0
[root@zabbix-web-server2 ~]# ifconfig #处于激活状态的网络接口
[root@zabbix-web-server2 ~]# ifconfig -a #所有配置的网络接口,不论其是否激活
[root@zabbix-web-server2 ~]# ifconfig eth0 #显示eth0的网卡信息
[root@zabbix-web-server2 ~]# ifconfig eth0 down #关闭eth0网卡
[root@zabbix-web-server2 ~]# ifconfig eth0 up #开启eth0网卡
[root@zabbix-web-server2 ~]# ifconfig eth0 add 33ffe:3240:800:1005::2/ 64 #为网卡添加IPv6地址
[root@zabbix-web-server2 ~]# ifconfig eth0 del 33ffe:3240:800:1005::2/ 64 #为网卡删除IPv6地址
[root@zabbix-web-server2 ~]# ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE #修改MAC地址
[root@zabbix-web-server2 ~]# ifconfig eth0 192.168.1.56 #给eth0网卡配置IP地址
[root@zabbix-web-server2 ~]# ifconfig eth0 192.168.1.56 netmask 255.255.255.0 #给eth0网卡配置IP地址,并加上子掩码
[root@zabbix-web-server2 ~]# ifconfig eth0 192.168.1.56 netmask 255.255.255.0 broadcast 192.168.1.255 #给eth0网卡配置IP地址,加上子掩码,加上个广播地址
[root@zabbix-web-server2 ~]# ifconfig eth0 mtu 1500 #设置能通过的最大数据包大小为 1500 bytes
[root@zabbix-web-server2 ~]# ifconfig eth0 arp #开启arp功能
[root@zabbix-web-server2 ~]# ifconfig eth0 -arp #关闭arp功能
export
export显示和设置环境变量值
-f带边环境变量为函数名称
-n删除指定的环境变量
-p列出所有的环境变量
[root@zabbix-web-server2 ~]# aaa=bbb #设置一个变量
[root@zabbix-web-server2 ~]# export aaa #加入环境变量
[root@zabbix-web-server2 ~]# env |grep aa #查看环境变量
aaa=bbb
[root@zabbix-web-server2 ~]# export -n aaa #删除环境变量
[root@zabbix-web-server2 ~]# env |grep aa #查看
[root@zabbix-web-server2 ~]# export PATH=$PATH:/usr/local/bin #将/usr/local/bin加入环境变量中
6、描述Linux发行版的系统目录名称命名规则以及用途。
命名规则
文件系统层次结构标准(英语:Filesystem Hierarchy Standard,FHS)定义了Linux操作系统中的主要目录及目录内容。FHS由Linux基金会维护。 当前版本为3.0版,于2015年发布官方标准文档。
文件是什么?众多文件如何有效组织起来
目录:路径映射;
文件:存储空间存储的一段流式数据,对数据可以做到按名存取;
文件系统:层级结构:有索引:
/:原初起点;
倒置树状结构;
/dev/pts/2:
最左侧/:表示根目录
其它的/:表示路径分隔符
Linux的路径分隔符是/
Windows的是\
文件的路径表示:
绝对路径:从跟开始表示出的路径
相对路径:从当前位置开始表示出的路径
文件名使用法则:
1、遵循FHS(Filesystem Hierarchy Standard)标准
2、严格区分大小写
3、目录也是文件,同一路径下,不能存在相同的文件名
4、可以使用除了‘/’以外的任意字符
5、文件最长字符不能超过225个
用户有家目录:home
用户的起始目录:普通用户管理文件的位置;
工作目录:
/etc/sysconfig/network-scripts/ifcfg-ens33
basename:最右侧的文件或目录名;
dirname:basename左侧的路径
命令:
~]# basename /PATH/TO/SOMEFILE
~]# dirname /PATH/TO/SOMEFILE
/PATH/TO
目录结构
/bin:所有用户使用的基本命令;不能关联至独立分区,系统启动即会用到的程序
/boot:引导文件存放目录,内核文件、引导加载器都存放与此目录
/dev:设备文件及特殊文件存储位置
• b:block device随机设备(块设备)
• c:character device线性设备(字符设备)
/etc:配置文件目录
/home:/USERNAME普通用户家目录
/root:管理员家目录
/run:临时文件系统,存储系统启动以来的信息。如果系统重启,这个目录应该被删掉或清除
/sbin:管理类的基本命令;不能关联至独立分区,系统启动机会用到的程序
/tmp:临时文件文件存储位置
/usr:共享资源,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录
• bin:系统用户使用的应用程序
• sbin:管理员使用的较高级的管理程序和系统守护程序
• lib:32位使用
• lib64:只存在64为系统
• include:c程序的头文件
• src:内核源代码默认的放置目录
• share:结构化独立的数据。例如man,doc
• local:第三方应用程序的安装位置
/var:存放着在不断扩充着的东西,将经常被修改的目录放在这个目录下,包括各种日志文件
• cache:应用程序缓存数据目录
• lib:应用程序状态信息数据
• local:专用于为/usr/local下的应用程序存储可变数据
• lock:锁文件
• log:日志目录及文件
• opt:专用于为/opt下的应用程序存储可变数据
• run:运行中的进程相关数据,通常用于存储进程pid文件
• spool:应用程序数据池
• tmp:保存系统两次重启之间产生的临时文件
/proc:用于输出内核与进程信息相关的虚拟文件系统
/sys:用于输出当前系统上硬件设备相关信息虚拟文件系统
/selinux:相关的安全策略等信息的存储位置