本节内容主要包括:故障处理,程序与进程的区别、程序与进程的操作
一、故障处理
1、文件系统损坏
模拟故障:dd if=/dev/zero of=/dev/sdd1 bs=512 count=4
英文告警
centos7下的XFS文件系统修复
xfs_repair /dev/sdb1
可挂载:先格式化后挂载
mkfs -t xfs -f /dev/sdb1
mount /dev/sdb1 /mnt/111(使用命令df -Th查看)
centos7下的ext文件系统修复:
fsck -y -t ext4 /dev/sdb1
2.MBR引导扇区故障
模拟故障
1)先备份MBR数据
dd if=/dev/sdb of=/sdbbackup/sdb.mbr.bak bs=512 count=1
假如sdb时系统文件所在磁盘,需要使用光盘镜像进入修复模式。
2)模拟故障
dd if=/dev/zero of=/dev/sdb bs=512 count=1
3)恢复故障
dd if=/sdbbackup/sdb.mbr.bak of=/dev/sdb bs=512 count=1
修复
导入系统盘,开机->F2->bios->boot->cdrom为第一启动顺序
选择trubleshooting选项-->rescue a centos system
选择"1"-->sh-4.2#chroot /mnt/sysimage
bash-4.2#dd if=/sdbbackup/sdb.mbr.bak of=/dev/sdb bs=512 count=1
3.grub引导故障
故障模拟
mv /boot/grub2/grub.cfg /grubbackup ; reboot
驱动操作
查看模块:lsmod
卸载模块:rmmod 模块名称
加载模块:insmod 模块的绝对路径
(find / -name "*模块名称*"
驱动路径:/usr/lib/modules/3.10.0-1160.el7.x86_64/kernel/drivers/)
修复(手动引导操作系统)
1)grub>ls,查看磁盘分区信息,找到boot分区
2)grub>insmod xfs
grub> set root=(hd0,msdos1) (----> 这个为你上一步中找到的boot分区)
grub> linux16 /vmlinuz-xxxxx root=/dev/mapper/centos/root
grub> initrd16 /initramfs-.xxxxx.img
grub> boot
3)将备份好的gurb文件拷贝到/boot/grub2/目录中。或者 在没有备份grub的情况下: grub2-mkconfig --output /boot/grub2/grub.cfg 重新生成grub
4.磁盘资源耗尽
1)磁盘空间不足
清理磁盘或者添加新磁盘
2)inode节点耗尽
查看磁盘inode节点数量:df -i
删除无用文件
二、程序与进程的区别
程序:静态代码,存储在硬盘等介质中
进程:程序运行后在CPU及内存中运行的动态代码;父进程与子进程;
三、程序与进程操作
1.进程概述
进程名 运行用户
PID(process:进程) 进程唯一标识符
运行的命令
2.进程查看命令
ps aux,静态显示正在内存中运行的进程信息
USER PID %CPU %MEM VSZ RSS TTY STAT STARTTIME COMMAND
用户 进程号 CPU占比 内存占比 虚拟内存 固定内存占用 连接终端 状态 开始时间 进程运行的命令
状态:
S:sleep休眠进程
s:表示有很多子进程,表示父进程
R:正在工作的进程
T:已经停止的进程
Z:僵尸进程,zombie,会占用系统资源,主要占用内存资源
< high-priority (not nice to other users)
N low-priority (nice to other users)
L has pages locked into memory (for real-time and custom IO)
s is a session leader
l is multi-threaded (using CLONE_THREAD, like NPTL pthreads do)
+ is in the foreground process group
ps -elf,属于当前登录的所有进程信息
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
标识 状态 用户ID 进程ID 父进程ID CPU 优先权 优先权修正 内存位置 内存占比 -运行 开始时间 终端 占用CPU时间 命令
pgrep ,进程筛选
选项
-o:显示找到的最小进程号
-n:显示找到的最大进程号
-l:显示进程名
-p:指定父进程
-g:指定进程组
-t:指定开启的终端
-u:指定进程有效用户
案例
pgrep -l httpd -u apache
pstree 显示进程树
-a:显示完整信息
-u:显示UID
-p:显示PID号
top,动态显示进程信息
选项
P:根据CPU占用情况显示
M:根据内存占用显示
N:根据启动时间
q:退出
t:切换进程和cpu状态
i:忽略显示僵尸进程
k:终止一个进程
空格:强制更新
说明
top - 19:40:26 up 2:34, 5 users, load average: 0.42, 0.22, 0.16
Tasks: 209 total, 2 running, 207 sleeping, 0 stopped, 0 zombie
%Cpu(s): 14.0 us, 3.8 sy, 0.0 ni, 82.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 997956 total, 73544 free, 732792 used, 191620 buff/cache
KiB Swap: 2097148 total, 1904892 free, 192256 used. 71360 avail Mem
第一行:系统当前时间;已经运行了16天21小时,1个用户登录;系统1/5/15分钟之内的平均负载
第二行:Tasks(总进程数是145);2个正运行的进程;143个睡眠的进程;0个停止;0个僵尸进程
第三行:CPU(用户控件占用CPU的百分比是99.8%),内核占用CPU0.1%;0.0%ni[用户进程空间内改变过优先级的进程占用CPU百分比];0.2%id[空闲CPU百分比], 0.0%wa[等待输入输出的CPU时间百分比];
第四行:Mem(内存)总大小是4G;2.4G被使用;1.6G空闲;158M作为内核缓存(buffer:写入缓冲区);
第五行:Swap(交换分区)总大小5G;用了56k;其余闲置;2G作为读取缓存(cached:CPU刚使用的数据);
3.终止进程
Ctrl+C #终止前台进程
kill 进程号 #终止后台进程;-u指定用户
kill `pgrep firefox` 不关心进程号直接杀死firefox
kill -9 进程号 #强制杀死
pkill 名字 #按照进程名杀死进程
killall httpd #使用进程名杀死一组进程;-l不区分大小写;-u指定杀死用户的进程
4.前台进程与后台进程
前台进程:在终端中直接运行的程序,影响当前终端的使用
后台进程:在后端运行的程序,不影响当前终端使用
前台进程切换成后台进程:firefox &
[1]+ 运行中 firefox &
jobNumber 状态 进程名
查看切换到后台的进程信息:jobs [-l 显示PID]
后台进程调到前台进程:fg jobNumber
暂停前台进程:Ctrl+z
将暂停进程直接调到后台执行:bg jobNumber