程序 进程 线程
程序:保存在外部存储介质(如硬盘,光盘)中的可执行机器代码和数据的静态集合。
进程:在CPU及内存中处于动态执行状态的计算机程序。
线程:操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
如下图中,宿主机开启一个虚拟机就是一个进程,而虚拟机正常运行过程中,又会开启开启很多服务,这些服务对宿主机来说就是线程,一个进程可包含多个线程。
查看进程
ps--查看静态的进程统计信息
ps命令是Linux系统中最为常用的经常查看工具,主要用于显示包含当前运行的各进程完整信息的静态快照
a:显示当前终端下所有的进程信息
u: 使用以用户为主的格式输出进程信息
x:显示当前用户在所有终端下的进程信息
-e:显示系统内的所有进程信息
-l:使用长格式显示进程信息
-f:使用完整的格式显示进程信息
ps aux命令
其中各项含义如下所示
ps -elf
与aux显示相比,多了几个加载项,含义如下所示
PPID :该进程的父进程ID号,0即使没有父进程
C:CPU占用率
PRI:用户状态的进程优先级,数值越低,,级别越高
NI:内核状态的优先级,数值越低,级别越高
ADDR:运行状态,- 表示运行中
WCHAN:进程在内核中的名称
top-查看进程动态信息
top命令将会在当前终端以全屏交互式的界面显示进程排名,及时跟踪包括cpu,内存等系统资源占有情况,默认情况下每三秒刷新一次,其作用类似windows下的任务管理器。
含义如下
pgrep-查询进程信息
当使用ps查询某个进程PID信息时,往往需要结合grep命令对输出结果进行过滤,这样使用非常不方便,而pgrep命令则正是用来查询特定进程信息的专用工具。
常用选项
-l 显示进程名
-u 查询特定用户
-t 查询在特定终端运行的进程
pstree-查看进程树
pstree命令可以输出Linux系统中各进程的树形结构,更加直观地判断出各进程之间的相互关系
常用选项
-a 列出完整的而命令信息
-u 指定用户
-p 列出PID号
控制进程
启动进程
1 手工启动
(1) 前台启动
进程在前台运行时,用户必须等到该进程执行结束并退出才能继续输入其他命令
(2)后台启动
进程在后台运行,用户可以继续在当前终端输入指令,无需等待该进程结束,适用于运行耗时较长的操作,在执行命令末尾加上&即可
2 调度启动进程
调度启动进程通过at crontab命令进行设置,at命令用于设置一次性的计划任务,crontab用于设置周期性运行,调度启动的计划任务在后台运行,不会占用客户的命令终端
(1)at
atq
查询计划任务,已执行的任务不会出现在列表中
atrrm
删除at任务,删除后任务不会执行,但执行过的任务无法删除
(2)crontab
选项
-e 编辑计划任务列表
-u 指定计划任务属于哪个用户,默认时针对当前用户
-l 列表显示计划任务
-r 删除计划任务列表
配置格式:分,时,日,月,周 如下所示
进入后模式与vim相同,直接输入即可
改变进程运行方式
CTRL+Z:将进程挂起,调入后台并停止执行
jobs-l 查看后台进程
fg:将挂入后台的命令调入前台执行
bg:在后台暂停执行的命令,继续在后台执行
终止进程执行
当用户在前台执行某个进程时,ctrl+c组合键可强制中断,也可使用终止工具kill,killall,pkill
kill
对于无法正常终止的进程,必要时结合-9强行终止
killall
pkill
使用此命令可以根据进程的名称,运行该进程的用户,进程所在的终端等多种属性终止特定进程
常用选项
-U 指定用户
-t 指定终端
原文地址:https://blog.51cto.com/14449536/2432784