开机自检:
服务器开机之后,根据bios设置,对一系列的硬件设备进行初步检测,CPU 内存显卡,外界设备鼠标键盘,硬盘。检测成功后,系统会根据预设的启动顺序,移交系统的控制权,绝大数情况都是移交给硬盘,检测硬件设备,找到系统硬盘,然后移交控制权到硬盘
MBR引导:
根据第一个硬盘第一个扇区的MBR(主引导记录)找出操作系统所在的分区,把控制权移给包含系统引导文件的分区,调用grub菜单,控制权转移到grub菜单
grub菜单:多系统的引导器程序。
系统控制权交给grub之后,显示启动菜单供用户选择。选择完系统之后,系统的控制权会移交给所选操作系统的内核文件
centos 7使用的grub2启动引|导器。
/boot/grub2/grub.cfg
获取内核文件的设置和路径
加载内核:
/boot目录当中
linux内核文件,事先编译好的可执行的二进制文件。介于各种硬件资源和系统程序之间,调度以及分配资源,给进程使用。所有需要的启动文件和相关的配置操作放到内存中。系统控制权的移交
Initi进程初始化:
把加载到内存当中处理配置和处理进程一并执行,生效,开机过程结束,等待用户登录
面试简略步骤回答:
bios自检(检查硬----MBR(找操作系统)--- grub (选择操作系统) ----加载内核(处理配置,处理开机启动程序,放到内存中)
----lniti(系统配置生效,运行开机启动程序,整个过程结束,等待用户登录)
init: init初始化已经被淘汰。
申行:他是把系统当中配置的脚本和启动程序脚本,按照顺序一个一 个执行。
centos7 : systemd 取代传统的init方式。并行:一起运行
systemd也是Linux所有进程的第一个进程,所有其他进程都是system的子进程,pid进程号,systemd号是1
ps -elf:查看系统的进程
centos 7 /usr/lib/systemd/ 1
以前: /sbin/init 1
systemd:
控制方式:控制单元[unit],来进行描述和控制系统服务和资源。
单元类型:
service:指的就是服务,进程提供的特定功能就是服务。
socket:通信套接字,提供端口通信服务。
target:一组服务的集合,描述的是系统运行级别
systemctl:系统服务控制命令
systemctl: 控制类型,服务名称
serice控制类型:
start:开启 reload:重新加载(推荐用) disable:关闭开机自启
status :表示进程的状态 stop:停止,关闭服务 reboot:重启
restart: 重启不推荐 enable:开机自启 systemctl restart httpd
restart:改配置文件一定把服务重新加载 reload :不需要关闭进程,推荐用这
systemctl reload httpd
systemctl stop firewalld(关闭防火墙仅限于实验环境)
systemctl status httpd
running:运行状态
dead:服务已经停止运行
failed:服务有异常,一般来说,是配置文件有错
服务异常输入tail -f /var/log/messages:系统日志,所有系统的运行,控制记录都在这个文件中(查日志哪里有问题)
tartget:linux系统的运行级别:
0 -----------关机
1-------------单用户模式,不需要密码即可登录,用于系统维护
2-------------字符界面
3--------------字符界面
4--------------字符界面
5--------------图形化界面
6--------------重启
target
rescue.target
multi-user.target
multi-user.target
multi-user.target
graphical.target
reboot.target
runlevel:查看系统的运行级别
N5 ------------ ---------------N:表示之前没有切换过系统的运行级别
----------------------------5:表示系统的运行级别是图形化界面。
init 0-6: ----------------------工作中只有一个运行级别3
init 0:-------------------------关机
poweroff:-------------------关机
init 6:------------------------重启系统
chroot:----------------------加载光盘镜像,进入系统的根环境
进程和计划任务管理:
进程管理进程的真正执行者是线程,就是linux的任务管理器
静态查看进程:
父进程---子进程
父进程先启动---子进程再启动,是由父进程给子进程分配资源。--- 子进程运行。
结束运行:子进程-结束---父进程负责回收资源
父进程死亡子进程就会变成僵尸进程
ps:
ps -aux
查看静态进程的统计信息:
a:---------显示当前终端上的所有进行进程,包括其他用户的进程
u:---------列出进程的用户
x:---------显示所有终端的进程信息
user:-----------------进程的所有用户
PID :-----------------进程的iD号唯一 标的对应的进程名,进程ID杀进程就是杀PID号
%CPU:--------------进程占用CPU的百分比
%MEM:-------------进程占用物理内存的百分比。
VSZ:-----------------进程占用的虚拟内存量(KB)
RES:-----------------进程占用的物理内存量(kb)
tty:--------------------表示启动的终端名 ?:表示不是从终端开的进程
Stat:进程状态:
S :------休眠状态
d:------不可终止的休眠状态
r:------运行中的进程
t:-----停止状态
z:-----僵尸的进程
time:-----进程占用cpu的时间
小写的s:-------表示该进程拥有子进
<:高优先级
N:低优先级
+:前台运行的进程。
1:进程有多个线程
僵尸进程:
ps -elf(也是静态查看系统进程)
e:---------显示系统内所有进程的信息
l:---------- 长格式显示进程信息
f.- ----------完整格式显示进程信息。
PID:进程 的pid号
ppid:进程的父进程
c: 进程生命周期中CPU的使用率
PRI :表示进程的优先级
NI:谦让值,决定优先级的大小。(数值越大优先级越低)
ADDR:进程在内存中的地址
sz:进程被换出,需要
tty:表示终端的名字
ps -aux | grep "httpd"
僵尸进程:
僵户进程无法被强制结束。
僵尸进程占用的系统资源很小 对系统没有什么影响
僵尸进程太多,只能重启,全部消失
pstree:以树形结构,列出进程的信息(线程)
pstree -up 80011(进程的PID号)
-a:显示进程所有的完成整的信息
-u:查看进程的所属的用户
-p:查看进程的线程
如何动态查看系统进程:top
第一行up:表示系统运行的时间
load average:0.00,0.01,0.05
(0.00)1分钟 (0.01)5分钟 (0.05)15分钟 系统负载:单位时间内系统处理的任务数
第二行tasks :进程信息
total:--------------当前系统的总进程数
running----------运行中的进程
sleeping:--------休眠中的进程
stopped:---------终止的进程数
zombie:----------僵尸进程数。
第三行:CPU的使用情况
%Cpu(s): 0.0us, 0.0 sy, 0.0 ni,100.0id, 0.0wa, 0.0hi, 0.0si, 0.0 st
us :----------------用户进程占用CPU的大小(管理员)
sy:----------------内核进程占用CPU的大小
id :----------------空闲cpu的百分比
wa:-----------------磁盘读写性能
ni :------------------优先级调度占用CPU的大小
top(直接输top即可查看)查看动态进程id 的占用情况 再用 ps -aux查看占用cpu的占比都是高低排
第四行:内存信息 free-h
buff:缓存
第五行:avil mem 剩余物理空间
数字键1(CPU按1):显示所有CPU的个数,和CPU的工作状态
c 键:根据cpu 使用百分百的大小进行排序
q 键退出查看
top -b -n 1:运行一次退出top
进程信息区各列解释:
PID 进程id
USER 进程所有者的用户名
PR 优先级 --系统优先级
NI 谦让度值。负值表示高优先级,正值表示低优先级 --人为设置的优先级
VIRT 进程使用的虚拟内存总量,单位kb
RES 进程使用的物理内存大小,单位kb
SHR 共享内存大小,单位kb
S 进程状态
%CPU 上次更新到现在的CPU时间占用百分比
%MEM 进程使用的物理内存百分比
TIME+ 进程使用的CPU时间总计,单位1/100秒
COMMAND 命令名/命令行
五大负载和优化查看
1cpu负载:了解系统是否过载优化高cpu 负载的进程
第一步:输入 yum -y install top
第二步:输入htop 即可查看CPU负载的进程
2内存负载:
监控内存用的 用free 或者top,优化内存,释放一些不必要的内存占用,关闭不需要的服务,释放缓存。
清除缓存的命令(发版期可以用版本更新开放):echo 1 > /proc/sys/vm/drop_caches
3:磁盘负载:监控I/O:用命令(面试会问):iostat 来监控读写性能
3网络负载:监控网络宽带
第一步:输入yum -y install iftop
第二步:输入iftop 即可查看
5进程负载:
top查看主要查看us 和CPU mem
进程管理
1:pgrep
查找进程pid号,结合命令Kil一块使用,
pgrep -a 进程名 ---------显示进程名的PID号
pgrep -a httpd 显示进程httpd的pid号
grep -c 进程名 仅显示进程的数量,其他不显示
3:Kill的工作原理(并不是执行者):杀进制,传递信号给内核,执行终止程序的命令
Kill只是个信号
Kill -9 :表示进程被终止,需要立即退出
Kill -1 重新加载进程
Kill -15表示正常停止一个进程,告诉进程请自行停止进程
先pgrep -a +进程号 再Kill +进程号
2:jobs
列出后台进程的状态信息
:显示所有后台进程的pid号
-n:仅显示最近的后台进程
-r:仅显示正在运行的后台进程
-s:仅显示已停止的后台进程。
cp -a /mnt/ /opt/ &命令行结尾加上&就是后台运行
生产环境给包这两种: java war
有些服务是依赖一些相关的运行程序包,启动时一定要后台启动 必须加&
ctrl +z 放到后台,并且停止运行
fg : 把后天的程序调度到前台执行
3:crontab 创建计划的命令
*****分别表示 分 时 日 月 周
分---0-59
时---0-23
日---1-31
月---1-12
周---0-7
周日: ---0或者7
*:---表示范围内的任意时间
1,3,5**** 表示多个不联系的时间
1-5****表示 1-5分钟都会执行
*/10**** 表示每10分钟执行一次
crontab -e创建定时任务
打开这个界面:和vim编辑器的操作-样
为指定用户创建定时任务:
crontab -e -u ky32 :为用户ky32创建定时任务
Crontab -l 查看定时任务
用crontab -e 进入定时任务之后 用dd删除你要删定时任务
举例:
1:每个月第一天上午9点30分执行定时任务
30 9 1 * *
2:每年6月8日的上午12点半执行 30 12 8 6 *
3:每个月每隔10天,每天的早上6点半执行 30 6 */10 **
4:每天的25分,8点到11点,1 月6 月9月每周3执行 25 8-11 * 1,6,9 3
cat /var/spool/mail/root:查看日志的命令