Linux进程管理与系统程序补充篇
目录
2.3.1、 ps aux,静态显示正在内存中运行的进程信息
一、系统程序补充篇
(一)root密码修复
前文我们已经学习了一个最简单的进入grup引导界面修改root用户密码的方式,但是实际应用过程中,grup引导界面是可以锁定的,我们就需要掌握其他方式进行更改密码,下面简单讲述一下其他两种方式的忘记root用户密码更改密码的方式。
第一种方式
1)在系统系统时,按方向键让界面停在grub引导界面上
2)按"e",找到"linux16"所在行,在最后添加 rd.break,然后按"ctrl+x"
3)switch_root#mount -o remount,rw /sysroot
switch_root#chroot /sysroot
switch_root#export LANG=c
slswitch_root#passwd root
switch_root#touch /.autorelabel
4)switch_root#exit
sh-4.2#init 6
第二种方式
使用centos自带的修复模式
U盘或者光驱导入系统盘,开机->F2->bios->boot->cdrom或者USB为第一启动顺序,选择trubleshooting选项-->rescue a centos system
选择"1"-->sh-4.2#chroot /mnt/sysimage
bash-4.2#passwd root-->exit
修改bios,调整正确的启动顺序
(二)文件系统损坏
模拟故障:dd if=/dev/zero of=/dev/sdb1 bs=512 count=4
centos7下的XFS文件系统修复:
先将其格式化为xfs格式
umount /dev/sdb1
xfs_repair /dev/sdb1
centos7下的ext文件系统修复:
umount /dev/sdb1
fsck -y -t ext4 /dev/sdb1
经过验证已经可以正常使用
(三)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
(四)grup引导故障
故障模拟
mv /boot/grub2/grub.cfg /grubbackup ; reboot
驱动(模块)操作
查看模块 lsmod
卸载模块 rmmod 模块名称
加载模块 insmod 模块的绝对路径
修复(手动引导操作系统)
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
输入reboot进行重启验证
(五)磁盘资源耗尽
1)磁盘空间不足:清理磁盘或者添加新磁盘
2)inode节点耗尽( 查看磁盘inode节点数量:df -i ):删除无用文件
3)预防磁盘资源耗尽的最好办法:进行磁盘配额
二、进程管理
(一)程序与进程的区别
程序:静态代码,存储在硬盘等介质中。
进程:程序运行后在CPU及内存中运行的动态代码;父进程与子进程。
(二)进程概述
进程分为:进程名、运行用户、PID(process:进程):进程唯一标识符、运行的命令
(三)进程查看命令
2.3.1、 ps aux,静态显示正在内存中运行的进程信息
状态:
S:sleep休眠进程
s:表示有很多子进程,表示父进程
R:正在工作的进程
T:已经停止的进程
Z:僵尸进程,zombie,会占用系统资源,主要占用内存资源
< 高优先级(对其他用户不友好)
N 低优先级(对其他用户有利)
L 将页面锁定在内存中(用于实时和自定义IO)
s 是指一个进程作为一个会话的领导者
l 是多线程的
+ 是否在前台进程组中
2.3.2、 ps -elf,属于当前登录的所有进程信息
2.3.3、 pgrep ,进程筛选
选项
-o:显示找到的最小进程号
-n:显示找到的最大进程号
-l:显示进程名
-p:指定父进程
-g:指定进程组
-t:指定开启的终端
-u:指定进程有效用户
2.3.4、 pstree 显示进程树
-a:显示完整信息
-u:显示UID
-p:显示PID号
2.3.5、 top,动态显示进程信息
选项
P:根据CPU占用情况显示
M:根据内存占用显示
N:根据启动时间
q:退出
t:切换进程和cpu状态
i:忽略显示僵尸进程
k:终止一个进程
加入进程号终止进程
空格:强制更新
top动态显示进程说明
第一行:系统当前时间2点28分04秒;已经运行了19分,2个用户登录;系统1/5/15分钟之内的平均负载为0.04/0.10/0.13
第二行:Tasks(总进程数是303);1个正运行的进程;302个睡眠的进程;0个停止;0个僵尸进程
第三行:CPU(用户控件占用CPU的百分比是0.3%),内核占用CPU0.0%;0.0%ni[用户进程空间内改变过优先级的进程占用CPU百分比];99.7%id[空闲CPU百分比], 0.0%wa[等待输入输出的CPU时间百分比];0.0%hi[CPU处理硬件中断的时间比例];0.0%si[CPU处理软件中断的时间比例];0.0%st[来自虚拟机等待物理CPU资源的时间比例(虚拟化技术)]。
第四行:Mem(内存)总大小是1.86G;0.1G被使用;1.05G空闲;703M作为内核缓存(buffer:写入缓冲区);
第五行:Swap(交换分区)总大小2.1G;其余闲置2.1G;用了0.03M;0.58G作为读取缓存(cached:CPU刚使用的数据);
(四)终止进程
Ctrl+C #终止前台进程
kill 进程号 #终止后台进程;-u指定用户
top查看进程号
kill `pgrep firefox` 不关心进程号直接杀死firefox
kill -9 进程号 #强制杀死
pkill 名字 #按照进程名杀死进程
killall httpd #使用进程名杀死一组进程;-l不区分大小写;-u指定杀死用户的进程
(五)前台进程与后台进程
前台进程:在终端中直接运行的程序,影响当前终端的使用
后台进程:在后端运行的程序,不影响当前终端使用
前台进程切换成后台进程:firefox &
查看切换到后台的进程信息:jobs [-l 显示PID]
[1]+ 运行中 firefox &
jobNumber 状态 进程名
后台进程调到前台进程:fg jobNumber
暂停前台进程:Ctrl+z
将暂停进程直接调到后台执行:bg jobNumber