Linux系统基础
一、Linux基本了解
Linux发行版本
Linux的发行版本简单来说就是将Linux内核与应用软件打包成为一个新的版本。
常见的发行版本,如下图所示:

Linux vs Windows
Linux和Windows最大的区别就是Linux更多应用于服务器,而Windows更多应用于桌面操作。
主要区别如下所示:
| 比较方向 | ||
|---|---|---|
| 界面 | 界面统一,外壳程序固定所有 Windows 程序菜单几乎一致,快捷键也几乎相同 | 图形界面风格依发布版不同而不同,可能互不兼容。GNU/Linux 的终端机是从 UNIX 传承下来,基本命令和操作方法也几乎一致。 |
| 驱动程序 | 驱动程序丰富,版本更新频繁。默认安装程序里面一般包含有该版本发布时流行的硬件驱动程序,之后所出的新硬件驱动依赖于硬件厂商提供。对于一些老硬件,如果没有了原配的驱动有时很难支持。另外,有时硬件厂商未提供所需版本的 Windows 下的驱动,也会比较头痛。 | 由志愿者开发,由 Linux 核心开发小组发布,很多硬件厂商基于版权考虑并未提供驱动程序,尽管多数无需手动安装,但是涉及安装则相对复杂,使得新用户面对驱动程序问题(是否存在和安装方法)会一筹莫展。但是在开源开发模式下,许多老硬件尽管在Windows下很难支持的也容易找到驱动。HP、Intel、AMD 等硬件厂商逐步不同程度支持开源驱动,问题正在得到缓解。 |
| 使用 | 使用比较简单,容易入门。图形化界面对没有计算机背景知识的用户使用十分有利。 | 图形界面使用简单,容易入门。文字界面,需要学习才能掌握。 |
| 学习 | 系统构造复杂、变化频繁,且知识、技能淘汰快,深入学习困难。 | 系统构造简单、稳定,且知识、技能传承性好,深入学习相对容易。 |
| 软件 | 每一种特定功能可能都需要商业软件的支持,需要购买相应的授权。 | 大部分软件都可以自由获取,同样功能的软件选择较少。 |
Linux目录结构
Linux的目录结构跟Windows有很大的区别,比如:
- Linux:目录结构为树状图结构,一切从根
/目录开始,没有C盘,D盘这种分区概念。 - Windows:以盘符(C:\、D:\) 为根,每个分区有自己的目录树。通常C盘为系统盘。
树状目录结构:

Linux的目录解析:
/:根分区/root:系统管理员(超级用户)的注目录/home:用户的主目录/boot:这里存放引导启动Linux时使用的核心文件
/usr:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于Windows下的program files目录。/dev:这个目录下是所有Linux的外部设备/etc:这个目录里存放着系统最基本的动态链接共享库。/lib:lib是Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。/bin:binary的缩写,存放着最常用的以命令。/sbin:这里存放的是系统管理员使用的系统管理程序。/var:这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下,包括各种日志文件。/opt:这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。/mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。/media:Linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux会把识别的设备挂载到这个目录下。
系统文件
系统文件分类:
EXT4:第四代扩展文件系统,用于存放文件和目录数据的分区
SWAP:交换文件系统,用于为Linux系统建立交换分区
XFS:是一种高性能的日志文件系统,擅长处理大文件
系统启动过程
系统启动过程详情
1.内核引导
首先是BIOS开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启动。
操作系统接管硬件以后,首先读入/boot目录下的内核文件。
2.运行init
init进程是系统所有进程的起点,没有这个进程,系统中任何进程都不会启动。
3.运行级别选择
init程序首先是需要读取配置文件/etc/inittab。
0:关机状态,使用该级别时将主动关机
1:单用户模式,不需要密码验证即可登录系统,多用于系统维护
2:字符界面的多用户模式(部支持访问网络)
3:字符界面的完整多用户模式,大多数服务器主机运行在此级别
4:未分配使用
5:图形界面的多用户模式
6:重新启动
系统运行级别:init命令
命令格式:init【模式级别数】
比如关机,示例如下
init 0
默认启动的级别:
CentOS:
修改/etc/inittabl文件把参数改为你要每次默认启动的级别
Ubuntu:
修改/etc/default/grub把GRUB_CMDLINE_LINUX_DEFAULT改成你每次默认启动的级别
也可以直接命令:systemctl set-default multi-user.target(这里改成默认命令行模式)
二、vi/vim文本编辑器
所有的Unix Like系统都会内建vi文书编辑器,其他的文书编辑器则不一定会存在。
vim是从vi发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,我们基本都是使用这个软件编辑文本文件。
温馨提示:在linux中会经常使用这两个文本编辑器
基本上 vi/vim 共分为三种模式,命令模式(Command Mode)、输入模式(Insert Mode)和末行模式(Command-Line Mode)。
命令模式
启动vi/vim命令进入命令模式

