【Linux学习】课时9 进程和启动管理

曾巧文 发布于:2012-5-3 20:04 分类:Linux学习 标签: Ubuntu linux 课时

进程和启动管理

进程和启动管理

掌握Linux进程作业管理命令

理解Linux系统启动过程

掌握Linux进程作业管理命令

理解Linux系统启动过程

2、进程管理命令

进程概述

进程是一个正在执行的程序;是计算机中正在运行的程序实例;是可以分配给处理器并由处理器执行的一个实体。

进程的状态转换

 

3、进程管理命令

Linux进程Process概述

进程的ID : PID ;  父进程的ID : PPID

比如:某个用户登录shell,并在该shell下执行find命令,则find命令的PPID就是该shellPID

所有的进程都是PID1init进程的后代,都通过PID0进程调度进程调度管理。

父进程撤销时,子进程也撤销;如此时子进程未撤销,则称该子进程为孤儿进程(僵死状态)

进程的权限 : 由启动该进程的用户权限决定

比如:root执行某个命令,则创建的这个进程的权限是UID/GID=0/0,不同的用户登录系统时,启动的Shell进程的权限也就自然不同了。

4、进程管理命令

进程查看命令 : ps (process state)

查看本shell下的进程:ps -l

显示说明:

PID : 进程ID(PPID : 父进程的ID)

TTY : 登录的终端号

TIME : 使用的CPU时间 (C : 占用CPU百分比)

CMD : 所执行的命令

F / S : 进程的flag标志和state状态

PRI / NI : priority/nice, priority值越小,进程优先级越高。PRI(new)=PRI(old)+NI

SZ : size, 进程用掉的内存大小

5、进程管理命令

进程查看命令 : ps (process state)

查看内存中的所有进程:ps aux

显示说明:

USER : 该进程的有效用户

%CPU / %MEM : 该进程占用的CPU/内存百分比

VSZ / RSS : 虚拟内存大小/物理内存大小

STAT : 内存状态

S : 处于sleeping状态;    R : 处于running状态

T : 处于stopped状态;     Z : 处于zombie状态

< : 高优先级 ; N : 低优先级 ; s : 包含子进程 ;

l : 拥有多线程;  + : 前台进程

常见使用方法: ps aux | grep ***

进程管理命令

进程查看命令 : top

top可以持续监测系统进程的状态

使用方法 : top [-dp] (d间隔秒数、p进程号)

示例:top -d  5   ;   top –p 1

交互模式下命令

M: 按当前内存占用情况排序

P : 按当前CPU占用情况排序

T : 按累计占用CPU时间排序

? / h : 显示help文档

q : 退出

进程管理命令

进程查看命令 : top

显示说明

1行:系统已启动时间、当前登录人数、系统整体负载(1,5,10分钟的平均负载)

2行:进程总数及各个状态的进程数量

3行:各类进程的CPU负载情况,注意%id(空闲)

45行:内存使用情况

进程间关系查看命令 : pstree

内存查看命令:free

实际可用内存 = free + cache + buffer

实际已用内存 = used - cache - buffer

A buffer is something that has yet to be "written" to disk. A cache is something that has been "read" from the disk and stored for later use.

进程管理命令

free命令

已用内存 = totoal - free - buffers - cached

可用内存 = free + buffers + cached

 

进程管理命令

进程终止命令 : kill

使用方法:kill [signal] PID | %job

常用signal说明:

-1 : SIGHUP 重启该进程

-2 : SIGINT 中断该进程,类似Ctrl+c

-9 : SIGKILL 强制结束该进程

-15 : SIGTERM 正常结束该进程

示例:kill -9 进程ID

进程终止命令 : killall

使用方法: killall [commandName]

进程管理命令

管理进程的优先级

每个进程都有优先级priority属性,系统根据这个属性判断哪个进程优先分配cpu

PRI的值越小,进程的优先级越高。

不能设置PRI的值,只能设置nice的值,且最终的PRI值由系统决定。newPRI = oldPRI + nice

设置nice值的命令: nice –n number cmd

重设nice值的命令: renice number PID

普通用户只能设置自己进程的nice值,且nice值的范围为 0~19,也就是说普通用户只能主动降低自己进程的优先级。

root可用的nice值为-20~19

作业管理命令

