Linux主流发行版的介绍与它们之间的联系与区别
1. Linux发行版介绍
2. 主流发行版之间的联系与区别
安装CentOS7.8操作系统,创建登录用户
1. 安装CentOS7.8
2. 创建登录用户
配置环境变量,实现history显示执行命令的时间功能
1. history命令的介绍
2. 实现history显示执行命令的时间功能
Linux哲学思想
1. Linux哲学思想
Linux命令使用格式及一些基础命令的使用
1. 命令使用格式
2. 基础命令介绍
2.1 echo命令
2.2 screen命令
2.3 date命令
2.4 hwclock, clock命令
2.5 lscpu命令
2.6 lsblk命令
2.7 free命令
2.8 uname命令
2.9 ifconfig命令
2.10 whoami, who, w命令
2.11 export命令
Linux主流发行版的介绍与它们之间的联系与区别
1. 主流发行版介绍
Linux 发行版(英语:Linux distribution,也被叫做GNU/Linux 发行版),为一般用户预先集成好的Linux操作系统及各种应用软件。一般用户不需要重新编译,在直接安装之后,只需要小幅度更改设置就可以使用,通常以软件包管理系统来进行应用软件的管理。Linux发行版通常包含了包括桌面环境、办公包、媒体播放器、数据库等应用软件。这些操作系统通常由Linux内核、以及来自GNU计划的大量的函数库,和基于X Window的图形界面。下一小节将介绍主流的几款Linux发行版。
2. 主流发行版之间的联系与区别
这些发行版可以分为商业发行版,比如Ubuntu、Red Hat Enterprise Linux、openSUSE(Novell);和社区发行版,它们由自由软件社区提供支持,如CentOS、Debian、Fedora、Arch和Gentoo。它们都是类UNIX操作系统。
Ubuntu是以桌面应用为主的Linux发行版,Ubuntu项目公开承诺开源软件开发的原则;鼓励人们使用自由软件,研究它的运作原理,改进和分发。Ubuntu是著名的Linux发行版之一,它也是目前最多用户的Linux版本。
Red Hat Enterprise Linux(RHEL)是一个由Red Hat开发的商业市场导向的Linux发行版。红帽公司从 Red Hat Enterprise Linux 5 开始对企业版 LINUX 的每个版本提供 10 年的支持。Red Hat Enterprise Linux 常被简称为 RHEL。Red Hat Enterprise Linux 大约 3 年发布一个新版本。
openSUSE,前身为SUSE Linux和SuSE Linux Professional,是一个Linux发行版与项目,它的开发重心是为软件开发者和系统管理者创造适用的开放源代码的工具,并提供易于使用的桌面环境和功能丰富的服务器环境。openSUSE针对桌面环境进行了一系列的优化,是一个对Linux新手较为友好的Linux发行版。
CentOS(Community Enterprise Operating System)是Linux发行版之一,它是来自于Red Hat Enterprise Linux(RHEL)依照开放源代码规定发布的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定性的服务器以CentOS替代商业版的Red Hat Enterprise Linux使用。两者的不同,在于CentOS并不包含封闭源代码软件。CentOS和RHEL一样,都可以使用Fedora EPEL来补足软件。
Debian是完全由自由软件组成的类UNIX操作系统,其包含的多数软件使用GNU通用公共许可协议授权,并由Debian计划的参与者组成团队对其进行打包、开发与维护。作为最早的Linux发行版之一,Debian在创建之初便被定位为在GNU计划的精神指导下进行公开开发并自由发布的项目。Debian也接受世界多个非营利组织的资金支持。
Fedora Linux(第七版以前为Fedora Core)是较具知名度的Linux发行包之一,由Fedora项目社区开发、红帽公司赞助,目标是创建一套新颖、多功能并且自由(开放源代码)的操作系统。Fedora是商业化的Red Hat Enterprise Linux发行版的上游源码。Fedora对于用户而言,是一套功能完备、更新快速的免费操作系统;而对赞助者Red Hat公司而言,它是许多新技术的测试平台,被认为可用的技术最终会加入到Red Hat Enterprise Linux中。Fedora大约每六个月发布新版本。
安装CentOS7.8操作系统,创建登录用户
1. 安装CentOS7.8
安装CentOS7.8的详细操作步骤,请参阅下列CentOS官方说明文档。
https://docs.centos.org/en-US/centos/install-guide/
2. 创建登录用户
在安装操作系统中创建用户的方式,请参考下列官方说明文档。
https://docs.centos.org/en-US/centos/install-guide/UserSpoke-x86/
注意:虽然建议在安装过程中创建登录用户,但此步骤是可选项,可以在操作系统安装完成后执行创建用户操作。
配置环境变量,实现history显示执行命令的时间功能
1. history命令
history命令用于显示和操作命令历史列表,可以列出此前操作过的命令,并可以通过!快速调用之前执行过的命令。
默认历史命令的最大条目为1000条,记录在$HISTSIZE变量中,可以通过编辑 /etc/profile文件中的HISTSIZE值来修改。
登录终端后操作过的命令,记录在内存中,当正常退出终端后,内存中的历史命令记录会自动保存到当前用户家目录下的.bash_history文件中,当下次用户登录时,系统会自动读取此文件的历史命令记录到内存中。
2. 实现history显示执行命令的时间功能
[root@centos7-1 ~]# history # 在命令行中执行history,可以显示历史命令列表
1 vi /etc/profile.d/init.sh
2 . /etc/profile.d/init.sh
[root@centos7-1 ~]# vi .bash_profile # 使用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/bin
export PATH
export "HISTTIMEFORMAT=%F %T " # 在文本最后行加入此命令
[root@centos7-1 ~]# source .bash_profile # 执行source或 . 命令,使配置文件立即生效
[root@centos7-1 ~]# history # 实现显示执行命令的时间功能
1 2021-01-27 14:06:18 vi /etc/profile.d/init.sh
2 2021-01-27 14:06:18 . /etc/profile.d/init.sh
Linux哲学思想
1. Linux哲学思想
1.1 一切皆为文件
在Linux操作系统中,无论是硬件设备,内核参数,虚拟内存等等,都以文件的形式呈现。
1.2 单一的小程序组合后,完成复杂任务
每一个小程序都解决成功一个单一任务,多个单一的程序组合后,可以完成复杂的任务,并且能完成的很好。
1.3 尽量避免与用户交互
不同于Windows操作系统的实时与用户交互,Linux中,在执行命令完成任务时,尽量避免与用户交互是Linux的一大核心理念。
1.4 所有配置信息以文本形式保存
Linux中,无论修改任何服务的配置信息,只需修改其配置文件。
Linux命令使用格式及一些基础命令的使用
1. 命令使用格式
在Linux中,命令的使用格式为 COMMAND [OPTION...] ARGUMENT...
COMMAND 为执行的命令
OPTION 为命令执行时,以何种形式呈现
长选项 --help; --human-readable
短选项 -l; -n
BSD风格的选项 a; u; x
注意:长选项不可以合并;短选项可以合并;
ARGUMENT 为命令的执行作用对象
2. 部分基础命令介绍
在Linux中,命令分为内部命令与外部命令,可以使用type命令查看命令类型。
示例:
[root@centos7-1 ~]# type echo
echo is a shell builtin[root@centos7-1 ~]# type date
date is /usr/bin/date
2.1 echo命令
echo命令 在标准输出中使用换行符显示参数
常用选项
-n 显示输出,不换行
-e 启用转义解释
[root@centos7-1 ~]# echo "Hello World!"
Hello World!
[root@centos7-1 ~]# echo -n "Hello World!" # 显示输出,不换行
Hello World![root@centos7-1 ~]#
[root@centos7-1 ~]# echo -e "Hello\vWorld" # 纵表显示
Hello
World
[root@centos7-1 ~]# echo -e "Hello\tWorld" # 横表显示
Hello World
2.2 screen命令
Screen是一种全屏窗口管理器,用于物理终端在几个进程之间多路传输(通常是交互式shell)
Use: screen [-opts] [cmd [args]]
常用选项
-S sockname创建会话
-x 加入会话
exit 退出所有会话
ctrl+a, d 退出当前会话,不影响对端会话
2.2.1 screen命令实现多屏模式
在同一台主机,使用同一个账户登录,启用screen后,即可实现在任何一个终端上的操作,另一个终端都可以实时看到,实现多屏模式的功能。
[root@centos7-1 ~]# screen -S multi-screen # 开启名为multi-screen的会话
[root@centos7-1 ~]# screen -x multi-screen # 在另一个终端加入multi-screen会话
2.2.2 screen命令实现远程终端窗口关闭时,会话并不终止,而是继续运行
例如 SSH登录远端主机,打开远程终端执行命令时,终端软件故障或网络突然断线会导致SSH会话中止,在进程中执行的与之绑定的前端任务随之消失。可以通过screen命令,把进程会话与终端窗口分离,以避免上述的问题。
[root@centos7-1 ~]# screen # screen开启会话
[root@centos7-1 ~]# ping 127.0.0.1 # 执行ping命令
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.013 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.023 ms[root@centos7-1 ~]# ps auxf # 查看进程
root 77851 0.0 0.6 161360 6044 ? Ss 16:40 0:00 \_ sshd: root@pts/4
root 77853 0.0 0.2 115836 2424 pts/4 Ss 16:40 0:00 | \_ -bash
root 78056 0.0 0.1 127636 1172 pts/4 S+ 16:44 0:00 | \_ screen
root 78057 0.0 0.1 127900 1436 ? Ss 16:44 0:00 | \_ SCREEN
root 78058 0.0 0.2 115840 2444 pts/7 Ss 16:44 0:00 | \_ /bin/bash
root 78097 0.0 0.1 128440 1272 pts/7 S+ 16:44 0:00 | \_ ping 127.0.0.1[root@centos7-1 ~]# ps auxf # 关闭SSH远程登录后,再查看进程,ping进程依然在执行
root 78057 0.0 0.1 127900 1436 ? Ss 16:44 0:00 SCREEN
root 78058 0.0 0.2 115840 2444 pts/7 Ss 16:44 0:00 \_ /bin/bash
root 78097 0.0 0.1 128440 1272 pts/7 S+ 16:44 0:00 \_ ping 127.0.0.1
2.3 date命令
date 按格式显示当前系统时间或设置系统时间
Usage: date [OPTION]... [+FORMAT] or: date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
[root@centos7-1 ~]# date # 显示当前系统时间
Wed Jan 27 16:54:48 CST 2021
[root@centos7-1 ~]# date "+%F %T" # 按格式输出当前系统时间
2021-01-27 16:55:06
[root@centos7-1 ~]# date 100112302030.30 # 修改系统时间为2030年10月1日12时30分30秒
Tue Oct 1 12:30:30 CST 2030
[root@centos7-1 ~]# date -d '-1 day' # 显示当前系统时间的前一天
Mon Sep 30 12:30:47 CST 2030
[root@centos7-1 ~]# date -d '100 day' # 显示当前系统时间后第100天
Thu Jan 9 12:30:52 CST 2031
[root@centos7-1 ~]# date -d '100 day' +%F # 按格式显示当前系统时间后第100天
2031-01-09
2.4 hwclock,clock命令
hwclock, clock 查询和设置硬件时钟
常用选项
-w 以系统时钟为准,设定硬件时钟
-s 以硬件时钟为准,设定系统时钟
[root@centos7-1 ~]# date
Tue Oct 1 12:58:35 CST 2030
[root@centos7-1 ~]# hwclock
Thu 28 Jan 2021 03:19:39 AM CST -0.318648 seconds
[root@centos7-1 ~]# hwclock -w # 以系统时钟为准,设定硬件时钟
[root@centos7-1 ~]# hwclock
Tue 01 Oct 2030 12:59:03 PM CST -0.489770 seconds
[root@centos7-1 ~]# date 012707202021.30
Wed Jan 27 07:20:30 CST 2021
[root@centos7-1 ~]# hwclock -w
[root@centos7-1 ~]# hwclock
Wed 27 Jan 2021 07:20:44 AM CST -0.130455 seconds
[root@centos7-1 ~]# date 010101012022
Sat Jan 1 01:01:00 CST 2022
[root@centos7-1 ~]# hwclock -s # 以硬件时钟为准,设定系统时钟
[root@centos7-1 ~]# date
Wed Jan 27 07:21:12 CST 2021
2.5 lscpu命令
lscpu 显示cpu架构信息
cat /proc/cpuinfo 也可显示cpu架构信息
[root@centos7-1 ~]# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 1
On-line CPU(s) list: 0
Thread(s) per core: 1
Core(s) per socket: 1
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 142
Model name: Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz
Stepping: 10
CPU MHz: 2111.999
BogoMIPS: 4223.99
Hypervisor vendor: VMware
Virtualization type: full
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 8192K
NUMA node0 CPU(s): 0
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ssbd ibrs ibpb stibp fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap clflushopt xsaveopt xsavec xgetbv1 arat spec_ctrl intel_stibp flush_l1d arch_capabilities
2.6 lsblk命令
lsblk 列出块设备信息
常用选项
-f 列出文件系统信息,包含名称,类型,标签,UUID和挂载点
cat /proc/partitions 也可列出块设备信息
[root@centos7-1 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 100G 0 part /
├─sda3 8:3 0 50G 0 part /data
├─sda4 8:4 0 1K 0 part
└─sda5 8:5 0 2G 0 part [SWAP]
sr0 11:0 1 10G 0 rom /media
2.7 free命令
free 显示系统的总内存与以使用内存的大小
常用选项
-h 以人类易读方式显示(M,G,T...),默认以字节大小显示
[root@centos7-1 ~]# free -h
total used free shared buff/cache available
Mem: 972M 124M 545M 13M 302M 659M
Swap: 2.0G 0B 2.0G
2.8 uname命令
uname 显示系统信息
常用选项
-n 显示主机名
-r 显示内核版本
-a 显示所有信息
[root@centos7-1 ~]# uname -a
Linux centos7-1.magedu.org 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
[root@centos7-1 ~]# uname -n
centos7-1.magedu.org
[root@centos7-1 ~]# uname -r
3.10.0-957.el7.x86_64
2.9 ifconfig命令
ifconfig 配置网络接口
常用选项
-a 显示所有网络接口,默认
-s 显示简短列表,等同于netstat -i
-v 如果有错误,显示详细信息
up 开启指定网络接口
down 关闭指定网络接口
[root@centos7-1 ~]# ifconfig eth0 # 显示eth0网络接口信息
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.0.53 netmask 255.255.255.0 broadcast 10.0.0.255
inet6 fe80::4bb8:f97c:3040:e0bc prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:fa:49:49 txqueuelen 1000 (Ethernet)
RX packets 49819 bytes 16321961 (15.5 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 102392 bytes 11731010 (11.1 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0[root@centos7-1 ~]# ifconfig down eth1 # 关闭eth1网络接口
[root@centos7-1 ~]# ifconfig eth1 up # 启用eth1网络接口
2.10 whoami, who, w命令
whoami 显示当前用户
who 显示当前登录系统的用户,终端,登录时间,时长和远端IP地址
w 显示当前主机CPU负载,登录系统的用户,终端,登录时间,时长,远端IP地址和正在执行的命令或程序
[root@centos7-1 ~]# whoami
root
[root@centos7-1 ~]# who
root tty1 2021-01-27 13:33
root pts/0 2021-01-27 14:06 (10.0.0.1)
[root@centos7-1 ~]# w
08:02:42 up 22:56, 6 users, load average: 0.01, 0.02, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 13:33 ? 0.12s 0.12s -bash
2.11 export命令
export 显示和声明环境变量
[root@centos7-1 ~]# export
declare -x HISTCONTROL="ignoredups"
declare -x HISTSIZE="1000"
declare -x HISTTIMEFORMAT="%F %T root "
declare -x HOME="/root"
declare -x HOSTNAME="centos7-1.magedu.org"
......
[root@centos7-1 ~]# export NAME=pete
[root@centos7-1 ~]# echo $NAME
pete