进程和计划任务管理

132 阅读9分钟

一.程序和进程

1.什么是程序:

  • 静静地躺在硬盘上的是程序

  • 是一组计算机能识别和执行的指令,运行于电子计算机上,满足人们某种需求的信息化根据。

  • 描述进程要完成的功能,控制进程去执行指令

2.什么是进程:

  • 运行的程序在内存中的叫进程

  • 电脑用pid来识别进程;程序运行,系统自动分配pid-

  • 存在生命周期

  • 都由其父进程创建

3.进程具有特性

  • 动态性:进程是程序一次执行过程,临时的。

  • 并发性:进程执行任务时任何进程都可以同其他进程一起执行。

  • 独立性:进程是系统进行资源分配和调度的一个独立单位

  • 结构性:进程由程序、数据和进程控制块三部分组成

4.线程

  • 线程是程序执行中一个单一的顺序控制流程,是程序执行流的最小单元,是处理器调度和分派的基本单位。一个进程可以有一个或多个线程,各个线程之间共享程序的内存空间

5.协程是什么

是一种基于线程之上,但又比线程更加轻量级的存在

一个进程可以拥有多个线程一样,一个线程也可以拥有多个协程

协程特点

线程的切换由操作系统负责调度,协程由用户自己进行调度,因此减少了上下文切换,提高了效率。

由于在同一个线程上,因此可以避免竞争关系而使用锁。

协程应用场景

适用于被阻塞的,且需要大量并发的场景。但不适用于大量计算的多线程,遇到此种情况,更好实用线程去解 决。

6.进程和线程的区别

  • 线程是程序执行的最小单位,而进程是操作系统分配资源的最小单位;

  • 一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线;

  • 调度和切换:线程上下文切换比进程上下文切换要快得多

  • 程级的资源(如打开文件和信号),某进程内的线程在其它进程不可见

  • 进程之间相互独立,但同一进程下的各个线程之间共享程序的内存空间(包括代码段、数据集、堆等)及一些进

image.png

7.查看线程的命令

pstree  
pstree  -p

image.png

image.png

8.进程

进程的状态:

             创建状态
              就绪状态
              执行状态
              阻塞状态
              终止状态
              僵死状态

9.进程之间通讯

  • p 管道符 连接通讯

10.进程优先级

 PR+NI 相加取最小值
 PR:系统优先级
 NI:用户优先级

11.进程分类

  • 协作式多任务:早期 windows 系统使用,即一个任务得到了 CPU 时间,除非它自己放弃使用CPU ,否则将完全霸占 CPU ,所以任务之间需要协作——使用一段时间的 CPU ,主动放弃使用

  • 抢占模式:Linux内核,CPU的总控制权在操作系统手中,操作系统会轮流询问每一个任务是否需要使用 CPU ,需要使用的话就让它用,不过在一定时间后,操作系统会剥夺当前任务的 CPU 使用权,把它排在询问队列的最后,再去询问下一个任务

12.进程类型

  • 守护进程:和系统连带的,系统不死,守护进程不死
  • 前台进程:执行窗口在进程在,窗口被关闭进程被关闭

二.如何管理进程

查看进程

分析进程

结束进程

开启进程

1.查看进程

1.1 ps 查看静态进程统计信息

ps aux 可以查看系统中所有的进程

 a :显示当前终端下的所有进程信息,包括其他用户的进程。
 u ; 使用以用户为主的格式输出进程信息
 x ;显示当前用户在所有终端下的进程信息

1.2# 查看进程信息 prtstat

image.png

1.3 top 命令可以动态地持续监听进程地运行状态

选项:

  • -d 秒数:指定 top 命令每隔几秒更新。默认是 3 秒;
  • -b:使用批处理模式输出。一般和"-n"选项合用,用于把 top 命令重定向到文件中;
  • -n 次数:指定 top 命令执行的次数。一般和"-"选项合用;
  • -p 进程PID:仅查看指定 ID 的进程;
  • -s:使 top 命令在安全模式中运行,避免在交互模式中出现错误;
  • -u 用户名:只监听某个用户的进程

1.4> top -d 进程pid号

image.png

image.png

1.5top窗口信息解读

image.png

1.5.1第一段内容行为任务队列信息,具体内容如表 所示。

image.png

内容说明
18:56:38系统当前时间
4小时10分钟系统的运行时间.本机己经运行
2 users当前登录了两个用户
load average: 0.00, 0.01, 0.05系统在之前 1 分钟、5 分钟、15 分钟的平均负载。如果 CPU 是单核的,则这个数值超过 1 就是高负载:如果 CPU 是四核的,则这个数值超过 4 就是高负载 (这个平均负载完全是依据个人经验来进行判断的,一般认为不应该超过服务器 CPU 的核数)

1.5.2第二段内容行为进程信息,具体内容如表

image.png

内容说明
Tasks: 196 total系统中的进程总数
2 running正在运行的进程数
194 sleeping睡眠的进程数
0 stopped正在停止的进程数
0 zombie僵尸进程数。如果不是 0,则需要手工检查僵尸进程

1.5.3第三段内容行为 CPU 信息,具体内容如表