将命令放到后台执行 : &

前台后台的概念

可以控制的作业称为 foreground作业

在内存自行运行的作业称为background作业

示例: find / -name ‘test’ >1 2>2 &

暂停作业的执行 : Ctrl+z

终止当前终端运行的作用:Ctrl+c

终止作业 : kill [signal] %job

作业管理命令

查看当前作业状态: jobs [-l]

状态: RunningStoppedKilledDone

显示说明:作业都有个数字编号, ‘+’号为fgbg命令缺省的作业,’-’为将要成为缺省的作业。

将后台作用拿到前台处理:fg

fg:将默认的作业放到前台运行,即[+]的作业

fg %num:将指定的作业放到前台运行

将作业放到后台运行:bg

bg:将默认作业放到后台运行

bg %num: 指定的作业放到后台运行

Linux引导流程

加载主板程序 (CMOS/BIOS)

 

 

读取启动设备的MBR

加电自检

找到启动设备

Bootloader和主分区表

找到启动程序所在位置

运行启动程序GRUB

 

 

 

读取menu.lst

载入内核

载入内核vmlinuz

 

驱动硬件

 

启动1号进程init

 

 

 

读取/etc/inittab文件

启动相应级别下的服务

Linux引导流程

加载主板程序 (CMOS/BIOS)

加电自检 POST (power on self test)

BIOS (basic input output system)

固化在主板EEPROM的程序, delf2 进入

CMOS

RAM,保存BIOS设置完电脑硬件参数后的数据

安全设置,设置密码

设置引导介质列表和顺序

Linux引导流程

读取启动设备的MBR

主引导记录MBR ( Master Boot Record )

 

Linux引导流程

运行启动程序GRUB

来自GNU项目的多操作系统启动程序

grub程序应该安装在主活动分区, /boot

grub2安装目录下的配置文件grub.cfg记录了可以启动的操作系统列表及系统入口

硬盘分区编号为(hdx,y)

x表示硬盘号,y表示分区号

第一块硬盘的主分区 (hd0,1)~(hd0,4)

第一块硬盘的逻辑分区 (hd0,5)~

Linux引导流程

载入内核vmlinuz

内核文件位于 /boot/vmlinuz-xxxx

vm ( virtual memory)

z表示这是压缩文件, 载入时需uncompress

在加载核心的过程中,系统会以只读方式载入根目录。

系统在根文件系统被启动之前,会将镜像文件/boot/initrd (init RAM Disk )载入到内存,并加载一些内核模块。

Linux引导流程

启动1号进程init

PID (Process ID)恒为1.

读取/etc/init/rc-sysinit.conf文件来确定启动等级。

将运行等级作为参数传递给/etc/init.d/rc

rc根据运行等级参数执行/etc/rcN.d里面的脚本,N表示相应的运行等级[0-6|S]

S表示单用户

rcN.d里面的脚本指向init.d下的脚本,从而让某服务启动

 

 

Linux引导流程

配置文件/etc/inittab

man inittab 查看配置文件帮助手册

格式:id:runlevels:action:process

id : 4个字符以内的标识符

runlevels : 该操作可以在哪些运行级别下运行

action : 操作项目

initdefault : 表示默认的运行等级

sysinit : 系统初始化的操作项目

wait : 此项目必须要执行完,才能继续随后的操作

process : 可以执行的命令,通常是脚本

掌握设置系统启动默认运行级别

系统启动服务管理

/etc/rc.d/rc[0-6].d

SK开头的软链接文件,链接目标为/etc/rc.d/init.d目录下的相应Shell脚本

S开头的表示该运行级别下要start的服务

K开头的表示该运行级别下要kill的服务

SK后面的数字表示服务启动或关闭的顺序

显示当前运行级别,命令:runlevel

切换运行级别,命令:init [n]

 

Ubuntu10.04实际上是使用upstart启动管理

系统启动服务管理

/etc/rc.d/init.d

该目录存放系统服务的脚本,这些脚本一般都有一些参数,如:start stop restart等。

在某个运行级别下启动或关闭服务

