Linux进程和计划任务管理
一、程序和进程的关系
1.1、程序
保存在硬盘、光盘等介质中的可执行代码和数据
文件中静态保存的代码
也就是一堆代码,可以长时间的保存在系统中
1.2、进程
进程是程序运行的过程,进程存在着生命周期,也就是进程会随着陈序的终止而销毁
在CPU及内存中运行的程序代码,动态执行的代码
父、子进程(每个程序可以创建一个或多个进程)
1.3、线程
线程是操作系统能够进行运算调度的最小单位
它包含在进程之中,是进程中的实际运作单位
一条线程指的是进程中的一个单一顺序的控制流,一个进程中可以并发多个线程,每个线程并行执行不同的任务,它们共享同一个进程的资源
二、查看进程信息
2.1、ps命令查看静态的进程统计信息
ps -aux查看静态的进程统计信息
-a:显示终端上的所有进程,包括其它用户的进程
-u:表示列出进程的用户
-x:显示所有终端的进程
各字段解析
僵尸进程:一个进程结束了,但是如果该进程的父进程已经先结束了,那么该进程就不会变成僵尸进程,因为每个进程结束的时候,系统都会扫描当前系统中所运行的所有进程,看有没有哪个进程是刚刚结束的这个进程的子进程,如果是就由init来接管它,成为它的父进程,子进程退出后init会回收其占用的相关资源。
但是当子进程比父进程先结束,而父进程又没有回收子进程,释放子进程占用的资源,此时子进程将称为一个僵尸进程。
tty终端:CentOS7系统,tty1表示图形界面,tty2-tty6表示文字界面,可以用ctrl+Alt+F1-F6切换
pts说明是远程工具连接的,比如xshell,后面的数字代表登录的时间顺序,越小证明登录的越早
ps -elf查看静态的进程统计信息
常用选项
各字段解析
ps -aT显示所有线程
2.2、top命令查看动态的进程排名信息
第一行是任务队列信息
22:07:29: 代表系统时间
UP 18 min: 系统已运行时长
2 users: 当前用户登录数
load average 0.00,0.03 0.05: 系统负载,即单位时间内系统处理的任务数,后面三个数值分别是1分钟、5分钟、15分钟到现在的平均值
第二行是进程信息
Tasks: 总进程数
running: 正在运行的进程数
sleeping: 休眠的进程数
stopped: 中止的进程数
zombie: 僵死的进程数
第三行是CPU信息
us: 用户占用
sy: 内核占用
ni: 优先级调度占用
id: 空闲CPU,要了解空闲的CPU百分比,主要看%id部分
wa: I/O等待占用
hi: 硬件中断占用
si: 软件中断占用
st: 虚拟化占用
us+sy+ni就是总的CPU占用
第四行是内存信息
total: 总内存空间
free: 空闲内存
used: 已用内存
buff/cache: 物理内存和交换内存的缓冲区总和
第五行是交换空间信息
total: 总交换空间
free: 空闲交换空间
used: 已用交换空间
avail Mem: 可用物理空间
进程信息区各列解释
top常用命令
P键: 根据CPU使用百分比大小进行排序
M键: 根据驻留内存大小进行排序
N键: 根据启动时间进行排序
c键: 切换显示命令名称和完整命令行
h键: 可以获得top程序的在线帮助信息
k键: 根据提示输入指定进程的PID号并按enter键终止对应的进程,重新在启动top该进程就没了
q键: 退出top程序
数字1键: 显示cpu个数和状态
top -H: 显示所有线程
top -H -p: 显示特定进程中的线程
2.3、pgrep命令
根据特定条件查询进程PID信息
-U:指定特定用户
-t:指定终端
2.4、查看进程树
以树形结构列出进程信息
三、进程的启动方式
3.1、手工启动
前台启动:用户输入命令,直接执行程序
后台启动:在命令行位加入“&”符号
3.2、调度启动
使用at命令,设置一次性计划任务
格式:第一行at [HH:MM] [yyyy-mm-dd] ##不填年月日默认为当天
第二行输入要执行的命令
第三行按Ctrl+D键提交任务
创建一个一次性计划任务,在规定时间罗列root用户的所有进程并统计放到opt目录中的ps.root中
atq查看未执行的任务列表
atrm 任务序列号删除对应任务
使用crontab命令,设置周期性计划任务
按照预先设置的时间周期(分、时、天、月、周)重负执行用户指定的命令操作
主要配置文件
全局配置文件,位于文件:/etc/crontab
系统默认的设置,位于目录:/etc/cron.*/
用户定义的设置,位于文件:/var/spool/cron/用户名
管理crontab计划任务
crontab -e [-u 用户名] #编辑计划任务(-u缺省时默认是针对当前用户)
crontab -l [-u 用户名] #查看计划任务
crontab -r [-u 用户名] #删除计划任务
crontab任务配置的格式
任务周期设置数值的表示方法
*表示该范围内的任意时间
,表示间隔的间隔的多个不连续时间点
-表示一个连续的时间范围
/指定间隔的时间频率
应用示例
crontab第一种配置方法
crontab -e进行配置,进入后会发现和vi编辑器是一样的操作,配置完成退出并保存
这时候我们可以crontab -l进行查看任务
crontab第二种配置方法
将周期任务追加到用户自定义的设置文件中
crontab第三种配置方法
进入全局配置文件定义任务
vim /etc/crontab
注:此种方法crontab -l查看不到对应列表,想要删除只能再次进入全局配置文件进行手动删除
3.3、进程的前后台调度
Ctrl+Z组合键:将当前进程挂起,即调入后台并停止执行
jobs命令
jobs [-l]查看处于后台的任务列表
fg命令
将后台进程恢复到前台运行,可指定任务序号
3.4、终止进程的运行
Ctrl+C组合键
中断正在执行的命令
3.5、kill、killall命令
kill用于终止指定PID号的进程
例如:先查找对应的PID号,再kill指定PID,终止该任务
killall用于终止指定名称相关的所有进程
-9选项用于强制终止
3.6、pkill命令
根据特定条件终止相应的进程
常用命令选项
-U:根据进程所属的用户名终止相应进程
-t:根据进程所在的终端终止相应进程
四、补充
atop
atop是一款用于监控Linux系统资源与进程的工具,它以一定的频率记录系统的运行状态,所采集的数据包含系统资源(CPU、内存、磁盘和网络)使用情况和进程运行情况,并能以日志文件的方式保存在磁盘中,服务器出现问题后,我们可获取相应的atop日志文件进行分析,其比较强大的地方是其支持我们分析数据时进行排序、视图切换、正则匹配等处理。
和top一样,但是更为直观性,个人建议可以安装atop来使用
安装方法
安装第三方yum源EPEL
官方的rpm repository提供的rpm包不够丰富,很多时候有找不到对应软件rpm包的情况,源码安装软件是一件很麻烦的事情,我们可以使用第三方的yum源。
EPEL的全称叫 Extra Packages for Enterprise Linux 。EPEL是由 Fedora 社区打造,为 RHEL 及衍生发行版如 CentOS、Scientific Linux 等提供高质量软件包的项目。
项目官方wiki地址:http://fedoraproject.org/wiki/EPEL/zh-cn
CentOS下,EPEL能够很方便的通过yum来安装并启用
yum -y install epel-release
yum -y install atop
本章总结
- 查看进程的命令有ps、top、pgrep、pstree,其中ps命令是查看静态的进程信息,对应的常用选项有e、l、f、a、T (T查看线程)等。
- top用来查看动态的进程信息,也介绍了atop工具,和top工具一样。
- pgrep是以特定的条件查询到PID信息,特定条件包括进程名、用户、指定终端。
- pstree以树形结构来显示进程信息,罗列出来的信息很多,可以用相关常用选项来查找特定的信息。
- 进程的启动方法包括手动启动和调度启动,手工启动分前台启动和后台启动,后台启动就是命令行尾加上&符号,可以不用等待继续下一步操作。
- 调度启动分一次性计划任务和周期性计划任务,一次性计划任务用命令at,周期性计划任务命令是crontab,时间设置有固定的格式,其中还有三种设置方法。
- 进程前后台调度,后台进程可用jobs -l查看,fg指定对应序号恢复到前台。
- 终止进程运行的命令,可以用Ctrl+C组合键终止,还有kill、killall、pkill命令。kill用于终止指定pid号的进程,killall用于终止指定名称相关的进程,pkill根据特定条件终止相应进程。