image.png

内容说明
%Cpu(s): 0.0 us用户模式占用的 CPU 百分比 个人用户开启的进程占用的 cpu 率
0.0 sy系统模式占用的 CPU 百分比
0.0 ni改变过优先级的用户进程占用的 CPU 百分比
100.0 id空闲 CPU 占用的 CPU 百分比
0.0 wa等待输入/输出的进程占用的 CPU 百分比 1
0.0 hi硬中断请求服务占用的 CPU 百分比
0.0 si软中断请求服务占用的 CPU 百分比
0.0 stst(steal time)意为虚拟程序占用 cpu 时间百分比,就是当有虚拟机时,虚拟 CPU 等待实际 CPU 的时间百分比

1.5.4第四行为物理内存信息,具体内容如表buff cache

image.png

内容说明
KiB Mem : 1867048 total物理内存的总量,单位为KB
167488 free己经使用的物理内存数量
776952 used空闲的物理内存数量。我们使用的是虚拟机,共分配了 628MB内存,所以只有53MB的空闲内存
922608 buff/cache作为缓冲的内存数量

1.5.5 第五行为交换分区(swap)信息,如表

内容说明
KiB Swap: 2097148 total交换分区(虚拟内存)的总大小
2097104 free已经使用的交换分区的大小
44 used空闲交换分区的大小
866984 avail Mem作为缓存的交换分区的大小

1.6缓冲(buffer)和缓存(cache)的区别:

  • 缓存(cache)是用来加速数据从硬盘中"读取"的
  • 而缓冲(buffer)是用来加速数据"写入"硬盘的。

1.7在 top 命令的显示窗口中,还可以使用如下按键,进行一下交互操作

  • ? 或 h:显示交互模式的帮助;
  • c:按照 CPU 的使用率排序,默认就是此选项;
  • M:按照内存的使用率排序;
  • N:按照 PID 排序;
  • T:按照 CPU 的累积运算时间排序,也就是按照 TIME+ 项排序;
  • k:按照 PID 给予某个进程一个信号。一般用于中止某个进程,信号 9 是强制中止的信号;
  • r:按照 PID 给某个进程重设优先级(Nice)值;
  • q:退出 top 命令;

htop

  • 增强版的top

pgrep命令

查看指定的进程

  • -U 指定用户
  • -l: 显示进程名
  • -a: 显示完整格式的进程名
  • -P pid: 显示指定进程的子进程

计算机五大性能

查看命令

1.内存:free / top

2.磁盘:df /lsblk /fdisk -l

io读写性能:dd /iostat/vmstat

3.cpu使用率:top(实时) ps(静态)

4.网络:iftop

5.系统版本:cat /etc/redhat-release

ip地址:ifconfig

内核:uname -r

三.进程管理

前台执行和后台执行

1.命令加&放入后台

image.png

2.jobs (列表,编号)后台执行的命令,查编号:jobs

3.fgjobs(编号)把任务调回前台

4.ctrl +2 把命令放回后台,但是停止状态

5.bg + jobs 继续任务

四.结束进程

kill : 结束

kill -9 :强行终止进程

五.计划任务 crontab管理

1.crontab 选项 ///提前规划好时间做一些任务

选项功能
-u user用来设定某个用户的 crontab 服务,例如 "-u demo" 表示设备 demo 用户的 crontab 服务,此选项一般有 root 用户来运行。
-e编辑某个用户的 crontab 文件内容。如果不指定用户,则表示编辑当前用户的 crontab 文件。
-l显示某用户的 crontab 文件内容,如果不指定用户,则表示显示当前用户的 crontab 文件内容。
-r从 /var/spool/cron 删除某用户的 crontab 文件,如果不指定用户,则默认删除当前用户的 crontab 文件。
-i在删除用户的 crontab 文件时,给确认提示。

`2.进入 crontab 编辑界面。会打开Vim编辑你的任务

`***** 执行的任务``

image.png

3.*****分别代表:分 时 日 月 周

项目含义范围
第一个"*"一小时当中的第几分钟(minute)0~59
第二个"*"一天当中的第几小时(hour)0~23
第三个"*"一个月当中的第几天(day)1~31
第四个"*"一年当中的第几个月(month)1~12
第五个"*"一周当中的星期几(week)0~7(0和7都代表星期日)

4.时间表示中一些特殊的标志

特殊符号含义
*(星号)代表任何时间。比如第一个"*"就代表一小时种每分钟都执行一次的意思。
,(逗号)代表不连续的时间。比如"0 8,12,16***命令"就代表在每天的 8 点 0 分、12 点 0 分、16 点 0 分都执行一次命令。
-(中杠)代表连续的时间范围。比如"0 5 ** 1-6命令",代表在周一到周六的凌晨 5 点 0 分执行命令。
/(正斜线)代表每隔多久执行一次。比如"/10***命令",代表每隔 10 分钟就执行一次命令。

4.实践操作

1.输入命令crontab -e编写命令,进入vim编辑

image.png

2.输入需要计划的具体时间与命令

image.png

3.保存退出并使用crontab-l查看当前的计划

image.png

4.5. -r选项可以删除当前计划