老版本:运行/etc/rc.d/init.d/***  start|stop

新版本:service *** start|stop

/etc/rc.d/rcN.d下的软链接文件名称,如:将S55sshd改为s55sshd,该服务就不会启动了

设置启动自定义服务

老版本:在目录下创建相应服务程序的软链接

新版本:使用upstart方法,修改/etc/init目录下配置文件。

 

 

系统启动总结

启动过程

加载BIOS/COMS信息

读取MBR找到GRUB

加载系统内核,载入硬件驱动

执行init进程,读取/etc/inittab文件

执行/etc/rc.d/rc.sysinit进行系统环境初始化

执行/etc/rc.d/rcN.d目录下的服务脚本, 脚本实际位置在/etc/rc.d/init.d目录下

执行/etc/rc.d/rc.local脚本 (自定义本地脚本)

执行/bin/login程序,等待用户登录

用户登录之后启动对应的Shell控制主机

 

GRUB

GRUB配置选项

default : 缺省启动系统项

timeout : 缺省等待时间

splashimage : GRUB界面图片

hiddenmenu : 隐藏菜单

title : 系统菜单项名称

root (hd0,1) : 指明内核所在分区

kernel **** : 指明内核文件所在位置

initrd : 指明init RAM Disk镜像文件所在位置

GRUB

GRUB引导菜单

e : 编辑当前的启动菜单项

c : 进入GRUB的命令行方式

b : 启动当前的菜单项

d : 删除当前行

Esc : 返回上级菜单,取消当前修改

GRUB

使用示例:忘记root密码

思路 : 进入单用户模式设置密码。

步骤 :

进入grub引导菜单

编辑Linux系统启动项

编辑kernel指令行,添加启动级别,加上” 1”

回到系统启动菜单,启动Linux系统

在单用户模式下使用passwd命令设置root密码

 

计划任务

crond简介

crond是用来周期性地执行某种任务或等待处理某些事件的一个守护进程。crond进程每分钟会定期检查是否要执行的任务,有就执行该任务。

系统任务调度:系统周期性要执行的任务,相关配置文件/etc/crontab

用户任务调度:针对用户周期性要执行的任务,相关配置文件在/var/spool/cron目录下的与用户名相同的文件。

计划任务

配置文件/etc/crontab

SHELL : 指定系统使用的Shell

PATH : 设置ShellPATH环境变量

MAILTO : 指定crond的执行信息发给root

HOME : 指定执行命令时使用的缺省目录

 

格式:minute hour day month week command

01 * * * * root run-parts /etc/cron.hourly

01 * … : 表示时间 (分钟、小时、天、月、星期)

root : 表示以root身份执行crond任务

run-parts /etc/cron.hourly : 表示执行目录/etc/hourly目录下的所有可执行文件。

计划任务

配置文件/etc/crontab的时间

minute : 0-59  hour : 0-23 day : 1-31month : 1-12 week : 0-7 (07都表示星期天)

特殊符号:

 

计划任务

命令 : crontab

crontab [-u user] file

-u user file: 创建某个用户的crontab服务,root才能用。file指定crontab文件内容。

crontab [-u user] [-elri]

-e : 编辑某个用户或自己的crontab文件

-l : 显示某个用户或自己的crontab文件

-r : 删除某个用户或自己的crontab文件

-i : 在操作时给出确认提示。

 

计划任务

crontab注意事项

注意环境变量的设定

注意清理用户的邮件日志,计划任务执行完后,任务的输出信息都会通过邮件的形式发给用户。

可以指定真实的邮箱地址

可以用数据重定向将信息发给/etc/null

系统级的计划任务可以通过crontab –u root –e 来设置,或者直接写到/etc/crontab中。

/etc/cron.daily等目录下可以直接放每月、每星期、每天、每小时需要执行的可执行文件

可以通过执行/etc/rc.d/init.d/crond restart命令重新启动crond进程。

 

版权所有:《曾巧文博客-关注互联网IT技术,记录生活点滴》 => 《【Linux学习】课时9 进程和启动管理
本文地址://qiaowen.net/post-1207.html
除非注明,文章均为 《曾巧文博客-关注互联网IT技术,记录生活点滴》 原创,欢迎转载!转载请注明本文地址,谢谢。

有 4976 人浏览,获得评论 0 条

发表评论:

Powered by emlog 粤ICP备12040901号

>>本作品采用-知识共享署名-非商业-禁止演绎-协议-进行许可 |站点地图 | | | | 开放分类目录 |