进程和线程&计划任务管理

目录

一、程序和进程

1.程序

2.进程

3.程序和进程的区别

二、线程

1.线程的概念

2.进程与线程的关系

3.cpu时间分片

4.线程生命周期

三、查看进程统计信息

1.PS命令查看静态进程统计信息

2.top命令查看动态进程信息

3.pgrep命令根据特定条件查询进程信息

4.pstree命令以树形结构列出进程信息

5.jobs和&

6.bg和fg命令

四、计划任务管理

 1.at      指定时间操作

2.crontab


一、程序和进程

1.程序

保存在硬盘、光盘等介质中的可执行代码和数据

静态保存的代码

2.进程

在CPU及内存中运行的程序代码
动态执行的代码
父、子进程(每个程序可以创建一个或多个进程)

进程是动态的,程序是静态的
程序是二进制文件,进程是程序运行的过程
有生命周期和运行状态
进程下面还有多个线程

3.程序和进程的区别

进程是动态的,程序是静态的

程序是二进制文件,进程是程序运行的过程

有生命周期和运行状态

二、线程

1.线程的概念

线程是操作系统OS能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.
一个进程可以开启多个线程,其中有一个主线程来调用本进程中的其他线程。
我们看到的进程的切换,切换的也是不同进程的主线程
多线程可以让同一个进程同时并发处理多个任务,相当于扩展了进程的功能。

2.进程与线程的关系

一个操作系统中可以有多个进程,一个进程中可以包含一个线程(单线程程序),也可以包含多个线程(多线程程序)

每个线程在共享同一个进程中的内存的同时,又有自己独立的内存空间.
所以想使用线程技术,得先有进程,进程的创建是OS操作系统来创建的。

3.cpu时间分片

时间片,即CPU分配给各个线程的一个时间段,称作它的时间片,即该线程被允许运行的时间,如果在时间片用完时线程还在执行,那CPU将被剥夺并分配给另一个线程,将当前线程挂起,如果线程在时间片用完之前阻塞或结束,则CPU当即进行切换,从而避免CPU资源浪费,当再次切换到之前挂起的线程,恢复现场,继续执行。

4.线程生命周期

新建状态(New) : 当线程对象创建后就进入了新建状态.如:Thread t = new MyThread();
可运行状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu的使用权。
运行状态(Running):当CPU调度了处于就绪状态的线程时,此线程才是真正的执行,即进入到运行状态
就绪状态是进入运行状态的唯一入口,也就是线程想要进入运行状态状态执行,先得处于就绪状态
阻塞状态(Blocked):处于运状态中的线程由于某种原因,暂时放弃对CPU的使用权,停止执行,此时进入阻塞状态,直到其进入就绪状态才有机会被CPU选中再次执行.
根据阻塞状态产生的原因不同,阻塞状态又可以细分成三种:
       等待阻塞:运行状态中的线程执行wait()方法,本线程进入到等待阻塞状态
       同步阻塞:线程在获取synchronized同步锁失败(因为锁被其他线程占用),它会进入同步阻塞状态
       其他阻塞:调用线程的sleep()或者join()或发出了I/O请求时,线程会进入到阻塞状态.当sleep()状态超时.join()等待线程终止或者超时或者I/O处理完毕时线程重新转入就绪状态
死亡状态(Dead):线程执行完了或者因异常退出了run()方法,该线程结束生命周期

三、查看进程统计信息

1.PS命令查看静态进程统计信息

ps -aux        查看静态的进程统计信息

常用参数

-a:显示当前终端下的所有进程信息,包括其他用户的进程。与"x"选项结合时将显示系统中所有的进程信息
-u:使用以用户为主的格式输出进程信息
-x:显示当前用户在所有终端下的进程信息

进程和线程&计划任务管理_第1张图片

 USER:进程的用户
PID:进程的ID
%CPU:进程占用的CPU百分比
%MEM:占用内存的百分比
VSZ:该进程使用的虚拟内存量(KB)
RSS:该进程占用的物理内存量(KB)
TTY:启动进程的终端名。不是从终端启动的进程则显示为 ?
STAT:

该行程的状态:
- D:不可中断的休眠状态;R:正在运行状态;S:处于休眠状态,可被唤醒;T:停止状态,可能是在后台暂停或进程处于跟踪 调试状态;Z:僵尸进程,进程已经中止,但是部分程序还在内存当中;

D:不可中断状态

T:调试、程序执行一般停止

R:该程序目前正在运行,或者可被运作;

S:该程序目前正在睡眠当中(可说是idle状态),但可被某些讯号(sinqnal)唤醒

Z:该程序应该已经终止,但是其父程序却无法正常的终止他,造成zombie(僵尸)程序的状态

<:表示进程运行在高优先级上

N:表示进程运行在低优先级上

L:表示进程有页面锁定在内存中

s:表示进程是控制进程

l:表示进程是多线程的

+:表示当前进程运行在前台

START:该进程被触发启动时间
TIME:该进程实际使用CPU运行的时间
COMMAND:进程的启动命令

2.top命令查看动态进程信息

top 命令全屏操作界面快捷键

默认:3s刷新一次,按s修改刷新时间按空格:立即刷新

p:按cpu排序

M:按内存排序

T:按时间排序

P:进程IP,查看某个进程状态

N:键根据启动时间进程排序

