-
按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别。
大方向上来讲入下图所示,发行版分为一下几类:Debian,RedHat,Arch,SUSE,其他
基于这几类下面又会有很多不同的发行版,用于不同领域,各自有自己的优势和劣势。
下图是近12个月到近1个月的发行版受欢迎排行
大概介绍下不同的发行版的特点:--- redhat Red Hat Enterprise Linux (RHEL) 最受欢迎的商业支持 Linux 发行版。由于其专用的支持服务和更新,它通常被企业组织用作服务器平台。需要支付订阅费用,软件安装管理使用RPM和YUM,2019年7月被IBM收购
--- CentOS CentOS Linux 是 RHEL 的派生。它使用 RHEL 的所有源代码 无需支付额外支持的订阅费,要获得支持,必须依赖 CentOS 的开发者社区,许多其他发行版也源自 RHEL,例如 Scientific Linux 和 Oracle Linux。与 CentOS 不同,这些发行版不是 RHEL 的副本。这些发行版使用 RHEL 的源代码作为基础平台并构建它们的发行版。
--- Fedora Fedora 项目由 RHEL 赞助。Red Hat 使用 Fedora 作为测试场来测试其新功能。Fedora 中引入的许多功能通常会进入新版本的 RHEL。Red Hat 不为 Fedora Linux 提供任何支持。要获得支持,必须依靠志愿者社区 由于 Fedora 是一个测试平台,因此不应将其用于商业用途
--- SUSE Linux 在 Red Hat Enterprise Linux 之后,SUSE 是下一个用于服务器和大型机的稳定且流行的企业 Linux。SUSE 由 SUSE Software Solutions(德国)开发和维护。无需向 SUSE 付费即可安装、测试和使用 SUSE Linux。但是,如果您需要支持和更新,则必须购买付费订阅。SUSE Linux 适用于企业规模的网络
--- Debian Debian Linux 是一个基于纯社区的免费 Linux 发行版。它由最大的志愿者社区开发、管理、分发和更新。本项目始于1993年,软件安装和管理使用dpkg打包系统。如果想要一个完全免费的 Linux,Debian Linux 是一个不错的选择。Debian 发行版致力于自由、开放,并始终专注于提供用户想要的东西。几个流行的 Linux 发行版都是从 Debian Linux 派生而来的。选择这个发行版的另一个主要原因是它在其池中拥有最大的软件包集合。它包含超过 59000 个软件包,预编译的软件以一种很好的格式捆绑在一起,以便在您的机器上轻松安装。
--- ubuntu Ubuntu 通过提供类似 Windows 的 GUI 环境和工具改变了这一趋势。发布后不久,Ubuntu 成为最受欢迎和使用最多的 Linux 发行版。如果您正在寻找易于使用且免费的 Linux,那么 Ubuntu 应该是首选。
---gentoo linux 也是一个基于社区的 Linux 发行版。这个发行版的主要特点是它允许我们从计算机上的源代码编译整个 Linux。我们可以定制适合我们硬件平台并满足我们要求的每个选项和应用程序。如果您是 Linux 开发人员或高级用户,并且需要一个只包含您想要的内容的 Linux,这是一个完美的选择。
--- Arch Linux 是一个轻量级且灵活的发行版。此发行版仅包含软件的基本和稳定版本。如果你有一个旧系统并且需要一个轻量级的 Linux 发行版,这是一个完美的选择
--- Kali Linux 也是基于 Debian Linux。该Linux主要是为测试网络和系统的安全性而定制的。此发行版附带了许多用于黑客、破解和测试网络和 Web 应用程序的工具。
总结:您应该选择哪种发行版?
没有用于选择特定分布的预定义规则。您应该选择符合您的要求、技能和预算的发行版。不过,我的广泛建议是,您应该为企业规模的网络或大型网络选择 Red Hat 派生的发行版,并且应该为个人使用或中小型网络选择 Ubuntu 派生的发行版。
-
安装Centos7.9和ubuntu操作系统,创建一个自己名字的用户名,并可以正常登录,将主要步骤截图。
-
配置环境变量,实现执行history的时候可以看到执行命令的时间
export HISTTIMEFORMAT="%F %T "
-
总结Linux哲学思想。
一切都是一个文件(包括硬件)
小型,单一用途的程序
链接程序,共同完成复杂的任务
避免令人困惑的用户界面
配置数据存储在文本中 -
总结Linux常用命令使用格式,并用实例说明。例如echo、screen、date、ifconfig、export等命令
echo(选项)(参数)
-n 不换行显示
[root@localhost ~]# echo -n 123
\\ backslash
[root@localhost ~]# echo \\test
\test
\b backspace
[root@localhost ~]# echo -e "ab\bc"
ac
\c produce no further output
[root@localhost ~]# echo -e "ab\ccdec"
ab
\e escape
ab[root@localhost ~]# echo -e "ab\ecdef"
ab
def
\f form feed
[root@localhost ~]# echo -e "12\f345"
12
345
\n new line
[root@localhost ~]# echo -e "12\n345"
12
345
\r carriage return
[root@localhost ~]# echo -e "12\r345"
345
\t horizontal tab
[root@localhost ~]# echo -e "12\t345"
12 345
\v vertical tab
[root@localhost ~]# echo -e "12\v345"
12
345
screen
screen [ -options ] [ cmd [ args ] ]
screen -r [[pid.]tty[.host]]
screen -r sessionowner/[[pid.]tty[.host]]
date
date
[root@localhost ~]# date
Mon Oct 25 00:46:17 +08 2021
date -u
[root@localhost ~]# date -u
Sun Oct 24 16:46:48 UTC 2021
date +%”字母
[root@localhost ~]# date +%d
25
[root@localhost ~]# date +%a
Mon
[root@localhost ~]# date +%A
Monday
[root@localhost ~]# date +%h
Oct
[root@localhost ~]# date +%b
Oct
[root@localhost ~]# date +%B
October
[root@localhost ~]# date +%m
10
[root@localhost ~]# date +%y
21
[root@localhost ~]# date +%Y
2021
[root@localhost ~]# date +%T
00:48:43
[root@localhost ~]# date +%H
00
[root@localhost ~]# date +%M
48
[root@localhost ~]# date +%S
55
[root@localhost ~]#
“
date --date="过去或未来“
[root@localhost ~]# date --date="-5year"
Tue Oct 25 00:51:36 +08 2016
[root@localhost ~]# date --date="+1 year"
Tue Oct 25 00:51:45 +08 2022
[root@localhost ~]# date --date="+20 minute"
Mon Oct 25 01:12:09 +08 2021
[root@localhost ~]# date --date="tomorrow"
Tue Oct 26 00:52:23 +08 2021
[root@localhost ~]#
date --set
[root@localhost ~]# date --set "10/27/1988 12:30:00"
Thu Oct 27 12:30:00 +08 1988
ifconfig
-a查看所有接口
[root@localhost ~]# ifconfig -a
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.18.102.3 netmask 255.255.254.0 broadcast 172.18.103.255
inet6 fe80::88fa:3ca9:8d8a:21b prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:75:7e:aa txqueuelen 1000 (Ethernet)
RX packets 17806 bytes 21070483 (20.0 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 3731 bytes 360797 (352.3 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
up启用
[root@localhost ~]#ifconfig ens33 up
down禁用
[root@localhost ~]#ifconfig ens33 down
"ip address"设置IP地址broadcast设置网关netmask设置子网掩码
[root@localhost ~]#ifconfig ens33 10.10.10.2 netmask 255.255.255.0 broadcast 10.10.10.1
export(选项)(参数)
-f:代表[变量名称]中为函数名称; -n:删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中; -p:列出所有的shell赋予程序的环境变量。
[root@localhost /]# export -p
declare -x HISTCONTROL="ignoredups"
declare -x HISTSIZE="1000"
declare -x HOME="/root"
declare -x HOSTNAME="localhost.localdomain"
declare -x LANG="en_CA.UTF-8"
declare -x LESSOPEN="||/usr/bin/lesspipe.sh %s"
declare -x LOGNAME="root"
declare -x LS_COLORS="rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:"
declare -x MAIL="/var/spool/mail/root"
declare -x OLDPWD="/root"
declare -x PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
declare -x PWD="/"
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="172.18.102.1 3116 22"
declare -x SSH_CONNECTION="172.18.102.1 3116 172.18.102.3 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="3"
6、描述Linux发行版的系统目录名称命名规则以及用途。
[root@localhost /]# tree -d -L 1
.
├── bin -> usr/bin
├── boot
├── data
├── dev
├── etc
├── home
├── lib -> usr/lib
├── lib64 -> usr/lib64
├── media
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin -> usr/sbin
├── srv
├── sys
├── tmp
├── usr
└── var
-
/bin:
bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。 -
/boot:
这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。 -
/dev :
dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。 -
/etc:
etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。 -
/home:
用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve。 -
/lib:
lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。 -
/lost+found:
这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。 -
/media:
linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。 -
/mnt:
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。 -
/opt:
opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。 -
/proc:
proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
-
/root:
该目录为系统管理员,也称作超级权限者的用户主目录。 -
/sbin:
s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。 -
/selinux:
这个目录是 Redhat/CentOS 所特有的目录,Selinux 是一个安全机制,类似于 windows 的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。 -
/srv:
该目录存放一些服务启动之后需要提取的数据。 -
/sys:
这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。
sysfs 文件系统集成了下面3种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。
该文件系统是内核设备树的一个直观反映。
当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
-
/tmp:
tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。 -
/usr:
usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。 -
/usr/bin:
系统用户使用的应用程序。 -
/usr/sbin:
超级用户使用的比较高级的管理程序和系统守护程序。 -
/usr/src:
内核源代码默认的放置目录。 -
/var:
var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。 -
/run:
是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。
在 Linux 系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。
/etc: 上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。
/bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在 /bin/ls 目录下的。
值得提出的是,/bin, /usr/bin 是给系统用户使用的指令(除root外的通用户),而/sbin, /usr/sbin 则是给 root 使用的指令。
/var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在 /var/log 目录下,另外 mail 的预设放置也是在这里。