Linux 进程和计划任务管理

一  内核功用:进程管理、内存管理、文件系统、网络功能、驱动程序、安全功能等

 1 程序

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

  • 用于描述进程要完成的功能,是控制进程执行的指令集

2 进程

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

进程是有生命周期的

centos6及之前由init串行启动管理进程

从centos7以后为systemd并行启动管理进程

进程ID(Process ID,PID)号码被用来标记各个进程

UID、GID语境决定对文件系统的存取和访问权限

  父子关系

       兄弟关系

非正常结束进程

死机   有僵尸进程,对系统而言,会占用内存,对内存是非常大的负担,解决之道重启或杀死程序

3 进程创建

  • init:第一个进程,从 CentOS7 以后为systemd

  • 都由其父进程创建,fork(),父子关系,CoW:Copy On Write 写实更新,有数据写入子进程需要新的内存空间

三 进程具有的特征

  • 动态性:进程是程序的一次执行过程,是临时的,有生命期的,是动态产生,动态消亡的;

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

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

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

协程:

是一种基于线程之上,但又比线程更加轻量级的存在,这种由程序员自己写程序来

协程的目的

协程的特点

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

协程的原理

当出现IO阻塞的时候,由协程的调度器进行调度,通过将数据流立刻yield掉(主动让出),并且记录当前栈

进程与线程的区别

线程是程序执行的最小单位,而进程是操作系统分配资源的最小单位
一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线
进程之间相互独立,但同一进程下的各个线程之间共享程序的内存空间(包括代码段、数据集、堆等)及一些进
程级的资源(如打开文件和信号),某进程内的线程在其它进程不可见


调度和切换:

线程上下文切换比进程上下文切换要快得多

总结

每开启一个进程会消耗相应的硬件资源(内存,cpu,磁盘i/o(读写),磁盘剩余) ;

内存不足,及时关闭没有用的进程;硬件资源不足要对进程进行清理

pstree 可以查看进程PID号(ps=process );yum install epel-release.noarch -y(会生成一个额外源 )


延伸

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

要去/proc找到程序进程号

cat /proc/该程序的pid号文件夹/status,可以查看该进程的线程数量

grep -i threads /proc/pid号/status,可以查看该进程的线程数量

prtstat 该程序的pid号,可以查看该进程的线程数量

prtstat 该进程的pid号 | grep -i threads,可以查看该进程的线程数量

二 进程 使用 内存 的问题

内存泄漏

内存溢出

内存不足  oom

JVW(虚拟机)

进程使用内存出现的问题原因以及解决办法

pmap  进程id         #可以显示该进程所有进程占用信息

进程的基本状态

创建

就绪

执行

阻塞

终止

状态之间转换六种情况

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

进程更多的状态:

僵尸进程:

父进程退出 子进程没有退出 那么这些子进程就没有父进程来管理了, 就变成僵尸进程

子进程已经结束了,父进程没有意识到。解决之道:重启或父进程唤起

进程之间通讯

 同一主机:

pipe管道

socket套接字文件

文件映射

共享内存

signal 信号

lock 对资源上锁

semaphore 信号量,一种计数器

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

进程的优先级 os

  • 静态优先级:100-139

  • 进程默认启动时的nice值为0,优先级为120

  • 只有根用户才能降低nice值(提高优先性)

进程分类

   进程

   前台进程

按进程资源使用的分类

      cpu-Bound

       I/O -Bound

   操作系统分类

             协作式多任务

             抢占式多任务

进程类型:两者可相互转化

  •         守护进程
  •          前台进程

三 进程管理相关命令:主要是指进程的关闭与重启

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

要重启 apache 服务,一般使用命令"service httpd restart"重启 apache的程序。systemctl httpd start

ps 即 process state:

Linux系统各进程的相关信息均保存在/proc/数字 目录/status 下的文件中

查看静态的进程统计信息

  • "ps aux"   可以查看系统中所有的进程;默认按pid号排名

  • "ps -le"     可以查看系统中所有的进程,而且还能看到进程的父进程的 PID 和进程优先级;

  • "ps -l"        只能看到当前 Shell 产生的进程;

常用选项

  • a:显示当前终端下的所有进程信息,包括其他用户的进程。与“x”选项结合时将示系统中所有        的进程信息。

  • u:使用以用户为主的格式输出进程信息。

  • x:显示当前用户在所有终端下的进程信息。

  • -e:显示系统内的所有进程信息。

  • -l:使用长(Long)格式显示进程信息。

  • -f:使用完整的(Full)格式显示进程信

  • k--sort 属性 对属性排序,属性前加 - 表示倒序 ps aux k -%cpu

  • o    属性… 选项显示定制的信息 pid、cmd、%cpu、%mem

pid进程的ID字段说明

%cpu

%mem

VSZ

TTY

tty7

STAT

ps aux #如果看到STAT为Z,表示为僵尸态。

ps 输出属性

ps aux

ps -ef   输出信息详解

 

prtstat  查看进程信息

top:

