目录
Linux系统概述
为什么要学习Linux
1、大数据的基础运行平台
2、企业里服务器95%以上都是Linux
3、面试必问。
概述:
Linux 内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。
Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。
特点:
1、开源 | 免费开放源代码 |
2、多用户 | 系统可以保证各用户之间的安全、隐私 |
3、多任务 | 同时开启多个应用程序 |
4、良好的界面 | Linux同时具有字符界面(命令行)和图形化界面。DOS当时就是现在的cmd。不存在图形化界面 |
5、支持多平台 | 可以在多种硬件平台上安装和运行,如pc或服务器或嵌入式系统。 |
发行版本:
1、Red Hat | 红帽子操作系统,非常不错的企业级Linux,但是由于该系统收费,很多中小型企业都弃用了。 |
2、CentOS | 它诞生于RedHat企业Linux系统中的免费源代码,简单的说就是把RedHat系统中的收费软件卸载之后重新发布。后加入Red Hat |
3、其他版本 | Ubuntu(最美的linux)、Debian、等 |
应用领域:
国内主要是应用于企业的服务器上,当然还有超级计算机。
国内的大部分环境是,在Windows系统开发,Linux系统上进行部署。
Windows和Linux系统的版本对比:
| Windows(下一步操作系统) | Linux |
界面 | 从古至今,几乎没有发生什么特大变化。 | 每个发行版本都有自己的独特的界面,并且,各发行版本之间的界面互不兼容。 |
驱动 | Windows的驱动一般情况下都有官方提供的版本,但是更新比较频繁。 但是有众多软件支持驱动的安装,比如"驱动精灵"、"驱动人生"。 | 一般官方会提供。 官方没出的,由第三方提供。 |
使用 | 自己点来点去,摸索一下就会用了。 | Linux的图形化界面依然可以保持和Windows系统的学习方式 Linux的命令行界面必须要通过系统的学习才能够掌握。 |
软件 | Windows系统平台同样功能的软件选择性比较多,但是大部分都是商业化软件。 | Linux系统相同功能的软件选择性比较低,但是几乎都是开源的。 vi、vim |
安全 | windows相对来说不是很安全,经常蓝屏和中毒 | linux相对来说就很安全,稳定,在机房一年也不会出问题。 |
Vmware安装Centos7系统
Vmware | 虚拟机,用来模拟一台电脑。 |
如何去创建一台空白的虚拟机(类似于网购一台电脑):
注:以下文档(笔记)中,没有出现的截图,均表示默认执行下一步。
1、通过键盘Ctrl+N来调出新建虚拟机的窗口。
2、如果是新安装的Vmware,那么第一次创建虚拟机时,默认选择的是"典型",由于咱们都是高级人员,所以选择"自定义"安装的方式,可以通过键盘的Alt+C快速选择到"自定义"。
3、显示的Workstation 12.0是由于当前的VMware的主版本号为12。保持默认即可。
4、选择"稍后安装"
5、选择"Linux"、"CentOS 64位"
注:如果VMware版本高于12,会出现Linux不同的版本,选择的时候注意下,截图中的对应版本是"CentOS 7 64位"
6、先修改"虚拟机名称",在修改路径。
7、注意红色标注!
8、剩下的,直接下一步到完成。
如果去安装CentOS系统:
1、Centos7安装包下载
Centos7的安装包可以去官网(The CentOS Project)下载,但速度比较慢。
清华大学开源软件镜像站 | Tsinghua Open Source Mirror
2、放入CentOS系统的iso镜像文件。
2、选择镜像文件。
3、点击"开启此虚拟机"
4、需要重启物理机,在BIOS中开启CPU虚拟化:
如果出现其他的提示,无需理会。
虚拟机打不开,提示“此主机不支持虚拟化实际模式”的解决方法
在VMWare软件中,安装/启动虚拟机时,如果出以类似以下的错误提示:
出现该提示是由于电脑不支持虚拟化技术或是相关功能没有开启导致的。
解决方法有两种:
1)重启电脑,进入BIOS,开启VT虚拟化相关选项,不同品牌的电脑BIOS参数不同,认真看,多尝试。类似如下:
5、解释下图中每行的含义:
1,安装系统
2,检测设备并安装
3,分析解决问题
选择第一个“回车”进行安装。
6、选择语言为“中文”
7、找到“安装位置”点击进行修改,选择将系统安装到哪个磁盘中。
8、选择好我们之前创建好的20G磁盘,然后可以给磁盘进行分区
9、自定义分区
9.1、选择“标准分区”
9.2创建第一个分区,并挂载到“/boot”目录下。大小为200M
9.3创建二个分区,并选择选择挂载点为swap,大小为2048M
9.4创建三个分区,并选择选择挂载点为“/”,大小为全部剩空间(不给具体值就是默认使用全部剩余空间)
10、修改网络配置
10.1修改主机名
11、选择安装类型
12、修改时间
13、修改完,点击“安装”即可
14、安装过程中,需要给系统账户创建密码
在Linux系统中,系统管理员用户名是root,也称为根用户。
15、等待系统安装完成,重启。
13、安装成功
如果出现以下登录界面,表示安装成功。
与CentOS的第一见面
CentOS系统的一个小特点:
安装完成之后,系统如果没有启动网络可以手动启动
启动网卡:
# bash
ifup ens33
表示启动CentOS系统中名为ens33的网卡。
网卡设备名字可以通过ifconfig查询
设置CentOS的网卡开机自启:
# bash
vi /etc/sysconfig/network-scripts/ifcfg-ens33
注释:
vi | linux系统内核自带的文本编辑器 |
etc | Linux系统中所有的配置文件存放目录 |
sysconfig | 系统配置文件的存放目录 |
network-scripts | 网络配置文件的存放目录 |
ifcfg-ens33 | 具体的网卡配置文件 ifconfig:用来查看当前系统的网络连接,类似于Windows的ipconfig |
修改文件内容:
- 按下键盘的"i",进入到了编辑模式,通过方向键移动到该行,将内容修改: ONBOOT=no ==> ONBOOT=yes
- 按键盘esc键,退出编辑模式。输入":wq",保存退出。如果不想保存,可以输入q!,来强制退出。
以上操作就是完成了CentOS系统的网卡开机自启。
CentOS作为服务器使用
centos7系统:
设置静态IP:
1、vi /etc/sysconfig/network-scripts/ifcfg-ens33
2、#将IPV6…..协议都注释;
3、BOOTPROTO=static #开机协议,有dhcp及static;
4、ONBOOT=yes #设置为开机启动;
5、DNS1=114.114.114.114 #这个是国内的DNS地址,是固定的;
6、IPADDR=192.168.168.128 #你想要设置的固定IP,理论上192.168.2.2-255之间都可以,请自行验证;
7、NETMASK=255.255.255.0 #子网掩码,不需要修改;
8、GATEWAY=192.168.168.2 #网关;
重启网卡:systemctl restart network
命令相关概念和目录结构
目录结构:
Linux系统的目录结构图:
我们知道Linux的目录结构为树状结构,最顶级的目录为根目录 /。
其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们。
- 绝对路径:
路径的写法,由根目录 / 写起,例如: /usr/share/doc 这个目录。
- 相对路径:
路径的写法,不是由 / 写起,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成: cd ../man 这就是相对路径的写法啦
Linux系统目录之一些重要的目录:
(家)目录 | /root,/home/{UserName} |
普通用户可执行文件 | /bin,/usr/bin,/usr/local/bin |
系统管理员可执行文件 | /sbin,/usr/sbin,/usr/local/sbin |
配置文件目录 | /etc |
临时文件目录 | /tmp |
存放应用程序和文件 | /usr |
启动linux的核心文件 | /boot |
额外安装软件(mysql)默认为空 | /opt |
服务器数据 | /var , /srv |
系统信息 | /proc,/sys |
共享库 | /lib,/usr/lib,/usr/local/lib |
其它挂载点 | /media,/mnt |
注意:文件或目录名:<=255个字符、区分大小写、不能使用“/”,不允许创建与系统已有的相同名字的目录。因为不好区分,第二点,防止某些软件无法自动进行识别。
命令相关概念:
命令提示符:
[root@localhost ~]# #/root
[chenzhe@localhost ~]$ $/home/chenzhe
从上面两个命令提示符可以看的出来中括号后的符号不同,其中#表示超级权限(管理员/root),$表示普通用户的权限
中括号中的内容分别是:
root | chenzhe | 登录的账户名称 |
@localhost | 主机名 |
~ | 表示当前账户的家目录 |
命令格式:
- 命令、选项、参数之间,必须有空格!
- 执行的时候,命令本身必须存在,选项和参数可有可无。选项和参数也可以有多个的存在。
- 执行时,如果有多个选项,可以拼在一起写:
# bash: ls -a -l 可以写成ls -al
- 执行时,如果有多个参数,参数之间必须有空格隔开
# bash: ls /root /etc
- 执行时可以没有选项、参数的命令
# bash: ifconfig
- 执行是有参数的命令:
# bash: ifup eth0
获取命令帮助:
man | man 命令,优点是,内核自带,缺点,大部分的帮助都是英文 |
--help | 命令 --help 优点是:部分命令提供中文,缺点:不是所有的命令都有这个帮助文件 |
命令大全手册 | |
问度娘 |
和目录相关的常见命令
与目录相关的命令:
pwd | 用于显示当前所在的完整路径 |
mkdir | 用于创建一个目录。 -p 该选项用于创建多级目录。 |
cd | 用于切换目录 | 路径 . 表示当前目录 .. 表示上级(父级)目录 ~ 表示用户的家目录,如果在~跟用户名,就表示要去到该用户的家目录。 "-" 表示与上次所在目录进行切换。 相对路径:相对于当前所在位置而出发的路径。 绝对路径:以/(根目录)开始的路径。 |
ls | 用于显示目录 | 文件的信息 -a:显示所有的文件夹内容(包括隐藏) -l:用于显示文件/夹的详细信息 -h:与-l配合使用,可以显示文件的体积大小(自适应单位b,k,m,g ...) -d:跟上指定的目录时,就会显示该目录的信息,不会显示目录下的文件 |
- mkdir案例:
mkdir 默认只能创建一个级别的目录,如果想要创建多级目录时,需要配合-p选项来使用
# bash: mkdir /root/1/2/3/4/5
此命令必然失败,因为mkdir默认不支持多级目录
# bash: mkdir -p /root/1/2/3/4/5 成功~
- cd 案例:
进入指定用户(zhangssan)的家目录
# bash: cd ~zhangsan
去到/root/目录下(说明:当前在/etc/sysconfig/network-scripts/)
相对路径:
cd ../../../root
绝对路径:
cd /root
cp | 语法:cp [path]/file1 [path]/file2 用于copy(拷贝)文件/夹的命令 如果拷贝的是一个文件夹时,需要配合选项-r来使用 |
mv | 语法:mv [path]/file [path]/ 改名:mv fileName1 fileName2 |
touch | 用于创建一个空白的文本文件,也可以修改文件/夹的时间戳 |
rm | -r 表示递归处理 -f 表示强制执行 |
rmdir | 用于删除目录使用,但只能删除空目录。 |
- cp案例:
拷贝一个文件到别的目录:
# bash
cp /root/install.log /home
cd /home
ls
拷贝整个目录到其它目录下:
# bash
cp -r /root/ /home/ # 将root目录拷贝到home目录下
cp -r /root/* /home # 将root目录下的所有内容拷贝到/home目录下
- mv案例:
移动文件和修改名称
# bash
mv /home/install.log /tmp # 移动文件到/tmp目录下
# bash
mv /tmp/install.log /home/1 # 移动/tmp目录下的install文件到/home目录下,并同时修改文件名为"1"
rename | 语法:rename 修改谁 改成啥样 谁符合条件 批量改名 ? 代表一个字符 ?? 代表两个字符 |
5. rename案例:
通过修改文件名称让文件可以得到一个正确的排序(升序)
# bash
touch foo{1..199}
# 语法:rename 修改谁 改成是样 谁符合条件
rename foo foo0 foo?
修改之后文件名foo1..foo9就变成foo01..foo09
rename foo foo0 foo??
修改之后文件名foo01..foo99就变成了foo001..foo099
此时就完成了文件的排序
运行级别
运行级别:
0 | 关机 shutdown -h now |
1 | 单用户 # 注意该模式下不提供网络连接,所以无法使用超级终端进行连接。 |
2 | 无网络多用户 |
3 | 命令行模式 |
4 | 官方预留,未定义内容 |
5 | 图形化模式 |
6 | 重启 reboot |
Centos7修改默认的运行级别
通过systemctl get-default可获得默认启动的target
systemctl isolate multi-user.target | #在不重启的情况下,切换到运行级别mulit-user下 |
通过systemctl set-default设置默认启动的target
修改为命令行只需执行:
systemctl set-default multi-user.target
修改为图形界面执行:
systemctl set-default graphical.target
Centos7进入单用户模式的方式
当我们设置用户密码时,有可能会忘记,这时如何登陆呢,单用户模式就可以
首先我们进入开机界面,按e进行选择
会进入以下界面,
然后找到图中红线标注的该行,在行尾添加 init=/bin/sh 并将对应的ro权限改为rw权限。(这个原文并没有写,原文他的操作系统和我们的并不一样,但基本上都是标明了ro权限的)
按住Ctrl+x执行
可以进入单用户模式
如图所示,我们还可以修改密码,默认修改root密码,也可以修改其他用户的密码passwd junjind
执行exec /sbin/init 即可退出单用户模式
如何查看当前的运行级别:
# bash
who -r
可以查看当前系统的运行级别和系统时间
runlevel
可以查看之前的运行级别和当前的运行级别。
N表示前面没有运行级别(NULL)
3表示当前处于运行级别。
磁盘(硬盘)
磁盘,它是由一个个盘片组成的,从盘片的结构上来看 图中的一圈圈灰色同心圆为一条条磁道,从圆心向外画直线 ,可以将磁道划分为若干个弧段,每个磁道上一个弧段被称为一个扇区(图中绿色部分)。扇区是磁盘的最小组成单元,常是512字节。
磁盘分区:指定分割区域起始与结束磁柱
磁盘存取的区域 例如A磁柱到B磁柱之间的区块,磁盘在此分割区域内操作系统能够知道它可以在指定区块进行文件读,写,查询等操作
但是需要注意使用硬盘之前需要格式化!
因为每种操作系统所设定的文件属性/权限,以及存放数据的格式有所不同
磁盘在Linux系统中的标识:
hdx(x为从a—d):IDE硬盘(已淘汰,读写速度低并且容量小)
sdx(x为a—z):SCSI,SATA,USB硬盘
例:sda1
表示是系统中的第一块硬盘的第一个分区
sda | 其中a表示第一块硬盘 |
1 | 表示第一个分区 |
主分区与扩展分区:
主分区: | 用于安装操作系统,也可以用于数据的存储 |
扩展分区: | 该分区不能够直接使用,需在此分区上建立逻辑分区才能够使用。 |
逻辑分区: | 该分区只能用于数据的存储,不能用于系统的安装。 |
分区表:
分区表就是支持硬盘正常使用的一个骨架,操作系统是通过它把硬盘划分为若干个区。
MBR | 比较老,有缺陷,由IBM公司提出,此分区表最大支持4个主分区和2TB容量。 |
GPT(GUID) | 取消扩展分区,所有的分区都可以当作主分区。并且支持的硬盘容量18EB。 |
主分区的作用:
最明显的体验就在于某台电脑想要安装多个操作系统时,MBR最多支持4个。
GPT呢,只要硬盘空间允许, 想装多少个系统,开心就好~
MBR和GPT的取舍:
Win7用户建议使用MBR
Win8以上的用户建议使用GPT。
Mac系统使用的GPT格式。
Linux系统的分区表工具:
fdisk -l | 用于mbr分区表 |
parted -l | 用于GPT分区表 |
df -h | 用于查看分区的使用状态,此命令无法查看swap |
磁盘、文件系统
Ext2/Ext3/Ext4区别
Ext*、NTFS和FAT32这三个都是文件系统格式
Linux kernel自2.6.28开始正式支持新的文件系统Ext4
Ext4是Ext3的改进版,修改了Ext3中部分重要的数据结构
Ext3对Ext2,只是增加了一个日志功能
Ext4可以提供更佳的性能和可靠性,还有更为丰富的功能,更大的文件系统和更大的文件。
较之Ext3所支持的最大16TB文件系统和最大2TB文件,Ext4分别 支持1EB(1,048,576TB,1EB=1024PB,1PB=1024TB)的文件系统,以及16TB的文件。
无限数量的子目录
Ext3只支持32,000个子目录,而Ext4支持理论值的无限数量的子目录
延迟分配
Ext3的数据块分配策略是尽快分配,而Ext4是尽可能地延迟分配,直到文件在cache中写完才开始分配数据块并写入磁盘。
如此能优化整个文件的数据块分配,显著提升性能。
快速fsck(文件系统检查)
老的fsck会很慢,因为它要检查所有的索引节点(inode)
Ext4给每个组的索引节点表中添加了一份未使用inode的列表,执行fsck就可以跳过它们而只去检查那些在用的索引
持久预分配(Persistentpreallocation)
常常会预先创建 一个与所下载文件大小相同的空文件,以免未来的数小时或数天 之内磁盘空间不足导致下载失败。Ext4在文件系统层面实现了持久预分配并提供相应的API,比应用软件自己实现更有效率。
SWAP(交换分区)概述
- 使用磁盘来存储内存不够而“溢出来”的内容(拿硬盘空间来存储内存“溢出”的数据)。
- 当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。
- 最容易成为被释放的对象:一些很长时间没有什么操作的程序。 –被保存到Swap空间中。等到那些被换出的程序要继续运行时,再从Swap中恢复保存的数据到内存中。
一般来说可以按照如下规则设置swap大小:
•8G以内的物理内存,SWAP 设置为内存的2倍。
•8G-16G以内的的物理内存,SWAP 等于内存大小或者设置为8G。
•16G-256G 的物理内存,SWAP 设置为实际内存的1/2即可。
系统什么时候会使用swap?
实际上,并不是等所有的物理内存都消耗完毕之后,才去使用 swap的空间,什么时候使用是由swappiness 参数值控制。
- [root@localhost ~]# cat /proc/sys/vm/swappiness
- 30
- [root@localhost ~]#
默认值是60。swappiness=0的时候表示最大限度使用物理内存 ,然后才是 swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。
如何修改swap参数
- 临时性修改:
[root@localhost ~]# sysctl vm.swappiness=10
[root@localhost ~]# cat /proc/sys/vm/swappiness
10
这里我们的修改已经生效,但是如果我们重启了系统,又会变成60.
- 永久修改:
在/etc/sysctl.conf 文件里添加如下参数: vm.swappiness=10
挂载
为什么要挂载,因为文件系统并不能够直接使用。
Windows的文件系统需要盘符来表示
Linux的文件系统需要目录作为入口。
分区的格式就是文件系统。
挂载
mount 文件系统 目录(挂载点)
案例:
挂载光盘镜像文件
# bash
mkdir /home/cdrom # 此处创建目录cdrom并不是非要这个名称,是因为想做到见名知意。
mount /dev/cdrom /home/cdrom
挂载U盘:
需要注意:U盘的格式如果为NTFS,那么需要安装一个插件之后才能够进行挂载,否则无法识别。
yum install ntfs-3g
如果是fat32的,那么可以直接进行挂载。
# bash
mkdir /home/udisk # 此处创建目录udisk并不是非要这个名称,是因为想做到见名知意。
lsblk # 用来查看文件系统
mount -o iocharset=utf8 /dev/sdb1 /home/udisk
上面的命令,其中 "-o iocharset=utf8" 是用于解决U盘挂载之后的字符乱码问题。
取消挂载:
umount 挂载点
可以通过df -h的命令查看当前文件系统的状态。如下图:
umount /home/udisk
无法取消挂载:如图
图中出现的情况是由于当前root账户处于cdrom目录中,所以导致无法取消挂载。还有其他可能是由于别的用户或软件仍在使用该目录中的文件所导致。