引导过程:
按下电源,设备开始启动一直到登录界面,系统开机的过程
服务控制:
开、关、重启、查看状态
一、引导过程:
引导过程就是开机过程
开机自检(BIOS自检):
服务器开机之后,根据BIOS设置,对一系列硬件设备进行初步检测。
有cpu、内存、显卡、外接设备(鼠标键盘)、硬盘
检测成功之后系统会根据预设的启动顺序移交系统的控制权,绝大多数情况都是移交给 硬盘(系统文件和配置在硬盘里)
总结:检测硬件设备,找到系统硬盘,移交控制权到硬盘
MBR引导:
根据第一个硬盘第一个扇区sda1的MBR(主引导记录),找出操作系统所在的分区
把系统的控制权移交给包含系统引导文件的分区,调用grub菜单
控制权转移到grub菜单
grub菜单:
grub菜单:多系统的引导器程序
系统控制权交给grub之后,显示启动菜单供用户选择。
选择完系统之后,系统的控制权会交给所选操作系统的内核文件
centos 7 使用的是grub2启动引导器
总结:获取内核文件的设置和路径,控制权移交给操作系统的内核文件
加载内核:
在/boot目录当中
Linux内核文件,事先编译好的可执行的二进制文件
介于各种硬件资源和系统程序之间
调度以及分派系统资源。给进程使用。
总结:需要的启动文件,和相关的配置操作,放到内存当中。
系统控制权的移交
init进程初始化:
现在都用systemd 初始化
初始化:把刚才加载到内存中的处理配置和处理进程一并执行生效
开机过程结束,等待用户登录
总结:
BIOS自检(检查硬件)——MBR(找操作系统)——grub(选择操作系统)——加载内核(处理配置,处理开机启动程序,放到内存中)——init初始化(系统配置生效,运行开机启动程序,整个过程结束,等待用户登录)
init:init初始化已经被淘汰
串行:他是把系统当中的配置的脚本和启动程序脚本,按照顺序一个一个执行
centos7:systemd 取代传统的init的方式。并行:一起运行
systemd也是Linux当中所有进程中的第一个程序,而且所有其他进程都是systemd的 子进程。
pid:进程号,systemd的进程号是1
centos 7 /usr/lib/systemd/ 1
以前:/sbin/init 1
二、systemd控制方式:
控制方式:控制单元[unit]来进行描述和控制系统服务和资源
单元类型:
.service:指的就是服务,进程提供的特定功能就是服务
.socket:通信套接字,提供端口通信服务
.target:一组服务的集合,描述的是系统的运行级别
systemctl:系统服务控制命令
格式:systemctl 控制类型 服务名称
控制类型:
start:开启
status:状态
restart:重启
改配置文件一定把服务重新加载 restart(先关闭再启动,不要轻易用)
reload:重新加载
不需要关闭进程,直接读取配置。推荐使用reload
stop:停止、关闭服务
enable:开机自启
disable:关闭开机自启
systemctl stop firewalld:关闭防火墙
仅限于实验环境!实际工作中不能关闭防火墙!!!!!
三、服务进程:
running:运行状态
dead:服务已经停止运行
failed:服务有异常,一般来说,是配置文件有错
messages:系统日志,所有的系统运行,控制记录都在这个文件当中
只要服务启动有异常-——看日志
tail -f /var/log/messages 查看异常
四、系统的运行级别:
.target:
Linux
- 关机
- 单用户模式,不需要密码即可登录,用于系统维护
- 字符界面
- 字符界面
- 字符界面
- 图形化界面
- 重启
init 0-6
runlevel:查看系统的运行级别
N:表示之前没有切换过系统的运行级别
5:表示系统的运行级别是图形化界面
工作中只有一个运行级别:3
init快捷命令
init 0 关机
poweroff 关机
init 6 重启系统
reboot 重启系统
五、急救模式实验:
1、更改root密码:
使用之前先设置虚拟机挂载镜像
重启界面,按esc,选择镜像进入
chroot /mnt/sysimage 加载光盘镜像,进入系统的根环境中
2、修复MBR扇区故障:
MBR占第一个硬盘的第一个扇区,若mbr文件被恶意删除,系统找不到硬盘,启动不了
1.先新建一块新硬盘sdc,创建文件系统(建的第一个扇区里面有mbr文件),挂载目录
2.用dd命令将sdc1里面的mar.bak文件复制到sda里面
dd if=/dev/sda of=/data1/mbr.bak bs=512 count=1
——将sda里的mbr.bak文件复制到data1(sdc)里面,先备份,后续还原用
dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。
if=文件名:输入文件名。即指定源文件。
of=文件名:输出文件名。即指定目的文件。
bs=bytes:同时设置读入/输出的块大小为bytes个字节。
count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。
为什么mbr.bak是在data1目录里。
因为目录只是硬盘的载体,实际上data1就是硬盘分区sdc1
- 破坏引导文件
dd if=/dev/zero of=/dev/sda bs=512 count=1
现在sda里面的mbr被破坏了
之后重启虚拟机,到虚拟机里操作
选择急救模式
这里做错了是mbr.bak不是mar.bak!!
前面复制错了下面也做错了,全部改成mbr.bak
之后reboot重启就可以了
六、进程和计划任务管理:
进程管理,进程的真正执行者是线程
就是Linux的任务管理器
计划任务管理:怎么创建定时执行任务
1、静态查看进程:
父进程--子进程
开启进程:父进程先启动---子进程再启动,是由父进程给子进程分配资源----子进程运行启动
结束运行:子进程先结束---父进程会负责回收资源,然后父进程才会结束
若父进程先结束,子进程会变成僵尸进程
ps:查看静态进程的统计信息
ps -aux
a:显示当前终端上的所有进程,包括其他用户的进程
u:列出所有进程的用户
x:显示所有终端的进程信息
user:进程的所属用户
pid:进程的id号 唯一的。 标的:对应的进程名。杀进程,就是啥pid号
%CPU:当前进程占用CPU的百分比
%MEM:当前进程占用物理内存的百分比
VSZ:进程占用的虚拟内存量(kb)
RSS:进程占用的物理内存量(kb)
TTY:表示启动的终端名 ?表示不是从终端打开的
STAT:进程状态:
S:表示该进程处于休眠状态
D:不可中断的休眠状态
R:运行中的进程
T:停止状态
Z:僵尸进程
小写s:表示该进程拥有子进程
<:表示高优先级
N:表示低优先级
+:表示前台运行的进程
l:表示该进程有多个线程
START:该进程启动时间
TIME:进程占用cup的时间/进程使用cup多长时间
COMMAND:进程启动的命令
ps -eif
e:显示系统内所有进程的信息
f:完整格式显示进程信息
l:长格式显示进程信息
F:显示系统内所有进程的信息
S:进程状态
pid:进程的pid号
ppid:进程的父进程的进程号
C:进程生命周期中CPU的使用率
PRI:进程的优先级,数字越大,优先级越低
NI:谦让值,决定优先级的大小
ADDR:进程在内存中的地址
SZ:进程被换出,需要交换空间swap空间的大致大小
WCHAN:显示休眠进程的系统函数名
STIME:进程的启动时间
TTY:启动的终端
?表示系统自启
选择ps -aux用
僵尸进程:
僵尸进程无法被强制结束 kill -9
僵尸进程占用的系统资源很少,对系统没有什么影响
僵尸进程太多怎么处理:只能重启,重启之后全部消失
pstree:以树形结构列出进程的信息(线程)
-a:显示进程所有的完整的信息
-p:查看进程的线程,显示pid号
-u:查看进程所属的用户
pstree -up ‘进程号pid号’ 会这个足矣
利用管道符来查询:
ps -aux | grep ‘httpd’
pstree -up 80011
2、动态查看进程信息:top
load average: 0.00, 0.01, 0.05
单位时间内系统处理的任务数
0.00:一分钟内系统处理的任务数的平均值
0.01:五分钟内系统处理的任务数的平均值
0.05:十五分钟内系统处理的任务数的平均值
第二行:进程信息
Tasks: 176 total, 1 running, 175 sleeping, 0 stopped, 0 zombie
total:当前系统总进程数
running:运行中的进程数
sleeping:休眠中的进程数
stopped:终止的进程数
zombie:僵尸进程数
第三行:CPU的使用情况
%Cpu(s): 0.2 us, 0.8 sy, 0.0 ni, 98.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
us:用户进程占用CPU的大小(管理员、程序、普通用户)
sy:内核占用CPU的大小
ni:优先级调度占用CPU的大小
id:空闲CPU的百分比
先用top看id(空闲百分比)再用ps -aux看%CPU 看哪个进程占用CPU高
wa:表示磁盘读写性能
hi:一分钟的CPU使用率
si:五分钟的CPU使用率
st:十五分钟的CPU使用率
第四行:内存信息 用free -h看直观的多
KiB Mem : 5573340 total, 4646468 free, 398448 used, 528424 buff/cache
total:总共空间
free:剩余空间
used使用空间
buff/cache:缓存
第五行:swap交换空间 也用free -h看
KiB Swap: 5767164 total, 5767164 free, 0 used. 4860268 avail Mem
total:总共swap空间
free:剩余swap空间
used:使用swap空间
avail Mem:可被程序使用的物理内存
PID 进程id
USER 进程所有者的用户名
PR 优先级 --系统优先级
NI 谦让度值。负值表示高优先级,正值表示低优先级 --人为设置的优先级
VIRT 进程使用的虚拟内存总量,单位kb
RES 进程使用的物理内存大小,单位kb
SHR 共享内存大小,单位kb
S 进程状态
%CPU 上次更新到现在的CPU时间占用百分比
%MEM 进程使用的物理内存百分比
TIME+ 进程使用的CPU时间总计,单位1/100秒
COMMAND 命令名/命令行
在top界面
按下数字键1:显示所有CPU的个数的CPU的工作状态
按下c键:根据CPU的使用百分比的大小进行排序(默认就是这个排序)
q:退出
运行一次即可退出:top -b -n 1
相当于静态查看
3、五大负载和优化查看:
CPU负载:了解系统是否过载,优化高CPU负载的进程。
安装epel里安装htop(功能集成,可以kill进程)插看
内存负载:监控内存的工具free(静态)、top(动态)
优化内存:释放一些不必要的内存占用,关闭不需要的服务,释放缓存(清除缓存)
清除缓存命令:echo 1 > /proc/sys/vm/drop_caches (平常不要用,发 版期再用)
☆磁盘负载:监控I/O;input、output,输入输出,读写
用iostat命令监控读写性能
网络负载:
监控网络带宽:iftop监控网络流量(epel)
进程负载:看top里面第三行的us
4、进程管理命令:pgrep
pgrep:用于查找进程pid结合kill命令一块使用 后接进程名
pgrep -a:显示进程名和pid
pgrep -c:仅显示匹配进程的数量,其他都不显示
pgrep -f:匹配进程名和参数
5、kill:杀进程
传递信号给内核,执行终止程序的命令
kill只是一个信号,他传递信号,而不是自己杀,内核处理
kill 进程pid
kill -9:强制杀。表示进程被终止,需要立即退出,慎用
kill -15:告诉进程现在要被终止,请进程自行停止,比较慢
6、jobs:列出后台进程的状态信息
jobs -l:显示所有进程的pid号
jobs -n:仅显示最近的后台进程
jobs -r:仅显示正在运行的后台进程
jobs-s:仅显示已停止的后台进程
7、&:后台运行
cp -a /mnt/opt/ &
命令行结尾加上&符号 表示后台运行,不用等运行完就能操作其他
接收Java、war包时一定要在后面加& 让他在后台运行
有些服务时依赖一些相关的运行程序包,启动的时候一定要后台运行
Ctrl+Z:放到后台,并且停止运行
fg:把后台的程序调度到前台
8、创建定时任务:crontab
crontab -e创建
* * * * *
五个*分别表示:分 时 日 月 周
分:0-59
时:0-23
日:1-31
月:1-12
周:0-7
周日:0 7都能表示
*表示范围内的任意时间
* * * * * 空格隔开
1,3,5* * * * :,号表示多个不连续的时间。第一分钟,第三分钟,第五分钟
1-5* * * *:
*/10* * * *:表示每十分钟执行一次
crontab -e 创建定时任务
打开这个界面:和vim编辑器一样
前面是定时日期 后面是绝对路径
crontab -e -u koeda:为指定用户koeda创建定时任务
crontab -l 查看定时任务
删除定时任务:
crontab -e:进入定时任务,dd一个一个删
清空所有。无法挽回。不能用这个crontab -r:
不在界面显示定时任务,在后台邮件执行:
每个月第一天,早上九点半,清除缓存
30 9 1 * *
每年六月八号的上午十二点半执行
30 12 8 6 *
每个月,每隔十天,每天的早上六点半执行
30 6 *-10 * *
每天的25分 8-11点 ,1月、6月、9月 每周周三执行
25 8-11 * 1,6,9 3
每天10-30分,每天9-10点,每周二执行
10-30 9-10 * * 2
查看邮件:cat /var/spool/mail/root