Linux系统-进程和计划任务管理

一.程序和进程

1.程序

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

2.进程

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

3.进程特征

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

4.线程

  • 是进程的一个实体,更加轻量级
  • 操作系统能够进行运算调度的最小单位
  • 一个进程可以有很多线程,每条线程并行执行不同的任务

5.线程与进程的区别

  • 进程是程序的一次执行,它是资源分配和挂你的基本单位,包括代码、数据、堆栈、文件句柄等
  • 线程是进程中的一个执行流程,是CPU调度的基本单位,共享进程的资源,包括内存、文件和其他资源等
  • 进程之间通常是相互独立的,每个进程有独立的内存空间,通过进程间通信(IPC)来实现数据共享和通信
  • 线程之间共享相同的地址空间和其他进程资源,线程之间的数据共享和通信更为方便

二.查看系统进程

1.ps命令

  • 查看静态的进程统计信息
ps命令的选项
BSD格式a表示显示当前终端的进程
u表示以用户身份显示进程
x表示显示当前用户的所有进程
unix格式-e表示显示系统内的所有进程信息
-f完整的格式显示进程信息
-l使用长格式显示进程,ps -l表示只看当前shell产生的进程
兼容o/-o属性,可以定制指定查看进程属性(用逗号分开)
k对属性进行排序(属性前面加“-”表示降序)
--sort对属性进行排序(属性前面加“-”表示降序)

1.1.ps aux(可以没有-)

ps -aT:显示所有线程

ps -T -p <pid>:查看指定进程中已经起的线程

ps -L <pid>:查看指定进程中的线程信息

ps aux --sort -%cpu | head -10:按cpu降序排列,-为降序,+为升序,p与%同义

ps aux --sort +pmem | head -n 10:按内存升序排列

ps aux --sort -pcpu,+pmem | head -n 10

关于进程几种状态的学习

常见的STAT进程状态
R该进程正在运行
S该进程出于睡眠,可以被唤醒
D该进程出于不可以被唤醒,通常用于I/O
T该进程停止状态,可能是在后台暂停或者进程正处于除错状态
Z

僵尸进程,进程已经终止但是父进程不知道,并没有被收回资源,所以该进程还是继续占用资源,但是并没有工作(运维就需要清理这种僵尸进程)

1.2.ps -elf(-不能少)

各列解释

F内核分配给进程的系统标记
S进程的状态
UID启动这些进程的用户
PID进程的进程ID
PPID父进程的进程号(如果该进程是由另一个进程启动的)
C进程生命周期中的CPU利用率
PRI进程的优先级(越大的数字代表越低的优先级)
NI谦让度值用来参与决定优先级
ADDR进程的内存地址
SZ假如进程被换出,所需交换空间的大致大小
WCHAN若该进程在睡眠,则显示睡眠中的系统函数名
STIME进程启动时的系统时间
TTY进程启动时的终端设备
TIME运行进程需要的累计CPU时间
CMD进程的启动命令

2.top命令

  • 查看动态的进程排名信息

2.1.

各列解释

PID进程的ID
USER该进程所属的用户
PR优先级,数值越小,优先级越高
NI优先级,数值越小、优先级越高
VIRT该进程使用的虚拟内存的大小,单位为 KB
RES该进程使用的物理内存的大小,单位为 KB
SHR共享内存大小,单位为 KB
S进程状态
%CPU该进程占用 CPU 的百分比
%MEM该进程占用内存的百分比
TIME+该进程共占用的 CPU 时间
COMMAND进程的命令名

第一行:任务队列信息

16:13:19系统时间
up 3:07系统已运行时长
4 user当前登录用户数
load average: 0.00,0.01,0.05系统负载,即单位时间内系统处理的任务数,后面三个数值分别为1分钟、5分钟、15分钟前到现在的平均值

第二行:进程信息

tasks总进程数
running正在运行的进程数
sleeping休眠的进程数
stopped终止的进程数
zombie僵死的进程数

第三行:CPU信息

us用户模式占用
sy系统模式占用
ni改变过优先级的用户进程占用
id空闲 CPU 占用
wa等待输入/输出的进程占用
hi硬中断请求服务占用
si软中断请求服务占用
st虚拟化占用

第四行:物理内存信息

total总内存空间
free空闲内存
used已用内存
buff/cache物理内存和交换内存的缓冲区总和

第五行:行为交换空间的信息

total总交换空间
free空闲交换空间
used已用交换空间
avail Mem可用物理空间