切换模式方式:
输入以下指令进入就可以输入模式:
a:输入到光标所在后面i:输入到光标所在后面o:输入到光标所在下一行A:光标跳到行尾I:光标跳到行首O:输入到光标所在行的上一行
输入:则可以进入末行模式:::切换末行模式
命令模式其他文本操作
删除操作:
Dd:删除光标所在行(删了不保留行数)DD:删除光标所在行(删了保留行数)Ndd:批量删除 , n是具体数字(从光标出向下n行)d^:删除当前光标到行首的所有字符d$:删除当前光标到行尾的所有字符
复制操作:yy:复制当前行nyy:批量复制 ,n是具体数字(从光标出向下n行)
粘贴操作:p:粘贴 粘贴到光标位后P:粘贴 粘贴到光标位前
撤销操作:u:撤销一次编辑U:撤消当前行所有的编辑
保存操作:ZZ:保存并退出
输入模式

切换模式方式:
ESC键退出输入模式
末行模式

切换模式方式:
删除所有内容退出末行模式模式
末行模式命令操作
w:保存文件q:退出vim编辑器wq:保存文件并退出vim编辑器q!:不做任何修改,不保存强制退出vim编辑器e:是在当前打开的文件中,打开新的文件r:是在当前打开的文件中,读入新的文件(复制到光标所在前)
替换文件内容:
:sub /old/new:将光标所在行中第一个old换成new:n,m sub /old/new:将第n-m行的第一个old换成new:% sub /old/new:将所有行的第一个old换成new:% sub /old/new/c:将所有行的第一个old换成new , 并提示确认:% sub /old/new/g:将所有行的old换成new:set nu显示行号
三、Linux基础网络设置
查看和测试网络常用命令
查看网卡网络信息:ip addr、ifconfig
查看计算机名称:hostname
查看路由表条目(查看网关):route
测试网络连接状况:ping
测试地址端口连通状况:telnet
查看系统的端口连接状态、路由表、接口统计系统:netstat
查看端口、进程信息:lsof
跟踪数据包(Windows下命令为tracert):traceroute
域名解析(Windows命令一致):nslookup
补充说明:
1.ifconfig、netstat需要安装net-tools安装包
2.lsof需要安装lsof安装包
网络参数的设置
1.使用命令设置
#设置IP地址:
ifconfig eth0 192.168.100.100 netmask 255.255.255.0
ifconfig eth0 192.168.100.100/24
#开启或关闭网卡:
ifconfig eth0 up/down
#设置电脑虚接口ip:
ifconfig eth0:1 192.168.100.101
#route:设置路由记录
#设置到哪个网段的路由表:
route add -net 192.168.3.0 gw 192.168.3.1
#删除路由记录:
route del -net 192.168.3.0
#设置默认路由:
route add default gw 192.168.1.1
#删除默认路由:
route del default gw 192.168.1.1
注意:命令为临时设置,下次重启就会被消除
2.配置网卡文件
网卡配置文件位置(CentOS6、CentOS7):/etc/sysconfig/network-scripts/ifcfg-xxx
网卡配置文件位置(Ubuntu):/etc/network/interfaces
DNS服务器地址设置的配置文件位置:/etc/resolv.conf
网卡配置参数
CentOS6、CentOS7:
vim /etc/sysconfig/network-scripts/ifcfg-ens33
----------------------------------------
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static #静态设置方式,还可以dhcp方式
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33 #网卡名字
UUID=61d8955f-3d32-4b4f-866e-1e98635f7cb4
DEVICE=ens33 #设备名字
ONBOOT=yes #是否开启网卡
IPADDR=192.168.31.101 #ip地址
NETMASK=255.255.255.0 #子网掩码
GATEWAY=192.168.31.1 #网关地址
DNS1=192.168.31.1 #DNS服务器地址
Ubuntu:
vim /etc/netplan/01-network-manager-all.yaml
----------------------------------------
network:
version: 2
renderer: NetworkManager
ethernets:
ens33: #网卡名字
dhcp4: false #是否开启dhcp
addresses: [192.168.31.102/24] #ip地址
gateway4: 192.168.31.1 #网关地址
nameservers:
addresses: [192.168.31.1,8.8.8.8] #DNS服务器地址
3.配置本地host文件
格式为:【IP地址】【主机名称】
vim /etc/hosts
-----------------
192.168.31.101 master
192.168.31.102 node
服务器域名解析顺序会先读取本地hosts文件,然后再访问DNS服务器,再访问根服务器