一.按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别
Linux发行版:Linux distribution也叫GUN/Linux发行版,一般是为用户预先集成好的Linux操作系统及各种应用软件,一般不需要重新编译,在安装好之后,稍微更改设置就可以使用,通过软件包管理系统进行应用软件管理。
实际上的Linux只是Linux内核,完整的Linux系统是Linux内核+大量的开源软件和GNU系统,常见的Linux发行版可以大致分为两类:商业公司维护发行的发行版rhel为代表和社区组织维护的发行版Debian为代表。
1.RedHat
RHEL :Redhat Enterprise Linux 红帽企业操作系统,红帽企业的商业版Linux系统具有极高的稳定、高效的性能,主要用于服务器领域,系统免费使用但是部分功能需要收费,有强大的售后技术支持。
Centos:Community Enterprise Operating System 社区企业操作系统(rhel克隆版),把rhel系统重新编译并发布给用户免费使用的linux系统,除了logo不一样其他几乎跟rhel一样并同步更新。
Fedora :是redhat桌面版发展来的,是rhel在上面实验最新的技术或者工具的系统,之后应用成熟并入更新到redhat系统。
2.Debian
Ubuntu:基于Debian发行的桌面版操作系统,界面友好上手快,所有的发行版都是免费的。
Mint :Linux Mint基于ubuntu/Debian的linux发行的桌面环境操作系统
Deepin :Linux deepin深度操作系统,针对个人用户使用。
3.Slackware
SUSE Linux enterprise server:SLES商业版的SUSE Linux,主用于服务器,Novell公司产品,
OpenSUSE :社区版SUSE Linux是SUSE Linux Professional的接替者,主用于桌面环境。
4.其他发行版
Alpine :Alpine Linux是一个由社区开发的基于musllibc和BusyBox的Linux操作系统,一个以安全为理念的轻型Linux,面向x86路由器、防火墙、虚拟专用网、IP电话盒及服务器而设计,大小只有5M左右。
ArchLinux :具有轻量简洁的特点,遵循K.I.S.S原则 (keep it simple and stupid )
Gentoo : 采用编译安装,具有极致的性能,不提供传统意义上的安装程序,有极高的自定制性。
LFS :Linux From scratch *的制作Linux。
国产Linux:红旗Linux 中标麒麟
Android :安卓是一种基于Linux的*及开放源代码的操作系统,主要使用于移动设备。Android = Linux 内核 + BusyBox + java 虚拟机
各发行版本之间系统的核心即内核都是一样的并基于GNU的GPL协议,都是Linux内核+各种应用软件和常用工具的集合产品,通常均使用软件包管理系统。不同的发行版本他们之间的内核版本不同,不同的程序软件不同的库,不同的操作系统软件包管理系统也不一样。
SLES、Fedora、openSUSE、Centos、RHEL用rmp包管理系统,包文件以rpm为扩展名;Ubuntu、Debian系列使用基于dpkg包管理系统,包文件以deb为扩展名。
二.安装Centos7.6操作系统,创建一个自己名字的用户名,并可以正常登陆系统,将主要步骤截图
1.在虚拟机管理界面中,单击“开启虚拟机”按钮后几秒后进入安装centos7系统安装界面,选中 install centos7 直接安装系统
2.回车键后开始加载安装ISO镜像,并等待。。。
开始安装程序,等待一下。。。
3.选择安装系统语言单击continue按钮,默认语言为English。
4. 进入centos7系统的安装主界面,单击location选项,设置时区为Asia/Shanghai,Done.
5.设置键盘布局,默认。
6.设置语言支持为English并安装,也默认 Done.
7.centos7软件定制界面可以根据用户需求来调整系统的基本环境,单击software selection按钮,选择Server with GUI(带桌面的服务器),Done.
8.在安装主界面,单击installtion destination选项选择安装媒介并设置分区,选择手动设置分区,Done。
9.设置分区类型为标准分区 standard partition,单击 “+” 进行创建分区,
创建/boot分区,挂载点/boot,分区大小1G;创建根分区,挂载点/,设置大小100G;创建swap分区,挂载点/swap,设置大小为内存2倍为4G;创建自定义的/data数据分区,大小50G,最后Done。
在变更的摘要中,选择accept changes按钮,接受分区改变。
10.配置网络和主机名,设置主机名为n51c7,开启网络服务,Done。(没有IP地址因为宿机的VMNAT/DHCP服务没有开启)
设置网络自动连接,save。
11在安装主界面面完成设置调整后,开始安装,单击begin installation.
12.设置root用户密码,Done。(设置的密码级别较弱有安全风险,非要使用两次确认就行,生产环境慎重。)
13.创建普通用户和密码,作为普通用户登陆使用,Done。
14.完成所有配置后,系统安装进行中。。。
15.完成安装重启系统。
重启后的第一次启动。
16.许可协议选择i accept,Done。
17.用户名并登陆
首次登陆初始化桌面环境,接着下一步。
18.centos7.6桌面.
宿机的VMNAT/DGCP服务开启后,IP地址已自动分配。
三.配置环境变量,实现执行history的时候可以看到执行命令的时间。
执行命令后,系统默认会在内存中记录执行过得命令,会将内存的命令历史存放对应的历史文件中,默认位置是~/.bash_history,以点开头的文件是隐藏文件。
HISTTIMEFORMAT="%F %T `whoami`" 显示时间和用户,变量可以 export 变量名="值" 形式存放在 /etc/profile 或 ~/.bash_profile中(变量永久保存)。
以点开头的文件为隐藏文件,查看文件信息,并写入保存配置信息HISTTIMEFORMAT="%F %T
[root@n51c7 ~]# cat .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
[root@n51c7 ~]# vi .bash_profile 编辑配置文件并写入可以永久保存
[root@n51c7 ~]# source .bash_profile
[root@n51c7 ~]# cat .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
export HISTTIMEFORMAT="%F %T"
:wq
执行history
四.总结Linux的哲学思想
1.一切皆文件。包括硬件设备,通信接口等在系统中所有都以文件显示 。
2.提供很多功能用途单一的简单程序工具。
3.众多简单程序组合相互连接使用,可以完成复杂的功能。 [shell编程]
4.避免让人困惑的用户界面,用命令行字符界面,执行效率高,性能好系统稳定耗费资源少。
5.配置数据存储保存在文本中。
五.总结Linux的常用命令格式,并用实例说明,例如echo 、screen、date、ifconfig、export等命令
Linux的常用命令格式:commoned [option] [file] /命令名称 [命令参数] [命令对象],具体的格式可以通过help 或者man查看帮助。
1.echo: 在终端上将后面跟进的字符串或者变量提取后的值输出
格式:echo [option] [字符串]/ [$变量]
[root@n51c7 ~]# help echo
echo: echo [-neE] [arg ...]
Write arguments to the standard output.
Display the ARGs on the standard output followed by a newline.
常用选项Options:
-n do not append a newline 不自动换行
-e enable interpretation of the following backslash escapes 启用 \ 字符的解释功能
-E explicitly suppress interpretation of backslash escapes (默认)不支持 \ 解释功能
[root@n51c7 ~]# echo abc
abc
[root@n51c7 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin:/root/bin:/root/bin:/root/bin:/root/bin:/root/bin:/root/bin
2.screen: 会话共享功能,实现会话管理,新建会话,共享会话等。
CentOS7 来自于base源,CentOS8 来自于epel源。
安装screen
[root@n51c7 ~]# yum install screen -y
[root@n51c7 ~]# man screen 查看screen命令格式
screen命令常见用法:创建新screen会话
screen –S [SESSION]
[root@n51c6 ~]# ssh 10.0.0.18
Nasty PTR record "10.0.0.18" is set up for 10.0.0.18, ignoring
root@10.0.0.18's password:
Last login: Sat Nov 28 00:59:43 2020 from 10.0.0.17
[root@n51c8 ~]# screen -S haha
加入screen会话
screen –x [SESSION]
[root@n51c7 ~]# ssh 10.0.0.18
root@10.0.0.18's password:
Last login: Sat Nov 28 01:01:02 2020 from 10.0.0.16
[root@n51c8 ~]# screen -x
首先使用ssh服务程序将终端n51c6远程连接到服务器n51c8,并创建一个会话窗口screen -S haha,然后,使用ssh服务程序将终端n51c7远程连接到服务器n51c8,并执行获取远程会话screen -x的命令。接下来,两台主机就能看到相同的内容了
退出并关闭screen会话
exit
[root@n51c8 ~]# exit
logout
Connection to 10.0.0.18 closed.
[root@n51c6 ~]#
[root@n51c8 ~]# exit
logout
Connection to 10.0.0.18 closed.
[root@n51c7 ~]#
剥离当前screen会话
Ctrl+a,d
显示所有已经打开的screen会话
screen -ls
[root@n51c8 ~]# screen -ls
There is a screen on:
1640.haha (Attached)
1 Socket in /run/screen/S-root.
恢复某screen会话
screen -r [SESSION]
3.date:显示或设定系统的日期与时间
格式为“date [选项] [+指定的格式
Linux的两种时钟
系统时钟:由Linux内核通过CPU的工作频率进行的
硬件时钟:主板
默认有固定的显示模式,后面接参数可以显示参数的信息
参数 作用
%S 秒(00~59)
%M 分钟(00~59)
%H 小时(00~23)
%I 小时(00~12)
%m 月份(1~12)
%p 显示出AM或PM
%a 缩写的工作日名称(Sun)
%A 完整的工作日名称(Sunday)
%b 缩写的月份名称(Jan)
%B 完整的月份名称(January)
%q 季度(1~4)
%y 简写年份(20)
%Y 完整年份(2020)
%d 本月中的第几天
%j 今年中的第几天
%n 换行符(相当于按下回车键)
%t 跳格(相当于按下Tab键)
[root@n51c7 ~]# date
Sat Nov 28 01:20:37 CST 2020
[root@n51c7 ~]# date +%F
2020-11-28
[root@n51c7 ~]# date +%T
01:21:15
clock,hwclock: 显示硬件时钟
-s, --hctosys 以硬件时钟为准,校正系统时钟
-w, --systohc 以系统时钟为准,校正硬件时钟
设置硬件时间
# hwclock –set –date=”07/07/06 10:19″ (月/日/年 时:分:秒)
或者# clock –set –date=”07/07/06 10:19″ (月/日/年 时:分:秒)
硬件时钟与系统时钟同步:# hwclock –hctosys=hwclock -s(hc代表硬件时间,sys代表系统时间)或者# clock –hctosys
系统时钟和硬件时钟同步:# hwclock –systohc或者# clock –systohc =hwclock -w
时区: /etc/localtime
修改linux时区
命令 ln -sf /usr/share/zoneinfo/Asia/xxxx /etc/localtime
[root@n51c6 ~]# cat /etc/sysconfig/clock
ZONE="Asia/Shanghai"
[root@n51c7 ~]# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
[root@n51c7 ~]# ls -l /etc/localtime
lrwxrwxrwx. 1 root root 33 Nov 28 01:42 /etc/localtime -> /usr/share/zoneinfo/Asia/Shanghai
[root@n51c8 ~]# timedatectl set-timezone Asia/Shanghai
[root@n51c8 ~]# ll /etc/localtime
lrwxrwxrwx. 1 root root 35 Nov 9 21:08 /etc/localtime -> ../usr/share/zoneinfo/Asia/Shanghai
4.ifconfig:用于显示或设置网络设备,默认什么都不接是显示网卡信息,后面也可以接其他不同的参数
格式:ifconfig [网络设备] [参数]
[root@n51c7 ~]# yum install net-tools -y
[root@n51c7 ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.0.17 netmask 255.255.255.0 broadcast 10.0.0.255
inet6 fe80::118b:bef8:ba25:bf36 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:5e:1e:8d txqueuelen 1000 (Ethernet)
RX packets 13481 bytes 6502598 (6.2 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 5209 bytes 635529 (620.6 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
常用选项 OPTIONS
-a display all interfaces which are currently available, even if down 显示全部接口信息。
-s display a short list (like netstat -i) 显示摘要信息(类似于 netstat -i)。
-v be more verbose for some error conditions 显示详细的错误条件
[root@n51c7 ~]# ifconfig -a
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.0.17 netmask 255.255.255.0 broadcast 10.0.0.255
inet6 fe80::118b:bef8:ba25:bf36 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:5e:1e:8d txqueuelen 1000 (Ethernet)
RX packets 13702 bytes 6518828 (6.2 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 5328 bytes 653221 (637.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@n51c7 ~]# ifconfig -s
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
ens33 1500 13712 0 0 0 5334 0 0 0 BMRU
lo 65536 0 0 0 0 0 0 0 0 LRU
[root@n51c7 ~]# ifconfig -v
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.0.17 netmask 255.255.255.0 broadcast 10.0.0.255
inet6 fe80::118b:bef8:ba25:bf36 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:5e:1e:8d txqueuelen 1000 (Ethernet)
RX packets 13958 bytes 6539318 (6.2 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 5479 bytes 677121 (661.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
启动关闭指定网卡
ifconfig eth0 up up 启动指定网络设备/网卡。
ifconfig eth0 down down 关闭指定网络设备/网卡。
5.export:用于设置或显示环境变量。
参数:
-f 代表[变量名称]中为函数名称。
-n 删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。
-p 列出所有的shell赋予程序的环境变量。
[root@n51c7 ~]# export
declare -x HISTTIMEFORMAT="%F %T root"
declare -x HISTTIMEFPRMAT="%T %F"
declare -x HISTTIMEFROMAT="%F %T"
declare -x HOME="/root"
declare -x LOGNAME="root"
declare -x MAIL="/var/mail/root"
declare -x OLDPWD="/usr/share/zoneinfo/Asia"
declare -x PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin:/root/bin:/root/bin:/root/bin:/root/bin:/root/bin:/root/bin"
declare -x PWD="/root"
declare -x SELINUX_LEVEL_REQUESTED=""
declare -x SELINUX_ROLE_REQUESTED=""
declare -x SELINUX_USE_CURRENT_RANGE=""
declare -x SHELL="/bin/bash"
declare -x SHLVL="1"
declare -x SSH_CLIENT="192.168.2.102 60005 22"
declare -x SSH_CONNECTION="192.168.2.102 60005 10.0.0.17 22"
declare -x SSH_TTY="/dev/pts/0"
declare -x TERM="xterm"
declare -x USER="root"
declare -x XDG_RUNTIME_DIR="/run/user/0"
declare -x XDG_SESSION_ID="1"
[root@n51c7 ~]#