第九章 进程管理
1.Linux进程概述
1.1 含义
程序是存储在磁盘上包含可执行机器指令和数据的静态实体,而进程是在操作系统中执行的特殊任务的动态实体
一个程序允许有多个进程,而每个运行中的程序至少由一个进程组成
Linux每个进程与其他进程都是彼此独立的,每个进程都有自己独立的权限与职责
进程之间有并列关系,还有父进程和子进程的关系
Linux进程的类型:
交互进程、批处理进程、守护进程
1.2 进程的状态
进程的3种基本状态:运行状态、就绪状态、封锁(阻塞)状态
Linux的几个状态:
运行态、等待态、停止态、僵死态
1.3 进程的执行工作模式
进程的执行模式:用户模式、内核模式
用户模式:当前运行的是用户程序、应用程序、内核之外的系统程序
内核模式:如果在用户执行过程中,出现系统调用或者发生中断事件,就要运行操作系统(即核心)程序
在内核模式下,运行的进程可以执行机器的特权指令
此时该进程的运行不受用户的干预,即使是root用户,也不能干预内核模式下进程的运行
进程的功能和运行的程序分类:
系统进程:只运行在内核模式下执行操作系统代码,完成一些管理性的工作
例如:内存分配和进程切换
用户进程:通常在用户模式中执行,并通过系统调试或出现中断、异常时进入内核模式
通过了系统安全,用户进程只在用户模式下运行
2.守护进程
守护进程是Linux系统3种进程之一
守护进程可以完成很多重要工作,包括系统管理及网络服务等
2.1 守护进程的特点
守护进程(精灵进程):在后台运行而没有在终端或登录shell与之结合在一起的进程
守护进程经常在程序启动时开始运行,在系统结束时停止
这些进程没有控制终端,所以称为后台运行
2.2 守护进程的启动方法
启动守护进程有如下几种方法:
1.在引导系统时启动
通常在系统启动script的执行期间被启动,这些script一般存放在/etc/rc.d中
2.人工手动从shell提示符启动
任何具有相应的执行权限的用户都可以使用这种方法启动守护进程
3.使用crond守护进程启动
这个进程查询存放在/var/spool/cron/crontabs目录中的一组文件。这些文件规定
了需要周期性执行的任务
4.执行at命令启动
在规定的日期和执行一个程序
3.启动进程
3.1 定时执行——at命令
at:需要在特定时间执行一些任务
可以只是指定时间,也可以时间和日期一起指定
在3天后下午4点执行文件job中的作业
at -f job 4pm + 3 days
列出队列中所有的作业
atq
删除队列中ID为9的作业
atrm 9
3.2 空闲时执行——batch命令
batch:用低优先级运行作业,在系统负载较低、资源比较空闲的时候执行命令
该命令适合于占用资源较多的命令
和at命令的功能完全相同,at命令是指定时间内很精确的执行指定命令
3.3周期性执行——cron和crontab命令
cron:在系统启动时,就由一个shell脚本自动启动,并进入后台
一般的用户没有运行该命令的权限
新创建的 cron 任务,不会马上执行,至少要过 2 分钟后才可以,当然你可以重启 cron 来马上执行
因为crond是一个守护进程,所以在系统开机后,通过systemctl start crond启动一次以后(默认自动启动的),几乎就不需要再管它了,之后的操作都通过crontab来完成
cron可以让系统在指定的时间,去执行某个指定的工作,我们可以使用crontab指令来管理cron机制
crontab:每分钟会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作
该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行
实际上安排周期性任务的命令是crontab,该命令用于安装、删除或者列出用于渠道cron后台进程的表格
cron循环执行某一命令。at命令只能执行一次,虽然都是计划任务的命令,这是这两个命令的区别
Cron由crontab(cron表)文件(配置文件)驱动 它指定shell命令以给定时间表定期运行
vi job
45 11 22 7 * ls /etc/
crontab job
ca /var/spool/cron
cat usrl
4.进程管理
4.1 查看进程状态——ps命令
ps命令是用来查看目前系统中,有哪些正在进行的进程,以及他们的执行情况,可以不加任何参数,类似于 windows 的任务管理器
根据显示的信息可以确定那个进程正在运行、那个进程被挂起、进程已经运行多长时间、进程正在使用的资源、进程的相对优先级、以及进程的标识号等信息
ps -A 显示进程信息
ps -u root //显示root进程用户信息
ps -ef //显示所有命令,连带命令行
4.2 查看进程状态——top命令
动态显示过程,可以通过用户按键来刷新当前状态
top//显示进程信息
top -c//显示完整命令
top -b//以批处理模式显示程序信息
top -S//以累积模式显示程序信息
top -n 2//表示更新两次后终止更新显示
top -d 3//表示更新周期为3秒
top -p 139//显示进程号为139的进程信息,CPU、内存占用率等
4.3 终止进程kill
通常终止一个前台进程可以使用ctril+c
对于后台进程就需要使用kill命令来终止
4.4 前后台运行和暂停进程
长时间得不到结果可以使用ctrl+z将其暂停
bg命令将其置于后台执行
jobs查看其任务编号
fg加上任务编号将其置于前台
如果需要开始就在后台执行某命令,只需要在其后加上一个&符号