liunx系统的开机过程:
开机自检(BIOS):linux主机开机之后,根据主板BIOS中的设备,对CPU内存 显卡 键盘等等设备进行初步检测
检测成功之后,根据预设的启动柜顺序进行系统控制权的移交
一般情况下,转交给本机的硬盘
或者 U启 或者 光驱
需要再Bios中更改设置,默认的都是从硬盘开始
找到硬盘之后,对硬盘进行初步检测,移交系统的控制权到硬盘
MBR引导:
磁盘分区表,记录了系统当中磁盘分区的索引,找到磁盘的分区位置
硬盘当中的第一个硬盘的第一个扇区,识别系统的版本和操作系统的个数
移动控制权的移交,根据引导信息交给启动菜单,grub2(centos7系统) grub菜单
grub菜单:
grub:统一启动加载器,是一个使用最为广泛的多系统引导器程序
显示出当前有几个系统,可以供用户选择
根据用户的选择,进行系统控制权的移交,移交到选择系统的内核文件,系统的控制权到了内核
centos7都是用的grub2
路径是/boot/grub2/grub.cfg
加载liunx内核:
路径/boot/vmlinuz-版本号.el7(支持红帽或liunx7).x86_64(64位操作系统)
预先编译好的特质二进制可执行文件。介于各种硬件资源和系统程序之间
资源分配与调度。调度完之后,资源和程序加载到内存当中
系统控制权移交,systemd(centos7之后的初始化,init是之前的初始化)
systemd进程初始化:
加载到内存当中程序,已并行的方式加载运行。最终等待用户登录
systemd现在变成centos7的初始化方式的原因。就是因为执行方式是并行打开
init串行。就是一个一个执行,相对并行速度慢
管理liunx系统的进程和系统服务的管理器
1.支持并行
2.可以设置开机自启,自动重启服务
3.可以在进程运行期间动态的调整进程参数和资源限制
4.可以解决启动进程的依赖关系
对服务的状态进行管理:
start开启
stop关闭
restart重启
status查看进程状态
enable开机自启
disable关闭开机自启
reload重新加载(进程的配置文件)
systemd按照单元进行控制unit
单元的类型:
service 对进程进行控制
socket 通信套接字 端口号服务,对进程间的端口号进行控制
systemctl stop
start
restart
0 关机
1 单用户模式,一般用于维护时使用,急救模式
2 字符串界面
3 字符串界面
4 字符串界面
5 图形化界面
6 重启
工作中只有:字符界面
init后面跟上数字,可以切换系统的运行级别
runlevel查询系统的运行级别
N是之前没有切换过系统的运行级别
5是 当前的运行级别是5 也就是图形化界面
0:init 0 立刻关机 或者 poweroff
6:init 6 立刻重启 或者 reboot
位置在MBR第一个硬盘的第一个分区的第一个扇区。
第一步创建分区:
新建一个硬盘
到命令行scan刷新硬盘 PS:此命令自行创建的上一章有描述
fdisk /dev/sdb
n 回车 回车 +5G w
mkdir /data
mkfs.xfs /dev/sdb1
mount /dev/sdb1 /data/
上面创建分区上一章有具体描述
dd if=/dev/sda of=/data/mbr.bak bs=512 count=1 #这是对分区进行备份
cd /data/ #查看文件
dd if=/dev/zero of=/dev/sda bs=512 count=1 #这是对分区进行破坏
reboot #重启,在此之前必须将镜像文件配置好且是连接状态
在这选择Troubleshooting
mkdir /backup #创建一个交backup的目录
ls #查看目录是否创建成功
mount /dev/sdb1 /backup/ #将sdb1挂载到backup上
cd backup/ #进入backup
ls #查看是否有之前的备份文件
dd if=/backup/mbr.bak of=/dev/sda #将备份文件给到损坏的分区
exit #退出
进入命令页,因为我们用的是centos7,它用的是grub2所以
cd /boot/
cd grub2/
rm -rf grub.cfg #将grub的配置文件删除
reboot #重启
此页面是重启是快速按esc键,然后选择第三个
然后如上一个模拟故障一样进入急救模式
choroot /mnt/sysimage/ #这是切换到系统的根目录
grub2-install /dev/sda #将grub2引导文件进行重新安装
grub2-mkconfig -o /boot/grub2/grub.cfg #将文件归位
exit #退出
进入急救模式上面模拟有具体进入方法
choroot /mnt/sysimage/ #这是切换到系统的根目录
passwd root #进入后就可以直接修改密码了
exit #退出
reboot#重启
进程:正在运行的代码就是进程
服务:进程提供的特定功能
程序:是一串没有运行的代码
线程:是进程功能的真正执行者
父进程和子进程:
systemd进程是liunx的第一个进程,也是所有liunx进程的父进程
父进程先启动,在启动子进程
父进程给子进程分配资源,让子进程能够正常运行
子进程先结束,父进程回收完子进程的资源之后,父进程才会结束
父进程如果先结束,子进程就会变成僵尸进程
ps -aux #查看进程的方式,静态的查看
a:显示终端上所有的进程 包括其他用户的进程
u:列出进程的用户
x:显示进程的详细信息
user:进程所属的用户
pid:进程的身份标识,id号,唯一,不重复
%CPU:进程占用cpu的百分比
%MEM:进程占用物理内存的百分比
VSZ:进程使用的虚拟内存量,单位是KB
虚拟内存是系统预设的,是为了便于缓解物理内存不足的压力。例如:内存是8G,虚拟内存正常在2-2.5G
RSS:进程占用物理内存的量,单位是KB
TTY:启动进程的终端名。?是表示系统自启,而不是从终端启动的
STAT:进程的状态
S:可被唤醒的休眠状态
R:进程正在运行
D:一直处于休眠状态的进程
T:停止状态,可能是在后台暂停,或者进程处于调试状态
Z:僵尸进程
s:该进程包含子进程
<:该进程处理的优先级高
N:该进程处理的优先级低
l:表示进程有多个线程
+:表示该进程在前台运行
START:触发启动的时间
TIME:进程实际使用CPU运行的时间
COMMAND:进程启动的命令
ps -elf #查看进程的方式,静态的查看
e:显示系统内的所有进程信息
l:详细展示进程信息
f:完整格式显示进程信息
F:内核分配给进程的系统标记
S:进程的状态
UID:进程所属的用户
PID:进程的ID号,唯一的不重复的
PPID:前面一个pid号对应的父进程号
C:表示进程在当前的生命周期内的CPU利用率
PRI:表示进程的优先级,数字越大,优先级越低
NI:谦让值,决定优先级的大小
ADDR:进程在内存当中的地址
SZ:假如进程被换出,需要交换空间的大致的大小
WCHAN:如果该进程处于睡眠状态,则显示睡眠中的系统函数名
STIME:进程启动时的时间
TTY:启动进程的终端名。?是表示系统自启,而不是从终端启动的
TIME:进程实际使用CPU运行的时间
CMD:进程的启动命令
推荐使用:ps -aux
僵尸进程:父进程先结束,子进程,这时候子进程就会变成一个僵尸进程
如果子进程在结束时,父进程已经不在了,而且父进程也没有子进程的资源,此时也会变为僵尸进程
僵尸进程占用系统的资源很少,单个僵尸进程可以忽略不计,但是太多就会有影响
僵尸进程唯一的解决办法就是重启
面试题:
僵尸进程该怎么处理:
回答:只有重启,僵尸进程没有办法通过kill强制结束
cd /opt/ #进入opt目录
vim wait.c #进入僵尸进程的脚本
#include
int main(int argc, char **argv) { pid_t pid;
pid = fork(); if (pid == 0) { // child printf("child pid = %d\n", getpid()); printf("in child...\r\n"); sleep(2); } else if (pid > 0) { // father sleep(10); /* 子进程 2s 钟后提前结束,等待父进程回收其资源,在这期间,子进程处于僵尸状态 */ wait(NULL); } return 0;
}
上面一段是在文件中复制粘贴,这是一个C语言编写的僵尸进程
:wq! #保存退出
yum -y install gcc #因为liunx本身没有C语言环境,所以用yum下载
gcc wait.c -o wait.out #输出这个文件 ./wait.out #查看进程号
在新建的一个页面上对这个进程查看
ps -aux | grep 11196 #此数字是上面查看到的进程号
因为速度有点快可以多操作两遍。就可以变成僵尸进程了
kill:终止进程
kill只是传递信息
kill -9 代表的发送强制结束,立即结束的信号
最终是进程来终止运行的
top:动态查看进程信息
第一行:是任务队列信息
top - 17:03:49 #系统时间
up 1:36 #此系统已经运行时间
1 user #登录的用户上图的上方可以看到我们只开了一个窗口其实也就是一个用户登录
load average: 0.00, 0.01, 0.05 #这是系统负载,单位时间内系统处理的任务数的平均值
1分钟,五分钟,15分钟
第二行:是进程信息
Tasks:179 total #当前系统的总进程数
1 running #运行的进程数量
178 sleeping #睡眠的进程数量
0 stopped #停止的进程数量
0 zombie #僵尸的进程数量
第三行:是CPU信息
按下数字键1:显示所有CPU的信息
us:用户占用的百分比 #很重要
sy:内核占用的百分比
ni:优先级调度占用的百分比
id:空闲值,CPU的空闲百分比 #很重要
wa:磁盘读写性能
hi:1分钟内cpu的使用率
si:5分钟内cpu的使用率
st:15分钟内CPU的使用率
第四行:内存信息
第五行:交换分区的信息
PID:用户的进程号
USER:进程所属的用户
PR:数字越大优先级越低
NI:优先级的谦让值
VIRT:进制占用的虚拟内存
RES:进制占用的物理内存
SHR:共享内存
S:进程状态
%CPU:进程占用CPU的百分比
%MEM:进程占用的内存百分比
TIME+:进程总计占用cpu时间的统计 PS:单位是1除100秒
COMMAND:系统启动的命令
按下c键:按照CPU的大小进行排序。从大到小排序
按下q键:退出到命令行
后台运行 在结尾处添加 & 是后台运行
jobs查看后台运行的进程
-r仅显示正在运行的后台程序
-p显示所有后台进程id号
crontab -e -u
-e:创建定时任务
-u:指定定时任务的用户
crontab -l:查看所有的定时任务
*: *: *: *: *: #这边的:忽略,因为软件问题单独星号打不出
分 时 日 月 周
0-59 0-23 1-31 1-12 0-7 周:0和7都表示星期天
*:表示任意的时间范围
1分钟,3分钟,5分钟:表示间隔的多个不连续的时间点
1-3:表示连续的时间范围
*/10:表示间隔频率,每10分钟执行一次
每天早上的八点三十分,执行cd /opt
30 8 * * * cd /opt
每月的1号上午十点10分 20分 30分 分别执行一次 cd /opt
10,20,30 10 1 * * cd /opt
每月的1号,上午10点20分到40分,都执行 cd /opt
crontab -r:是删除全部的定时任务PS这天命令不推荐
这是删除唯一的办法crontab -e:进入里面一个一个删除
命令:
systemctl start firewalld.service #开启服务
systemctl status firewalld #查看进程
systemctl stop firewalld #关闭服务
systemctl restart firewalld #重启服务
等等类似方法
打不开服务怎么办:
tail -f /var/log/messages #从后往前动态查看日志
iostat:专门的查看磁盘的读写性能
http://t.csdnimg.cn/1Rfum
这有些知识点可以结合这个链接一起看,但是主要还是看这篇就好