查看动态的进程排名信息=win的任务管理器

  • -d 秒数:指定 top 命令每隔几秒更新。默认是 3 秒;

  • -b:使用批处理模式输出。一般和"-n"选项合用,用于把 top 命令重定向到文件中;

  • -n 次数:指定 top 命令执行的次数。一般和"-"选项合用;

  • -p 进程PID:仅查看指定 ID 的进程;

  • -s:使 top 命令在安全模式中运行,避免在交互模式中出现错误;

  • -u 用户名:只监听某个用户的进程;

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

?或h

c

M

N

T

k

r

q

首部信息显示/隐藏

top 命令的输出内容是动态的,默认每隔 3 秒刷新一次。命令的输出主要分为两部分:

  1. 第一部分是前五行,显示的是整个系统的资源使用状况,我们就是通过这些输出来判断服务器的资源使用状态的;

  2. 第二部分从第六行开始,显示的是系统中进程的信息

第一部分

 top - 10:06:37 up 5:36, 3 users, load average:    0.00, 0.01, 0.05

Tasks:    204 total, 1 running, 202 sleeping, 1 stopped, 0 zombie

%Cpu(s):    0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st

KiB Mem :    1867048 total, 74348 free, 755112 used, 1037588

buff/cache KiB Swap:     4194300 total, 4191856 free, 2444 used. 878688 avail Mem

第一行为任务队列信息,具体内容如表

第二行为进程信息,具体内容

第五行为交换分区(swap)信息

第三行为 CPU 信息,具体内容

第四行为物理内存信息,具体内容

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

缓存    用来加速数据从硬盘中"读取"的,

缓冲    用来加速数据"写入"硬盘的。

第二部分

top 命令的第二部分输出,主要是系统进程信息,各个字段的含义如下:

pgrep:查看指定的进程

  • -U 指定用户

  • -l: 显示进程名

  • -a: 显示完整格式的进程名

  • -P pid: 显示指定进程的子进程

pidof  :  已知程序名不知道pid号

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

-a

-p

-T

-u

-H

lsof    :“list opened files”的缩写,直译过来,就是列举系统中已经被打开的文件

-c

+d

-u

-p

监控系统资源 虚拟 资源: vmstat

是 Virtual Meomory Statistics(虚拟内存统计)的缩写,可用来监控 CPU 使用、进程状态、内存使用、虚拟内存使用、硬盘输入/输出状态等信息

r

b

swpd

cache

内存:free  查看内存占用

            free  -h
            free  -m

iostat   

I/O性能状态数据       此工具由sysstat包提供

 -c      只显示CPU行
-d       显示设备〈磁盘)使用状态
-k        以千字节为为单位显示输出
-t         在输出中包括时间戳
-x        在输出中包括扩展的磁盘指标

iostat 1 -d /dev/sda        #只看 sda硬盘    

I/O iotop:监视磁盘

dd if=/dev/zero of=/dev/null

iftop -ni ens33
#网络流量

死记硬背

查看cpu的命令:top  w  vmstat

查看内存的命令:top  tree  vmstat

查看硬盘分区:lsblk

查看硬盘剩余:df

硬盘读写性能:vmstat

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/289263.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

电路笔记 :自激振荡电路笔记 电弧打火机

三极管相关 三极管的形象描述 二极管 简单求解(理想) 优先导通(理想) 恒压降 稳压管(二极管plus) 基础工作模块 理想稳压管的工作特性 晶体管之三极管(“两个二极管的组合” ) 电弧打火机电路 1.闭合开…

竞赛保研 基于机器视觉的停车位识别检测

简介 你是不是经常在停车场周围转来转去寻找停车位。如果你的车辆能准确地告诉你最近的停车位在哪里,那是不是很爽?事实证明,基于深度学习和OpenCV解决这个问题相对容易,只需获取停车场的实时视频即可。 该项目较为新颖&#xf…

Docker与虚拟机的比对

在Windows操作系统上的对比: 但是官方还是建议我们尽量不要将Docker直接安装到Windows操作系统上。

k8s 之7大CNI 网络插件

一、介绍 网络架构是Kubernetes中较为复杂、让很多用户头疼的方面之一。Kubernetes网络模型本身对某些特定的网络功能有一定要求,但在实现方面也具有一定的灵活性。因此,业界已有不少不同的网络方案,来满足特定的环境和要求。 CNI意为容器网络…

[C语言]比特鹏哥

主页有博主其他上万字精品笔记,都在不断完善更新! C语言 初识C语言 基本了解C语言的基础知识,对C语言有一个大概的认识。 每个知识点就是简单认识,不做详细讲解,后期课程都会细讲。 本章重点: 什么是C语言 第一个C语言程序 数据…

MySQL是如何做到可以恢复到半个月内任意一秒的状态的?

MySQL的逻辑架构图 MySQL中两个重要的日志模块:redo log(重做日志)和binlog(归档日志) 我们先来看redo log: 介绍一个MySQL里经常说到的WAL技术,即Write-Ahead-Logging,它的关键点…

2024年了,如何制作高水平简历?(附模板)