u/U:指定显示的用户

h:可以获得lop程序的在线帮助信息

q:键可以正常退出top程序
 

Linux系统可以通过top命令查看系统的CPU、内存、运行时间、交换分区、执行的线程等信息。

进程和线程&计划任务管理_第2张图片

第一行:

top - 21:07:09 up 1:24,  2 users,  load average: 0.05, 0.03, 0.05

依次对应:系统当前时间 up 系统到目前为止i运行的时间, 当前登陆系统的用户数量, load average后面的三个数字分别表示距离现在一分钟,五分钟,十五分钟的负载情况。

第二行:

Tasks: 175 total,   1 running, 174 sleeping, 0 stopped,  0 zombie

依次对应:tasks表示任务(进程),175 total则表示现在有 175 个进程,其中处于运行中的有1个,174个在休眠(挂起),stopped状态即停止的进程数为0,zombie状态即僵尸的进程数为0个。

第三行:cpu的状态

%Cpu(s): 13.7 us,  1.5 sy,  0.0 ni, 84.2 id,  0.6 wa,  0.0 hi,  0.0 si,  0.0 st

us:user 用户空间占用cpu的百分比

sy:system 内核空间占用cpu的百分比

ni:niced 改变过优先级的进程占用cpu的百分比

空闲cpu百分比

wa:IO wait IO等待占用cpu的百分比

hi:Hardware IRQ 硬中断 占用cpu的百分比

si:software 软中断 占用cpu的百分比

st:被hypervisor偷去的时间

第四行:内存状态

KiB Mem :  3861520 total,   3012324 free,  388684 used,  460512 buff/cache

依次对应:物理内存总量(3.68G),空闲内存总量(2.8G),使用中的内存总量(0.37G),缓冲内存量0.43G)

第五行:swap交换分区

KiB Swap:  8191996 total,  8191996 free,  0 used.   3174224 avail Mem

依次对应:交换区总量(7.8G),空闲交换区总量(7.8G),使用的交换区总量(0G),可用交换取总量3.02G)

第六行:各进程的监控

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND    

PID — 进程id

USER — 进程所有者

PR — 进程优先级

NI — nice值。负值表示高优先级,正值表示低优先级

VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES

RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA

SHR — 共享内存大小,单位kb

S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程

%CPU — 上次更新到现在的CPU时间占用百分比

%MEM — 进程使用的物理内存百分比

TIME+ — 进程使用的CPU时间总计,单位1/100秒

COMMAND — 进程名称(命令名/命令行)

3.pgrep命令根据特定条件查询进程信息

常用的参数:
-l:选项可同时输出对应地进程名及PID
-U:选项查询特定用户的进程
-t:选项查询在特定终端运行的进程
进程和线程&计划任务管理_第3张图片

4.pstree命令以树形结构列出进程信息

pstree命令默认情况下只显示各进程的名称
结合一下常用的参数使用:
-p:选项使用时可以同时列出对应的PID号
-u:选项可以列出对应的用户名
-a:选项可以列出完整的命令信息
进程和线程&计划任务管理_第4张图片

5.jobs和&

"&"表示挂起当前进程并不会输出结果 

进程和线程&计划任务管理_第5张图片

jobs 命令可以查看处于后台的任务列表

-l:选项可以同时显示对应的PID号

 进程和线程&计划任务管理_第6张图片

6.bg和fg命令

 bg命令
使用bg命令可以将后台中暂停执行的任务恢复运行

 fg命令
使用fg命令,可以将后台任务重新恢复到前台运行

进程和线程&计划任务管理_第7张图片

四、计划任务管理

 1.at      指定时间操作

 atp   查看待执行操作

  atrm  5   删除第五条任务

进程和线程&计划任务管理_第8张图片

2.crontab

通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令。
时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。
这个命令非常设合周期性的日志分析或数据备份等工作。

主要配置文件

     全局配置文件,位于文件:/etc/crontab

     系统默认的设置,位于目录:/etc/cron.*/

     用户定义的设置,位于文件:/var/spool/cron/用户

进程和线程&计划任务管理_第9张图片

 *                   *                *                 *                    *           

minute         hour           day             month           week      

分(0-59)       时(0-23)     天(1-31)      月(1-12)        星期(0-6)       

例:

 0 17 * * 1-5                 周一到周五每天17:00

30 8 * * 1,3,5          每周一,三,五的8点30分

0 8-18/2 * * *               8点到18点之间每2小时

0 * */3 * *                     每3天
 

-u user:用来设定某个用户的crontab服务,
   例如,“-u ixdba”表示设定ixdba用户的crontab服务,此参数一般有root用户来运行。
file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。
      如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,
      并将它们载入crontab。
-e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。
-l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。
-r:从/var/spool/cron目录中删除某个用户的crontab文件,
    如果不指定用户,则默认删除当前用户的crontab文件。
-i:在删除用户的crontab文件时给确认提示。

例:编辑计划任务

crontab -e 

每天11:35分时向/mnt/1.txt 写入  “123456”

进程和线程&计划任务管理_第10张图片  

到时间后查看验证

进程和线程&计划任务管理_第11张图片

查看计划任务

crontab -l 

删除计划任务

crontab -r 

进程和线程&计划任务管理_第12张图片

你可能感兴趣的:(linux)