一、进程:
进程状态
父子关系
优先级关系:目前有140个优先级(0-139) 100-139 : 用户可控制 0-99:内核调整的。
优先级高的优势:(1)获得更多的CPU运行时间;(2)更优先获得运行的机会;
1、进程ID
PID:Process ID
init: 进程号永远为1
ps:process state
sysv风格:-
BSD风格:
a:所有与终端相关的进程
x;所有与终端无关的进程
进程的分类:
跟终端相关的进程
跟终端无关的进程
进程的状态:
D:不可中断的睡眠
R:运行或就绪
S:可中断的睡眠
T:停止
Z:僵尸状态
<:高优先级进程
N:低优先级进程
+:前台进程组中的进程
l:多线程进程
s:会话进程首进程
ps:
pstree
psgrep
top:
M:根据驻留内存大小进行排序
P:根据CPU使用百分比进行排序
T:根据累计时间进行排序
l:是否显示平均负载和启动时间
t:是否显示进程和cpu状态相关信息
m:是否显示内存相关信息
c:是否显示完整的命令信息
q:退出top
k:终止某个进程
top:
-d:指定延迟时长,单位是秒
-b:批模式
-n #:在批模式下,共显示多少批
vmstat
free
kill
pkill
bg
fg
2、进程间通信
进程间通信(IPC:Inter Process Communication)
共享内存
信号:Signal
Semaphore
重要的信号:
1:SIGHUP :让一个进程不用重启,就可以重读其配置文件,并让新的配置信息生效;
2:SIGINT : Ctrl+c 中断一个进程
9:SIGKILL:杀死一个进程
15:SIGTERM :终止一个进程
指定一个信号:
信号号码: kill -1
信号名称:kill -SIGKILL
信号名称简写: kill -KILL
kill PID
killall COMMCOMM
3、调整nice值:
调整已经启动的进程的nice值:
nice -n NI COMMAND
4、前台、后台
前台作业:占据了命令提示符
后台作业:启动之后,释放命令提示符,后续的操作在后台完成
前台——>后台:
ctrl+z:把正在前台的作业送往后台
COMMAND & :让命令在后台运行
bg:让后台的停止作业继续运行
jobs:查看所有的作业
作业号:不同于进程号
+:命令将默认操作的作业
-:命令将第二默认操作的作业
fg:将后台的作业调回前台
fg [%JOBID]
kill %JOBID:终止某作业
4、vmstat :系统状态查看命令
二、系统启动流程
1、日志系统
Linux系统启动流程
PC:OS(Linux)
POST--> BIOS (Boot Sequence)-->MBR(bootloader,446)-->Kernel()-->/sbin/init()
内核设计风格:
单内核:Linux(LWP)
核心:ko(Kernel object)
微内核:Windows,Solaris(线程)
2、启动的服务不同
运行级别:0-6
0:halt
1:single user mode,直接以管理员身份切入
2:multi user mode ,no NFS
3: multi user mode ,text mode 多用户模式 文本模式
4: reseved mode 保留模式
5:multi user mode ,graphic mode 多用户模式 图形界面模式
6:reboot :重启
3、详解启动过程
BootLoader(MBR)
LILO:Linux Loader
GRUB:GRand Unified BootLoader
stage1:MBR
stage1_5:
stage2:/boot/grub/
grub.conf:
default=0 #设定默认启动的title的编号,从0开始
timeout=5 #等待用户选择的超时时长,单位是秒。
splashimage=(hd0,0)/grub/splash.xpm.gz #grub的背景图片
hiddeenmenu #隐藏菜单
title Red Hat Eeterprise Linux Server (2.6.18-308.el5) #内核标题,或操作系统名称,字符串,可自由修改。
root (hd0,0) #内核文件所在的设备:对grub而言,所有类型硬盘一律hd,格式为(hd#,N):hd# ,#表示第几个磁盘;最后的N表示对应磁盘的分区。
kernel /vmlinuz-2..18-308.el5 ro root=/dev/vo10/root rhgb quiet #内核文件路径,及传递给内核的参数
initrd /initrd-2.6.18-308.el5.img #ramdisk文件路径
4、查看运行级别:
runlevel:
who -r
查看内核release号: uname -r
5、安装grub stage1:
#grub
grub> root (hd0 ,0)
grub> set (hd0)
安装grub第二种方式:
#grub-installl --root-directory=/path/to/boot`s_parent_dir /PATH/TO/DEVICE
三、kernel 初始化的过程
1、设备探测
2、驱动初始化(可能会从initd(initramfs)文件中装载驱动模块)
3、以只读挂载根文件系统;
4、装载第一个进程init(PID:1)
四、init
/sbin/init: (/etc/inittab)
upstart : ubuntu,d-bus, event-driven
systemd:
id:runlevels:action:process
id:标识符
runlevels:在哪个级别运行此行
action:在什么情况下执行此行;
process:要运行程序;
1、ACTION:
initdefault:设定默认运行级别
sysinit:系统初始化
wait:等待级别切换
respawn:一旦程序终止,重新启动
2、/etc/rc.d/rc.sysinit完成的任务:
(1)激活udev和selinux;
(2)根据/etc/sysctl.conf文件,来设定内核参数;
(3)设定时钟
(4)装载键盘映射
(5)启用交换分区
(6)设置主机名
(7)根文件系统检测,并以读写方式重新挂载
(8)激活RAID和LVM设备;
(9)启用磁盘配额
(10)根据/etc/fstab,检查并挂载其他文件系统
(11)清理过期的锁和PID文件;
五、服务类脚本:
start
SysV :/etc/rc.d/init.d
start|stop|restart|status
reload|configtest
chkconfig:
chkconfig:runlevels SS KK
当chkconfig 命令来为此脚本在rc#.d目录创建链接是,runlevels表示默认创建为S*开头的链接,除此之外的级别默认创建为K*开头的链接;
S后面的启动优先级为SS所表示的数字;K后面关闭优先次序为KK所表示的数字;
description:用于说明此脚本的简单功能: \,续行
chkconfig --list: 查看所有独立守护服务的启动设定:独立守护进程
chkconfig --list SERVICE_NAME
chkconfig --add SERVICE_NAME
chkconfig --del SERVICE_NAME
chkconfig --level RUNLEVELS SERVICE_NAME {on|off}
/etc/rc.d/rc.local:系统最后启动的一个服务,准确的说,应该执行的一个脚本
1、 /etc/inittab 的任务
(1)设定默认运行的级别;
(2)运行系统初始化脚本
(3)运行指定运行级别对应的目录下的脚本
(4)设定ctrl+alt+del组合键的操作
(5)定义UPS电源在电源故障/恢复时执行的操作
(6)启动虚拟终端(2345级别)
(7)启动图形终端(5级别)
六、守护进程的类型
独立守护进程
xinitd:超级守护进程:关联至运行级别
瞬时守护进程:不需要关联至运行级别