常用命令

P 键根据CPU使用百分比大小进行排序
M 键根据驻留内存大小进行排序
N 键根据启动时间进行排序
c 键切换显示命令名称和完整命令行
h 键可以获得 top程序的在线帮助信息
k 键根据提示输入指定进程的 PID 号并按 Enter 键终止对应的进程
q 键退出 top 程序
数字1 键显示CPU个数和状态

CPU使用率和CPU负载:

  • CPU使用率是指CPU在某个时间段内被使用的比例,以百分比表示。反映了CPU的使用强度
  • CPU负载是指CPU正在处理的任务数或等待CPU处理的任务数。反映了系统中的任务繁忙程度

2.2.小提问:

查看 load average 的命令

top

w

uptime

load average 的值在什么情况可认为是异常的

当平均负载长时间高于CPU数量的70%

load average 平均负载高是因为什么

可能是CPU密集型进程多导致,也可能是I/O繁忙导致

3.pgrep命令

  • 根据特定条件查询进程PID信息

pgrep -l "-log" 

-l:显示进程名 缺省时只输出PID号

pgrep -l -U teacher -t tty2

-U:指定特定用户

-t:指定终端

4.pstree命令

  • 以树形结构列出进程信息
-a显示完整信息
-u列出对应用户名
-p列出对应pid号

三.控制进程

1.进程的启动方式

手工启动

  • 前台启动:用户输入命令,直接执行程序
  • 后台启动:在命令行尾加入“&”符号

调度启动

  • 使用at命令,设置一次性计划任务
  • 使用crontab命令,设置周期性计划任务

2.进程的前后台调度

Ctrl+Z组合键将当前进程挂起,即调入后台并停止执行
jobs [-l]查看处于后台的任务列表
fg+序号将后台的进程恢复到前台运行,可指定任务序号
bg+序号重新开始任务
Ctrl+C组合键中断正在执行的命令

3.终止进程

3.1.Ctrl+C组合键

  • 终端正在执行的命令

3.2.kill、killall命令

  • kill用于终止指定PID号的进程
  • killall用于终止指定名称相关的所有进程
  • -9选项用于强制终止

注意:kill是向进程发送信号的方式杀掉进程

kill默认选项为 -15,发送信号 SIGTERM,表示告诉进程自行停止运行并退出,进程可以忽略
kill -9发送信号 SIGKILL,表示进程要立即退出,且不能被捕捉或忽略
kill -3发送信号 SIGQUIT,表示进程自行退出,并打印进程各个线程的堆栈信息,保存路径为 /proc/${pid}/cwd,文件名为 antBuilderOutput.log
kill -1发送信号 SIGHUP,表示进程重新加载配置文件,不退出

3.3.总结:

如果是让进程自己执行退出离场程序就使用kill命令,这样进程可以自己执行一些清理动作然后退

出。如果进程卡死,你需要记录当时的事故现场,那么应该用kill -3来记录事故现场的信息然后退

出。如果你什么也不需要,就是要杀死一个进程那么就是用kill -9命令,很暴力的杀死它

3.4.pkill命令

  • 根据特定条件终止相应的进程
  • 常用命令选项
  1. -U:根据进程所属的用户名终止相应进程
  2. -t:根据进程所在的终端终止相应进程

四.计划管理任务

1.at命令

  • 一次性计划任务
  1. 由包 at 提供
  2. 依赖与atd服务,需要启动才能实现at任务
  3. at队列存放在/var/spool/at目录中,ubuntu存放在/var/spool/cron/atjobs目录下
  4. 执行任务时PATH变量的值和当前定义任务的用户身份一致

常用参数

atq查看系统中的等待作业
-d删除系统中的等待作业(等效于atrm命令)
-c打印任务的内容
-q使用指定的列队
-f将指定文件提交等待作业
-t以时间的形式提交运行作业

2.crontab命令

  • 按照预先设置的时间周期(分钟、小时、天、月、周)重复执行用户指定的命令操作
  • 属于周期性计划任务
  • 主要设置文件
  1. 全局配置文件,位于文件:/etc/crontab 
  2. 系统默认的设置,位于目录:/etc/cron.*/
  3. 用户定义的设置,位于文件:/var/spool/cron/用户名

2.1管理crontab计划任务

编辑计划任务

crontab -e [-u 用户名] //-u缺省时默认时针对当前用户

查看计划任务

crontab -l [-u 用户名]

删除计划任务

