美国麻省理工学院(MIT),通用电气公司(GE),贝尔实验室AT&T,合力开发mnltics系统,没有成功
1969年
肯.汤普森在DECPDP-7机器上开发出Unix系统
1971年
肯.汤普森和其同时丹尼斯里奇发明C语言
1973年
Unix绝大部分用C语言重写,提高了可移植性
1987年
谭宁邦教授开发了minix系统,并开发源代码
1991年
李纳斯开发Linux系统
Unix发行版本
操作系统
公司
硬件平台
AIX
IBM
PowerPC
HP-UX
HP
PA-RISC
Solaris
SUN
SPARC
Linux版本分类
内核版
www.bemel.org
2.6.32版本
RHEL6
3.10.x版本
RHEL7
发行版
Redhat系列
个人版
fedoras桌面版
企业版
RHEL(RedhatEnterpriseLinux)其中包括(turboLinux,mandriva,centos,suse,fedora,gentooLinux)
Debian系列
Ubuntu(开发人员常用,软件多,图形界面好看)还有KNOPPIX
开源软件
软件名
作用
Apache
web服务器
Nginx
MySQL
数据库
MongoDB
NOSQL数据库(用于提升MySQL数据库性能还有redis)
PHP
脚本语言
Python
Ruby
Samba
Linux和Windows之间内网文件服务器
Sphinx
中文分词
#GPL:使用的软件是开源的,做出的软件也必须开源
分区
1."/"根分区(工作中一般分200G左右)
2."swap"交换分区(也就是虚拟分区)真实内存小于4G,swap分区分2倍大小,真实内存大于4G,swap分区分内存一样大小
3."boot"启动分区,建议200M大小
格式化
写入文件系统
设备文件名
/dev/sda等
挂载点
/mnt/media/misc访问分区的路口,使用已建立的空目录作为挂载点
IP地址配置步骤
vim/etc/sysconfig/network-scripts/ifcfg-eth0
ONBOOT=
开机启动网卡配置,默认no,需要改为yes
BOOTPROTO=
默认IP获取方式,默认dhcp,更改为none或static(静态)
IPADDR=
ip
NETMASK=
子网掩码
GATEWAY=
网关
DNS1=
DNS
Root目录默认文件
文件名
install.log
安装了哪些软件包记录
install.log.syslog
增加的用户和用户组
Anaconda-ks.cfg
系统安装步骤(批量安装模板)
1
Linux中严格区分大小写,没有大小命令,有大写选项
2
Linux下所以内容都是以文件形式保存
3
Linux不靠扩展名区分文件类型
4
所有存储设备必须挂着之后才能使用
5
Windows的程序不能直接在Linux下安装
6
修改配置文件,永久生效
服务器注意事项
远程服务不允许关机,只能重启(服务器大多在异地)
服务器重启时应该关闭服务(保护硬盘)
不要在服务器访问高峰运行高负载命令(最好在凌晨4-5点)
远程配置防火墙时不要把自己踢出服务器(配置时,写定时任务,定时清除防火墙配置)
指定合理的密码并定时更新
合理分配权限
7
定期备份重要数据和日志(异地多次分布保存)
链接命令注意事项
命令
ln选项源文件连接文件名
硬链接
1.拥有相同的inode和block,可以看出相同文件
2.修改任何一个文件,另一个文件也会改变
3.删除其中一个文件,另一个文件还能使用
4.不能链接目录
5.不能跨分区链接
6.两个文件特征不明显,不推荐使用
软链接
1.有自减的iNode和block,但block中不记录实际数据,只写入源文件的文件名和inode号
3.删除源文件,软链接无法使用
4.无论源文件多大,软链接大小不变
5.软链接拥有最大权限,但访问受源文件权限限制
6.能跨分区链接
7.能链接目录
8.特征明显,推荐使用
源码包:编译安装(C语言,Java语言)
优点:
1、开源,有能力可以自己修改
2、可以自由选择所需要功能
3、软件是编译安装,更适合,更高效,更稳定
4、卸载方便
缺点:
1、安装步骤较多,容易出错
3、因为是编译,报错新手难以解决
二进制包
二进制包分类:直接安装(PHP,Python,shell)
1、deb包
2、RPM包
1、包管理简单,只通过几个命令就可以实现包的安装,升级,查询和卸载
2、安装速度比源码包安装快的多
1、经过编译,不能再看到源代码
2、选择不如源码包灵活
3、依赖性,树状依赖,环形依赖,模块依赖
语言分类(根据安装方式)
编译语言:C语言,Java语言
脚本语言:shell,php,Python
软件包选择原则
1、如果软件是有大量客户端访问的,选择源码包安装,效率高,稳定
2、如果软件访问量少或本机使用,选择rpm包,安装简单
包名使用
1、如果操作系统已经安装的软件包,使用包名,因为包名存在RPM包数据库中,不需要路径查找,数据库位置\var\lib\rpm\
2、如果操作系统未安装的软件包,使用包全名,需要绝对路径
RPM-V包名#检验已安装包的信息
S
安装包大小是否改变
M
文件类型或权限是否改变
MD5是否改变
D
设备中,从代码是否改变
L
文件路径是否改变
U
文件所有者是否改变
G
文件所属组是否改变
T
c
配置文件
d
普通文档
g
鬼文件,不应该存在的文件
l
r
描述文件
访问控制列表,为单一的用户或者组设置对文件或者目录的独立权限
开启ACL
1、确认文件系统(分区)是否支持ACL
dumpe2fs分区|grepacl
2、开启(激活)ACL权限
手动:mount-oremount,acl/#临时生效
自动:a、修改/etc/fstab,在default后天就acl
b、mount-oremount/#永久生效
3、查看ACL
getfacl文件名(获取文件的ACL权限列表)
4、设置ACL
setfacl-mu:用户名:权限文件名(增加ACL权限)
setfacl-xu:用户名文件名(删除ACL权限)
setfacl-b文件名(清空ACL权限,包括mask)
setfacl-mm:权限(防止acl权限过大)
setfacl-R-mu:用户名:权限文件名(递归设置)
setfacl-d-mu:用户名:权限目录名(目录权限继承)
为什么要学习shell脚本?
将较为复杂的实验操作流程和重复度很高的实验流程变为脚本执行
提高执行效率、减少了错误的发生(遗漏、单词错误)
将原本人手动操作的流程,写成脚本,按照人执行的顺序自动执行
将数值、名称、命令的结果、文本内容、等传递到脚本内(变量)
shell的表现形式:
history
-c#清空历史命令(清空缓存;默认:1000条)
-w#将缓存中的历史命令保存到配置文件中
~/.bash_history#永久保存历史命令(默认:1000条)
!数值#调用指定条数的历史命令
↑↓光标键#调用原来执行过的历史命令
!关键词#调用最近一次以此关键词开头的历史命令
!!#执行上一次命令
命令别名
查看:alias
设置:alias别名='真实命令-选项'
永久保存:
单个用户:~/.bashrc
所有用户:/etc/bashrc
需要重新加载配置文件别名才能立刻生效:
source~/.bashrc
命令执行顺序:
1./bin/ls
2.ls='ls--color=auto'
3.shell内置命令
4.根据环境变量查询命令所在位置(PATH)/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/nginx/sbin
缓存:系统自动为已存在的命令设置了缓存,当目录发生变化时,缓存和实际位置不一致,导致找不到命令
whiletrue(无限循环)
do
语句
done
while:(无限循环)
....
exit退出脚本
break退出循环
contnue结束当次循环
卷组(VG,VolumeGroup):将多个物理卷组合在一起组成了卷组
格式:vgcreate选项卷组名物理卷名(可以写多个,空格分开)
-s大小:指定VG的PE大小
逻辑卷(LV,LogicalVolume):把卷组理解为硬盘的话,那么我们的逻辑卷则是硬盘上的分区,逻辑卷可以进行格式化,存储数据
注:因为逻辑卷相当于是分区,所以需要进行格式化和挂载才能使用,及自启动
注:修改lv及文件系统的大小,必须先将lv及文件系统卸载(umount)
lvextend-L+10G/dev/testvg/testlv#先增加lv的大小
resize2fs-f/dev/testvg/testlv30G#再修改文件系统的大小
注:减少lv空间的操作是有风险的,操作之前一定要做好备份,以免数据丢失。
e2fsck-f/dev/vg/lv#检查文件系统
resize2fs/dev/vg/lvnewsize#减少后文件系统大小
lvreduce-Lnewsize/dev/vg/lv#减少后lv大小
物理扩展(PE,PhysicalExtend):PE卷组的最小存储单元,PE所在的位置是VG卷组,即硬盘上,那么我们可以把PE理解为硬盘上的扇区,默认是4MB,可自由配置
lvextend-L15G/dev/clustervg/clusterlv#从10G增加到15G
基本上runlevel分为0-6,7个等级:
0:关机,shutdown
1:单用户模式(sigleuser),root用户,无须认证;维护模式
2:多用户模式(multiuser),会启动网络功能,但不会启动NFS;维护模式
3:多用户模式(multiuser),完全功能模式;文本界面
4:预留级别:目前无特别使用目的,但习惯同3级别使用
5:多用户模式(multiuser),完全功能模式,图形界面
6:重启模式
启动流程
加电BIOS自检
1、主要检测主机硬件设备如:CPU、内存、硬盘、显卡等是否正常
2、BIOS中设置的系统启动顺序来搜索可启动的磁盘设备(光盘、硬盘、U盘)
3、搜到第一个可启动的设备后就读取该设备的第一个扇区的内容并执行
系统引导
以MBR为例:
1、BootLoader(446b)查找内核位置
GRUB通过hd0,0找到了存放grub.conf的位置
2、识别分区表(64b)
查看所有分区的大小和结构
GRUB功能
1、选择要启动的内核或系统
2、提供交互式接口(e编辑模式)
3、提供密码保护
kenrel启动
1、加载vmlinuz:压缩的kenrel程序,即内核,
2、一部分驱动程序会被直接编译进内核文件中
3、另一部分驱动程序会以模块的形式放在initrd中
6、内核被加载到内存中立即初始化系统中的设备,包括CPU、I/O、存储等
7、内核会以只读的方式挂载根文件系统,并且运行第一个程序/sbin/init
init启动(系统守护进程)
/sbin/init进程是系统第一个启动的程序,它是其他所有进程的父进程。首先会去读取/etc/inittab文件来执行相应的脚本进行系统初始化,如设置键盘、字体,装载模块,设置网络等,在niittab中有一个很重要的设置选项runlevel。根据runlevel的不同启动不同的服务,让Linux的使用环境不同
1、执行系统初始化脚本(/etc/rc.d/rc.sysinit),对系统进行基本的配置,以读写方式挂载根文件系统及其它文件系统,到此系统算是基本运行起来了,后面需要进行运行级别的确定及相应服务的启动
/etc/rc.d/rc.sysinit功能:
设置主机名
打印文本欢迎信息
激活selinux和udev
激活swap
挂载/etc/fstab中定义的本地文件系统
检测根文件系统并以读写方式重新挂载
设置系统时钟
装载键盘映射
根据/etc/sysctl.conf设置内核参数
激活软RAID和VM设备
清理操作
2、执行/etc/rc.d/rc脚本,该文件定义了服务启动的顺序是先K后S,而具体的每个运行级别的服务状态是放在/etc/rc.d/rc*.d(*=0~6)目录下,所有的文件均是指向/etc/init.d下相应文件的符号链接。rc.sysinit通过分析/etc/inittab文件来确定系统的启动级别,然后才去执行/etc/rc.d/rc*.d下的文件
4、最后一步输入用户名及密码就可以登入系统了
日志文件
说明
/var/log/cron
/var/log/cups
记录打印信息的日志
/var/log/dmesg
记录了系统开机时内核自检的信息,也可以使用dmesg命令
/var/log/btmp
记录错误登入日志,只能用lastb命令查看
/var/log/wtmp
永久记录所有用户的登入,注销信息,和系统启动,重启关键事件,last查看
/var/log/utmp
记录用户当前登入信息,用w,who,users等命令查看
/var/log/lastlog
/var/log/maillog
/var/log/message
记录系统重要的日志,系统出错,先查这个日志
/var/log/secure
rsyslog所管理的一些服务
服务名称
auth
authpriv
cron
系统定时任务cront和at产生的日志
daemon
ftp
ftp守护进程产生的日志
kern
内核产生的日志,不是永恒进程产生的
local0-7
为本地使用预留服务
lpr
打印产生的日志
邮件收发信息
news
syslog
syslogd服务产生的日志信息,
user
用户等级类别的日志信息
uucp
uucp子系统的日志信息,早期指数据传递协议,现常用在新闻组服务中
原理:logrotate主要是针对rsyslog服务所管理的日志,也包含以下RPM包服务日志
/etc/logrotate.conf#主配置文件中的设置进行轮替规则
/etc/logrotate.d/*#一些rpm包的日志管理文件轮替规则
需要备份哪些数据
日志、用户配置文件、服务配置文件
备份策略
同端备份:在同一个主机的不同目录下备份(安全等级较低,恢复快速)
多端备份:将数据存放在不同的设备上备份(安全等会较高)
异地备份:灾备(异地容灾备份)在不同的地域进行数据备份(安全等级较高,备份和恢复难度较大)
云端备份:安全等级特别高,数据安全性不是很高,对象存储:AWS:s3ali:OSS腾讯:COS
备份类型
原则:在不影响正常的业务的运行情况下进行备份
冷备:在数据停止写入后,进行数据备份
温备:停止某一部分的数据的写入,进行备份
热备:数据在持续读写过程中进行备份
备份方式
完整备份:将所有数据都复制一份
增量备份:
备份等级0-9,每次备份前一次数据增加量,备份压力很小,恢复过程复杂(按照指定顺序)
差异备份:
备份等级0-1,每次备份前一次备份数据和增加的数据,备份压力逐渐增大,但是安全等级较高
差异备份+轮询机制:
恢复:只要恢复两次
restore-r-f/root/boot.dump.bz2
restore-r-f/root/boot1.dump.bz2
查看命令
dump-W#查看dump备份记录,只要挂载分区是才有记录
cat/etc/dumpdates#查看dump备份记录,只要挂载分区是才有记录
程序:永久存在的!
进程:程序运行的过程
线程:程序具体用来处理每一个任务的过程
程序(配置文件)-->进程(主进程)-->进程(子进程)-->线程(处理任务)