进程和计划任务管理

目录

一、程序和进程的关系

1、程序

2、进程

2.1 进程概述

2.2 进程具有的特征

2.3 进程结束有两种情况

2.4 进程使用内存的问题

2.5 进程状态

2.6  进程之间通讯

2.7 进程的优先级 os

2.8 进程分类

2.9 僵尸进程

三、进程管理相关命令

1、ps命令 查看当前终端运行的进程

2、top 查看动态的进程排名信息

3、pgrep 根据特定条件查询进程PID信息

4、pstree 以树形结构列出进程信息  

5、losf 列出打开的文件

6、iostat 显示所有设备负载情况

7、vmstat 监控系统资源

四、五大系统资源

五、进程的启动方式

1、手工启动

1.1 "命令 &",把命令放入后台执行

1.2 查看后台任务列表 jobs 

1.3 调出后台任务 fg +序号

2、结束进程

2.1 kill是给一个程序发出信号

2.2 pkill 根据特定条件终止相应的进程(不建议使用)

六、计划任务管理

1、at 一次性计划任务

1.1 建立at任务

1.2 atq 查看at任务

1.3 atrm 删除a任务

2、使用crontab命令(分时日月周),设置周期性计划任务

2.1 管理crontab计划任务

2.2 应用示例


一、程序和进程的关系

1、程序

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

2、进程

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

2.1 进程概述

运行中的程序的一个副本,是被载入内存的一个指令集合,是资源分配的单位

  • 进程ID(Process ID,PID)号码被用来标记各个进程
  • UID、GID、和SELinux语境决定对文件系统的存取和访问权限
  • 通常从执行进程的用户来继承
  • 存在生命周期
  • 都由其父进程创建,可以有一个或多个子进程

进程创建:

  • init:第一个进程,从centos7以后是systemd
  • 进程:都由其父进程创建,fork(),父子关系,CoW:Copy On Write

2.2 进程具有的特征

  • 动态性:进程是程序的一次执行过程,是临时的,有生命期的,是动态产生,动态消亡的;
  • 并发性:任何进程都可以同其他进程一起并发执行;
  • 独立性:进程是系统进行资源分配和调度的一个独立单位;
  • 结构性:进程由程序、数据和进程控制块三部分组成。

线程的出现是为了解决切换进程之间出现的硬件消耗

没有线程只有进程会过度消耗硬件资源

一个线程至少有一个进程

线程会共享进程中的资源

问:如何确定一个程序是多线程还是单线程?

总结:查看是多线程还是单线程的命令如下

  1. pstree
  2. cat /proc/pid号/status

2.3 进程结束有两种情况

进程结束有两种情况正常结束和非正常结束

非正常结束会造成一节结果:如死机,僵尸进程等,对于系统而言,会占用内存,对于内存是一个很大的负担,一般解决方法是重启或杀死进程

2.4 进程使用内存的问题

(1)内存泄漏:Memory Leak(一个程序开启了一个进程,这个进程不正常关闭,发生了问题,os一直在运行,os收不回这块内存,这块内存就一直处于 占用状态)

指程序中用malloc或new申请了一块内存,但是没有用free或delete将内存释放,导致这块内存一直处于占用状态

(2)内存溢出:Memory Overflow

指程序申请了10M的空间,但是在这个空间写入10M以上字节的数据,就是溢出

(3)内存不足:OOM

在java程序中比较常见,在日志messages中会看到Out Of MemoryError: Java heap space

原因:

给应用分配内存太少:比如虚拟机本身可使用的内存(一般通过启动时的VM参数指定)太少。

应用用的太多,并且用完没释放,浪费了。此时就会造成内存泄露或者内存溢出。

使用的解决办法:

  1. 限制java进程的max heap,并且降低java程序的worker数量,从而降低内存使用
  2. 给系统增加swap空间

2.5 进程状态

(1)进程的基本状态

- 创建状态:进程在创建时需要申请一个空白PCB(process control block进程控制块),向其中填写
- 控制和管理进程的信息,完成资源分配。如果创建工作无法完成,比如资源无法满足,就无法被调
- 度运行,把此时进程所处状态称为创建状态
- 就绪状态:进程已准备好,已分配到所需资源,只要分配到CPU就能够立即运行
- 执行状态:进程处于就绪状态被调度后,进程进入执行状态
- 阻塞状态:正在执行的进程由于某些事件(I/O请求,申请缓存区失败)而暂时无法运行,进程受
- 到阻塞。在满足请求时进入就绪状态等待系统调用
- 终止状态:进程结束,或出现错误,或被系统终止,进入终止状态。无法再执行