crontab -r [-u 用户名]

常用参数

-e编辑该用户的计时器设置
-l列出该用户的计时器设置
-r删除该用户的计时器设置
-u指定要设定计时器的用户名称
–help显示帮助信息

2.2.crontab任务配置格式

分钟

取值为0到59之间的任意整数

小时取值为0到23之间的任意整数
日期取值为1到31之间的任意整数
月份取值为1到12之间的任意整数
星期取值为0到7之间的任意整数,0或7代表星期日
命令要执行的命令或程序脚本

符号说明

*表示该范围内的任意时间
表示间隔的多个不连续的时间点
-表示一个连续的时间范围
/指定间隔的时间频率 (写在第一个 */2 每隔2分钟)

2.3.相关测试:

答案:

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

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

相关文章

项目小游戏-贪吃蛇

目录 1.游戏开始 - GameStart 1.1cmd命令窗口 调节窗口命令 ​编辑更改窗口命名 ​编辑 1.2 Win32 API win32 API 的介绍: ​编辑 获取控制台坐标COORD 获取控制台句柄: 获取缓冲台光标信息: 获取虚拟键位: 本地初始化 setlocale(); 游戏开始的具体实现&#xff1a…

Cyber Weekly #3

赛博新闻 1、Meta发布最强开源模型Llama3[1] 4月19日凌晨&#xff0c;Meta Llama 3发布&#xff0c;模型包含8B和70B两种参数规模&#xff08;400B还在训练中&#xff09;&#xff0c;Llama 3使用了超过 15T token的训练数据&#xff0c;8B版本数据更新截止至2023年3月&#…

属性文件出现问号,更改配置文件的编码格式

场景 场景&#xff1a;配置了properties文件&#xff0c;结果涉及到中文的部分都是问号原因&#xff1a;因为配置文件的默认编码格式iso的&#xff0c;这种编码格式下压根没有中文解决方案&#xff1a;使用IDEA将全局编码格式设置为utf-8 第一步&#xff1a;File->Settings-…

SRS WebRTC Whip 和 Whep 部署体验问题

whip 報錯 404 webrtc推流 小窗口一闪而过&#xff0c;然后查看f12回复404的报错信息 chrome版本&#xff1a; 正在检查更新 版本 123.0.6312.123&#xff08;正式版本&#xff09; &#xff08;64 位&#xff09; centos 7.9 源码安装部署&#xff0c; 代码分支5.0 完全按…

判断完数(C语言)

一、N-S流程图&#xff1b; 二、运行结果&#xff1b; 三、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>int main() {//初始化变量值&#xff1b;int n 0;int i 1;int j 0;int result 1;//提示用户&#xff1b;printf("请输入一个…

指针专题(3)

1.前言 本节我们书接上文&#xff0c;继续进行指针专题的学习&#xff0c;夯实指针的基础&#xff0c;那么废话不多说&#xff0c;我们正式进入今天的学习 2.字符指针变量 我们知道&#xff0c;字符指针的形式为char*&#xff0c;我们可以取出一个字符的地址&#xff0c;并且…

游戏测试之常见控制技能(下)

备注&#xff1a;未经博主允许禁止转载 个人笔记&#xff08;整理不易&#xff0c;有帮助&#xff0c;收藏点赞评论&#xff0c;爱你们&#xff01;&#xff01;&#xff01;你的支持是我写作的动力&#xff09; 笔记目录&#xff1a;学习笔记目录_pytest和unittest、airtest_w…

4月21敲一篇猜数字游戏,封装函数,void,无限循环,快去体验体验

今天敲一篇猜数字游戏 目录 今天敲一篇猜数字游戏 1.打开先学goto语句&#xff1a; 2.开干&#xff1a; 首次我们学习随机数&#xff1a; 讲解一下&#xff1a; 改用srand; 加入时间变量&#xff1a; 获取时间&#xff1a;哈​编辑 3.我本来想已近够完美了&#xff0…

Redis 逻辑过期策略设计思路

引言&#xff1a; 当我们平常使用Redis缓存的时候&#xff0c;会出现一种场景&#xff0c; redis的key到过期时间了&#xff0c;总是需要到数据库里面去查一遍数据再set回redis&#xff0c;这个时候如果数据库响应比较慢&#xff0c;那么就会造成用户等待&#xff0c;如果刚好…

rancher-rke2 修改--service-cluster-ip-range

