程序(静态):
保存在硬盘,光盘等介质中的可执行代码和数据;静态保存的代码。
进程(动态):
在CPU及内存中运行的程序代码,
动态执行的代码;父子进程(每个程序可以创建一个或多个进程)
【程序:二进制的文件,静态】
【进程:程序运行的过程,是动态的,有生命周期及运行状态,并发多个线程,每个线程执行不同的任务】
程序,进程,线程的关系:
线程包含在进程之中,是进程中的实际运作单位,也是操作系统中能够独立运行的基本单位,也称作轻量进程,一个进程中可以并发多个线程,每一条线程可以并行执行不同的任务,在任务管理器中的一个个进程由下载的应用程序所产生的,一个应用程序也可以包含多个进程。
ps命令:查看静态的进程统计信息
-a:当前终端下的所有进程信息
-u:以用户为主的格式输出进程信息
-x:当前用户在所有终端下的进程信息
上述输出信息中,第一行为列表标题,其中各字段的含义描述如下。
USER:启动该进程的用户账号的名称。
PID:该进程在系统中的数字ID号,在当前系统中是唯一的。
%CPU:CPU占用的百分比。
%MEM:内存占用的百分比。
vsz:该进程使用的虚拟内存量(KB)。
RSS:该进程占用的物理内存量(KB)。
TTY:表明该进程在哪个终端上运行。不是从终端启动的进程则显示为?。
简说:
pts是远程登录终端ctrl+ALT F1-F6 tty1 图像界面2和6
字符界面?系统本身白身执行的进程
打开一个终端,这个终端就叫pts/0,如果你再打开一个终端,这个新的终端就叫pts /1。
STAT:该进程的状态(D:不可中断的休眠状态:R:正在运行状态;s :处于休眠状态,可被唤醒;
T:停止状态,可能是在后台暂停或进程处于跟踪调试状态:
z:僵尸进程,进程已经中止,但是部分程序还在内存当中)
D:系统守护进程
T:调式、程序执行一般停止
R:该程序目前正在运作,或者是可被运作;
s :该程序目前正在睡眠当中(可说是 idle 状态啦!),但可被某些讯号(signal)唤醒。
T:该程序目前正在侦测或者是停止了;
Z:该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie疆尸)
程序的状态
D不可中断状态.
它们含意如下::
<:表示进程运行在高优先级上
N:表示进程运行在低优先级上
L:表示进程有页面锁定在内存中
s:表示进程是控制进程
l:表示进程是多线程的
+:表示当前进程运行在前台
D:系统守护进程
T调式、程序执行一般停止
START:启动该进程的时间。|
TIME:该进程占用的cPU 时间。
COMMAND:启动该进程的命令的名称
-e:显示系统内的所有进程信息。
-1:使用长格式显示进程信息。
-f:使用完整的格式显示进程信息。
top命令:查看动态进程信息
top命令-查看进程动态信息
上述输出信息中,开头的部分显示了系统任务(Tasks ) 、CPu占用、内存占用(Mem)、交换空
间(Swap)等汇总信息,汇.总信息下方依次显示当前进程的排名情况。相关信息的含义表述如下
uptime
13:22:30当前时间
up 20days系统运行时间,说明此服务器连续运行20天了
user当前登录用户数
load average:0.06,0.60,0.48系统负载,即任务队列的平均长度。三个数值分别为1分钟、5分钟、15 分钟前到现在的平均值。
系统任务(Tasks)信息:
total,总进程数;
running,正在运行的进程数;
sl休眠的进程数;
stopped,中止的进程数;
zombie,僵死无响应的进程数。
CPU占用信息:
us,用户占用;
sy,内核占用;
ni,优先级调度占用;
id,空闲cPU;
wa,I/o等待占用;
hi,硬件中断占用;
si,软件中断占用;
st,虚拟化占用。要了解空闲的cPU百分比,主要看%id部分。
内存占用(Mem)信息:
total,总内存空间;free,空闲内存;used,已用内存;
buff/ cache,物理内存和交换内存的缓冲区总和。
交换空间(Swap)占用:
total,总交换空间;
free,空闲交换空间;
used,已用交换空间;
avail Mem,可用物理空间。
-l:选项可同时输出对应的进程名以及PID
-U:选项查询特定用户的进程
-t:选项查询在特定终端运行的进程
-p:选项使用时可以同时列出对应的PID号
-u:选项可以列出对应的用户名
-a:选项可以列出完整的命令信息
前台启动:用户输入命令,直接执行
后台启动:在命令行尾加"&"符
【jobs -l:查看后台运行的任务列表】
at命令:设置一次性计划任务
crontab命令:设置周期性计划任务
ctrl+Z:将当前进程挂起,即调入后台并停止执行
jobs:查看处于后台的任务列表
fg:将后台进程恢复到前台运行,可指定任务序号
当用户在前台执行某个进程时,可以按Ctrl+C组合键强制进行中断(如命令长时间没有响应的情况下)。
中断前台进程的运行后,系统将返回命令行提示符状态等待用户输入新的命令。当按 Ctrl+C 组合键无法终止程序或者需要结束在其他终端或后台运行的进程时, 可以使用专用的进程终止工具 kill、killall 和 pkill。
kill -15信号只是通知对应的进程要进行"安全、干净的退出",程序接到信号之后,退出前一般会进行一些"准备工作",如资源释放、临时文件清理等等,如果准备工作做完了,再进行程序的终止。但是,如果在"准备工作"进行过程中,遇到阻塞或者其他问题导致无法成功,那么应用程序可以选择忽略该终止信号。这也就是为什么我们有的时候使用kill命令是没办法"杀死"应用的原因,因为默认的kill信号是SIGTERM(15),而SIGTERM(15)的信号是可以被阻塞和忽略的。
相比于kill -15命令,kill -9在执行时,应用程序是没有时间进行"准备工作"的,所以这通常会带来一些副作用,数据丢失或者终端无法恢复到正常状态等。
周期性计划任务修改一次,需要重启一次。