Q:什么是高水平的简历? A:满足HR需求的同时,最大化的体现自身价值的简历是高水平的简历 HR的需求是什么? ✅ HR想看到清晰专业的简历模板 ——家人们每天看几百份简历谁懂啊!花里胡哨真看不下去一点&…

阿里是如何去“O”的?

大家好,我是老猫,猫头鹰的“猫”。 今天我们来聊聊数据库这个话题。 2009年,阿里提出“去IOE化”的概念,这在当时看起来是天方夜谭,但目前来看可以说是"轻舟已过万重山"。 IOE是传统IT三大件,…

消息队列神器:打造高效、可靠的分布式系统

消息队列(Message Queueing)是现代应用架构中不可或缺的组件,它在处理大规模数据流、服务解耦、系统伸缩性和异步通信等方面发挥着关键作用。但是,要充分利用消息队列,我们必须解决一系列关于高可用性、一致性、顺序性…

你真的知道2024程序员搞钱新姿势吗?

2023年即将过去,2024的序曲已经奏响!回顾2023,我们经历了降薪裁员的大趋势,身为程序员也有点惶惶不可终日,害怕会失去工作,害怕面对家人无奈的模样,害怕跟不上时代的步伐,沦为被大环…

MP3音乐播放器搜索引擎-在线搜索MP3歌曲实现(一)

首先添加网络模块和播放模块 下载文件&#xff0c;获取响应&#xff0c;错误处理,加上可以进行网络访问 要加上头文件#include<QNetworkAccessManager> 上面头文件发送请求后返回的响应类用下边的头文件 #include<QNetworkReply> 添加多媒体播放列表#include&…

数据库设计-DDL

D D L \huge{DDL} DDL DDL&#xff1a;数据库定义语言&#xff0c;用来定义数据对象&#xff08;数据库、表&#xff09; 简单操作 首先在cmd中进行操作&#xff0c;登录数据库 show databases; -- 以列表的形式显示所有的数据库create database [if not exists] 数据库名称…

《Vue3 前端构建工具》 Vue-cli 与 Vite 创建项目的插件和配置对比

前言 2024 年 啦&#xff01;Vue2 也于 2023.12.31 寿终正寝 &#xff01; 然而我的 Vue3 升级一再拖延&#xff08;惭愧不已&#xff09;~ 赶起来吧~ 今天用 vue-cli 和 vite 分别创建了 Vue3 项目&#xff0c;具体实现步骤见如下两篇。 《基于 Vue Cli4.x Vue3 TS styl…

高端电流检测方案

随着过去传统的“开环”系统被智能和高效率“闭环”设计所取代&#xff0c;准确的电流检测在多种应用中变得越来越重要。常见的电流检测方法&#xff0c;需要将检流电阻串联进被测电流通路&#xff0c;再用放大电路放大检流电阻上的压降。这个放大电路常被称之为电流检测放大器…

npm发布js工具包

一、创建项目 1、在github上创建一个项目&#xff0c;然后拉取至本地&#xff0c;进入项目目录2、执行 npm init 生成json文件3、创建 src/index.ts 入口文件和 src/isObject.ts 工具方法 src/index.ts export { default as isObject } from ./isObject src/isObject.ts /…

AUTOSAR软件手册文档缩写描述,AUTOSAR_TR_PredefinedNames

由于AUTOSAR文档中的缩写太多&#xff0c;入门者看起开不方便。例如TR、SWS、SRS、EXP模块。 下载链接&#xff1a;https://www.autosar.org/fileadmin/standards/R21-11/FO/AUTOSAR_TR_PredefinedNames.pdf

终于学会听英文歌了:A Sad Me In Your Eyes

A Sad Me In Your Eyes 来源&#xff1a; https://lyricstranslate.com/en/ln-party-sad-me-your-eyes-lyrics.html Fire can’t burn in my eyes If without your smile Snow can cover your smile If without your love When you think of me, I’ve gone too far I can’t …

8K自动化测试面试题分享(有答案,非常详细)

关于自动化测试面试&#xff0c;会问到哪些问题呢&#xff1f;给大家简单总结了一下&#xff0c;每一个都是学员反馈过来的企业真题&#xff0c;相信对大家有帮助&#xff0c;最近有面试机会的&#xff0c;快来背一下答案吧 1、你会封装自动化测试框架吗&#xff1f; 这个问得…

单片机外设矩阵键盘之线反转法识别原理与示例

单片机外设矩阵键盘之线反转法识别原理与示例 1.概述 这篇文章主要介绍单片机接收 4X4矩阵键盘发出的指令&#xff0c;做出对应的反馈。其中主要介绍矩阵键盘线反转方式的识别原理和实操。 2.矩阵键盘线反转识别原理 2.1.矩阵键盘硬件接线原理 矩阵键盘的硬件接线方式有多种…

Nginx 中的日志

目录 1.定制访问日志记录格式 1.1 全部日志记录 1.2 每个网站独属一份日志 2.日志路径 3.错误日志 1.定制访问日志记录格式 1.1 全部日志记录 该配置处于nginx.conf 文件中 log_format compression $remote_addr - $remote_user [$time_local] "$request" $sta…