前言
进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。
一.什么是进程
操作系统中运行的程序,是操作系统管理的最小单位,进程是一个动态的实体,它是程序的一次执行过程。
程序:二进制文件,静态 /bin/date /usr/bin/sshd
进程:是程序运行的过程,动态,有生命周期和运行状态
二.线程状态
1.新建(NEW):新创建了一个线程对象。
2.可运行(RUNNABLE):线程对象创建后,其他线程调用了该对象的start方法,该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu的使用权。
3.运行(RUNNING):可运行状态(runnable)的线程获得了cpu时间片(timeslice),执行程序代码。
4.阻塞(BLOCKED):阻塞状态是指线程因为某种原因放弃了cpu使用权,也即让出cpu timelice,暂时停止运行,直到线程进入可运行(runnable)状态,才能有机会再次获得cpu timeslice转到运行(running)状态。
等待阻塞:运行(running)的线程执行o.wait方法,JVM会把该线程放入等待队列(waitting queuq)中。
同步阻塞:运行(running)的线程在获取对象的同布锁时,若该同步锁被别的线程占用,则JVM会把该线程放入锁池(lock pool)中。
其他阻塞:运行(running)的线程执行thread.sleep(longms)或t.join方法,或者发出了I/O请求时,JVM会把该线程置为阻塞状态,当sleep状态超时、join等待线程终止或者超时或者I/O处理完毕时,线程重新转入可运行(runnable)状态。
5.死亡(DEAD):线程run、main方法执行结束,或者因异常退出run方法,则该线程结束生命周期,死亡的线程不可再次复生。
三.ps查看静态进程信息
3.1ps常用参数
-a:显示当前终端下的所有进程信息,包括其他用户进程,与x结合将显示系统中所有进程信息。
-u:使用以用户为主的格式输出进程信息。
-x:显示当前用户在所有终端下的进程信息。
USER: 进程用户名
PID: 进程id号
%CPU: cpu占用百分比
%MEM: 物理内存占用百分比
VSZ: 进程使用的虚拟内存量
RSS: 进程占用的虚拟内存量
TTY: 表明进程在哪个终端上运行
STAT: 该进程的状态(D:不可中断的休眠状态 R:正在运行状态 S:处于休眠状态,可 唤醒 T:停止状态,可能是在后台暂停或进程处于跟踪调试状态 Z:僵尸进程,但 是有部分进程还在内存中)
START: 进程启动时间
TIME: 进程使用cpu时间总计
COMMAND:命令名
3.2进程状态
-D:不可被唤醒的睡眠状态
-R:该进程正在运行
-S:该进程处于休眠状态,可换醒
-T:停止状态,可能是在后台暂停或处于排错状态
-W:内存交互状态
-X:死掉的进程
-Z:僵尸进程,进程停止但仁在内存中运行
-<:高优先级
-N:底优先级
-L:被锁入内存
-s:包含子进程
-l:多线程
-+:处于后台
-C:进程占用cpu的百分比
ps -aux(以列表形式显示出进程信息)

四.TOP查看动态进程信息
4.1Top进程信息
PID: 进程id
User: 进程的用户名
Pr: 优先级
Ni: 进程优先级的修正量,负的优先高,正的优先低
Virt: 进程使用的虚拟内存总量,单位kb
Res: 进程使用的、未被换出的物理内存大小,单位kb
Shr: 共享内存大小,单位kb
S: 进程状态。(D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程)
%cpu: 上次更新到现在的CPU时间占用百分比
%mem: 进程使用的物理内存百分比
Time+: 进程使用的CPU时间总计,单位秒
Command:命令名/命令行
load average:0.00,0.01,0.05:系统负载,即任务队列的平均长度。三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。
4.2top选项
默认3s刷新一次,按s修改刷新时间,按空格:立即刷新
P: 按CPU排序
M: 按内存排序
T: 按时间排序
p: 进程IP,查看某个进程状态
N : 根据启动时间进行排序
数字键 1:显示每个内核的CPU使用率u/U:指示显示的用户
h: 可以获得top程序的在线帮助信息
q: 键可以正常地退出top程序

五.pgrep查询进程信息
pgrep选项
-l:选项可同时输出对应的进程名以及PID
-U:选项查询特定用户的进程
-t:选项查询在特定终端运行的进程
六.pstree以树形结构列出进程信息
pstree选项
-p:选项使用时可以同时列出对应的PID号
-u:选项可以列出对应的用户名
-a:选项可以列出完整的命令信息

七.jobs查看处于后台的任务列表
jobs选项
-l:选择可以同时显示该进程对应的pid号

& :这个用在一个命令的最后,可以把这个命令放到后台执行

当Linux操作系统中的命令正在前台执行时(运行尚未结束),按照Ctrl+Z组合键可以将当前进程挂起(调入后台并停止执行),这种操作在需要暂停当前进程并进行其他操作时特别有用。
bg(让后台暂停的任务运行)

fg(将后台任务恢复到前台需要加Ctrl+Z组合键)

八.kill终止进程运行
当用户在前台执行某个进程时,可以按Ctrl+C组合键强制进行中断(如命令长时间没有响应的情况下)。中断前台进程的运行后,系统将返回命令行提示符状态等待用户输入新的命令。当按Ctrl+C组合键无法终止程序或者需要结束在其他终端或后台运行的进程时,可以使用专用的进程工具 kill、killall和pkill。
kill -9强制杀死进程

九.计划任务管理
在Linux操作系统中,除了用户即使执行的命令操作以外,还可以配置在指定的时间、指定的日期执行预先计划的系统管理任务(如定期备份、定期采集监测数据)。CentOS 系统中默认已安装了at、cronie 软件包,通过atd和crond这两个系统服务实现一次性、周期性计划任务的功能,并分别通过at、crontab命令进行计划任务设置。
9.1at 一次性计划任务设置
使用at命令设置的计划任务只能在指定的时间点执行一次,前提是对应的系统服务atd必须已经运行。需要注意的是,计划执行任务的时间,日期必须安排在当前系统的时刻之后,否则将无法正常设置计划任务。
设置一次性计划任务时,在at命令行中依次指定计划执行任务的时间、日期作为参数(若只指定时间则表示当天的该时间,若只指定日期则表示该日期的当前时间),确认后将进入带"at>"提示符的任务编辑界面,每行设置一条执行命令,可以依次设置多条语句,最后按Ctrl+D组合键提交任务。所设置的命令操作将在计划的时间点被依次执行。

验正结果

9.2crontab周期性任务
1.crontab的配置文件和目录
/etc/crontab——系统任务配置文件
/etc/crontab 文件中设置的是维护Linux操作系统所需的任务,Linux操作系统及相关程序在安装时可自动设置,不建议用户手动修改此文件。例如,该文件中包括设置Shell环境,可执行路径等变量的操作,以及每小时、每天、每周、每月需要执行的任务目录。执行如下的"cat /etc/crontab"命令可以查看/etc/crontab文件的具体内3容。

2.crontab计划任务的配置
字段 说明
分钟 取值为0到59之间的任意整数
小时 取值为0到23之间的任意整数
日期 取值为1到31之间的任意整数
月份 取值为0到12之间的任意整数
星期 取值为0带7之间的任意整数,0或7代表星期日
命令 要执行的命令或程序脚本
3.crontab选项设置
crontab -e:编辑任务计划表
crontab -l:列表显示计划任务
crontab -r:删除计划任务列表
1.表示每周日的早晨1点重启httpd服务

2.表示每隔3天关闭防火墙服务

3.表示周1周3周5早上1点备份/etc/httpd目录

4.crontab -r表示情况计划任务