一、场景 因为需要部署新版本的ingress-nginx&#xff0c;而部署ingress-nginx的时候需要使用hostnetowrk以及nodeport的端口为80和443&#xff0c;service-node-port-range 默认为30000开始,部署会报错。 二、产生修改的需求 1、api-servier的配置文件位置 默认是没有的&…

【C++】双指针算法:移动零

学完了数据结构和C的STL库&#xff0c;我们需要开始学习算法了。有了前面的基础知识储备&#xff0c;再好好学习算法&#xff0c;有系统&#xff0c;有规律的刷题&#xff0c;总结&#xff0c;咱们的编程能力就会有质的飞跃&#xff01; 1.题目 我们用一个例题来讲解这个算法。…

Docker - 简介

原文地址&#xff0c;使用效果更佳&#xff01; Docker - 简介 | CoderMast编程桅杆https://www.codermast.com/dev-tools/docker/docker-introduce.html Docker是什么&#xff1f; Docker 是一个开源的应用容器引擎&#xff0c;基于 Go 语言 并遵从 Apache2.0 协议开源。 D…

AtCoder Beginner Contest 340

前面两道阅读理解直接跳过 C - Divide and Divide 大意 黑板上有一个数。 执行下列操作&#xff0c;直到黑板上的数全为1: 选择一个不小于2的整数&#xff0c;擦掉。写下和。需要的代价。 当不能继续操作时&#xff0c;总代价是多少&#xff1f; 思路 定义表示黑板上初…

nacos配置mysql(windows)

nacos默认是使用的内置数据库derby ,可通过配置修改成mysql,修改成mysql之后&#xff0c;之前配置在derby的数据会丢失 本文使用mysql版本为8.0.22 nacos版本为2.3.1 在mysql里面先创建一个数据库test(名称自定义&#xff0c;和后面配置文件里面的一样就好了) 在上面创建的数据…

6.SpringBoot 日志文件

文章目录 1.日志概述2.日志作用3.使用和观察日志3.1如何观察日志3.2使用日志3.3日志级别3.4日志持久化3.5日志分割 4.日志框架4.1门面模式(外观模式)4.2 SLF4J框架介绍4.3 日志格式的说明4.3.1日志名称 5.日志颜色设置6.总结 大家好&#xff0c;我是晓星航。今天为大家带来的是…

C# 开源SDK 工业相机库 调用海康相机 大恒相机

C# MG.CamCtrl 工业相机库 介绍一、使用案例二、使用介绍1、工厂模式创建实例2、枚举设备&#xff0c;初始化3、启动相机4、取图5、注销相机 三、接口1、相机操作2、启动方式3、取图4、设置/获取参数 介绍 c# 相机库&#xff0c;含海康、大恒品牌2D相机的常用功能。 底层采用回…

去除图像周围的0像素,调整大小

在做分割任务时&#xff0c;经常需要处理图像&#xff0c;如果图像周围有一圈0像素&#xff0c;需要去除掉&#xff0c;重新调整大小 数组的处理 如果图像的最外一圈为0&#xff0c;我们将图像最外圈的图像0去除掉。 import numpy as npdef remove_outer_zeros(arr):# 获取数…

电脑缺失d3dcompiler_43.dll如何修复?多种修复dll问题的有效方法分享

当用户尝试在个人计算机上运行特定的软件游戏时&#xff0c;系统弹出了一条错误提示信息&#xff0c;明确指出“d3dcompiler_43.dll”文件缺失。这个动态链接库文件(dll)是Direct3D编译器的重要组成部分&#xff0c;对于许多基于Windows操作系统的应用程序&#xff0c;尤其是那…

数据库mysql提权四种烧姿势--UDF反弹启动项MOF

免责声明:本问仅做技术交流与学习,请知法守法,不要乱搞等等 目录 前提条件 如何获取最高权限的密码? 一.UDF提权 利用条件: 信息收集 1-看有无plugin目录 2-开启外链 3-开启外连后,MSF启动~ 4-navicat--利用导出的.dll执行命令 利用原理: 执行命令: 二.反弹提权 …

B2024 输出浮点数 洛谷题单

首选需要进行了解的就是%a.bf所代表的含义就行了&#xff0c;直接莽了&#xff0c;没啥解释的笑脸&#x1f644; 在 Python 中&#xff0c;%a.bf 中的参数 a 和 b 是用来格式化浮点数的输出的&#xff0c;具体含义如下&#xff1a; a 表示总输出宽度&#xff0c;包括小数点、…