(2)状态之间转换六种情况

运行——>就绪:

  1. 主要是进程占用CPU的时间过长,而系统分配给该进程占用CPU的时间是有限的;
  2. 在采用抢先式优先级调度算法的系统中,当有更高优先级的进程要运行时,该进程就被迫让出CPU,该进程便由执行状态转变为就绪状态
  • 就绪——>运行:运行的进程的时间片用完,调度就转到就绪队列中选择合适的进程分配CPU
  • 运行——>阻塞:正在执行的进程因发生某等待事件而无法执行,则进程由执行状态变为阻塞状态,如
  • 发生了I/O请求
  • 阻塞——>就绪:进程所等待的事件已经发生,就进入就绪队列

以下两种状态是不可能发生的:

  • 阻塞——>运行:即使给阻塞进程分配CPU,也无法执行,操作系统在进行调度时不会从阻塞队列进行挑选,而是从就绪队列中选取
  • 就绪——>阻塞:就绪态根本就没有执行,谈不上进入阻塞态

(3)进程更多的状态

- 运行态:running
- 就绪态:ready
- 睡眠态:分为两种,可中断:interruptable,不可中断:uninterruptable
- 停止态:stopped,暂停于内存,但不会被调度,除非手动启动
- 僵死态:zombie,僵尸态,结束进程,父进程结束前,子进程不关闭,杀死父进程可以关闭僵死态 的子进程

2.6  进程之间通讯

同一主机:

pipe 管道,单向传输
socket   套接字文件,双工通信
Memory-maped file   文件映射,将文件中的一段数据映射到物理内存,多个进程共享这片内存
shm shared memory 共享内存
signal 信号
Lock   对资源上锁,如果资源已被某进程锁住,则其它进程想修改甚至读取这些资源,都将被阻塞,直到锁被打开
semaphore 信号量,一种计数器

不同主机:socket=IP和端口号

RPC remote procedure call   远程调用
MQ 消息队列,生产者和消费者,如:Kafka,RabbitMQ,ActiveMQ

2.7 进程的优先级 os

进程优先级调整

- 静态优先级:100-139
- 进程默认启动时的nice值为0,优先级为120
- 只有根用户才能降低nice值(提高优先性)

2.8 进程分类

操作系统分类:

- 协作式多任务:早期 windows 系统使用,即一个任务得到了 CPU 时间,除非它自己放弃使用CPU ,否则将完全霸占 CPU ,所以任务之间需要协作——使用一段时间的 CPU ,主动放弃使用
- 抢占式多任务:Linux内核,CPU的总控制权在操作系统手中,操作系统会轮流询问每一个任务是否需要使用 CPU ,需要使用的话就让它用,不过在一定时间后,操作系统会剥夺当前任务的 CPU 使用权,把它排在询问队列的最后,再去询问下一个任务

进程类型:

- 守护进程: daemon,在系统引导过程中启动的进程,和终端无关进程
- 前台进程:跟终端相关,通过终端启动的进程

注意:两者可相互转化

按进程资源使用的分类:

- CPU-Bound:CPU 密集型,非交互
- IO-Bound:IO 密集型,交互

2.9 僵尸进程

进程结束,父进程会回收子进程的硬件资源,子进程出现意外关闭,父进程无感知就不会收回资源,这个人为关闭父进程,资源不会回收产生僵尸进程。

人为模拟:

 解决方法: 重启或将父进程唤起

三、进程管理相关命令

进程的管理主要是指进程的关闭与重启。我们一般关闭或重启软件,都是关闭或重启它的程序,而不是直接操作进程的。比如,要重启 apache 服务,一般使用命令"service httpd restart"重启 apache的程序。systemctl httpd start

那么,可以通过直接管理进程来关闭或重启 apache 吗?答案是肯定的,这时就要依赖进程的信号(Signal)了。我们需要给予该进程 信号,告诉进程我们想要让它做什么。

系统中可以识别的信号较多,我们可以使用命令"kill -l"或"man 7 signal"来查询

号代号 信号名称
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值