进程和计划任务以及步骤
进程
进程和程序有关,把该文件放到内存里,进程是动态的,不同时刻的状态不一样
内存:放置正在运行的程序和所需数据的位置
程序启动 ——》将相关文件和数据放到内存里 ——》进程(processes)
进程相关命令
| 命令 | 说明 |
| ps | 查询系统当前的静态进程信息 ps:processes statistic |
| ps a (BSD风格) | 显示所有进程信息 |
| ps au (BSD风格) | 以用户为主显示进程信息 |
| ps aux (BSD风格) | 显示当前用户在所有终端下所有进程信息 |
| ps -elf | 列出系统上所有进程的详细信息 |
| top | 动态查看系统的实时状态 |
| pgrep -l 进程名 | 显示指定进程的相关进程的对应id和进程名称 |
| pstree -aup | 显示进程树和响应pid |
| jobs -l | 查看当前被挂起的进程的任务号和进程号 示例:[1]+ 1832 停止 任务号 进程号 |
| fg 任务号 | 将挂起的进程放到前台运行 |
| bg 任务号 | 将被挂起的进程放到后台运行 |
| kill [选项] 进程号 | 杀死指定进程 针对进程号的命令 常用信令选项: -1:重新初始化进程,并且进程pid不会改变 -2:结束进程,但不强制;Ctrl + C 是对前台进程执行的kill -2指令 -9:发送信令,强制进程 -15:正常结束进程,也是kill命令不加选项的默认信令 -19:暂停进程 |
| pkill [选项] 进程名 | 可以针对进程名、指定用户启动的进程、终端的命令 杀死指定进程 |
| pkill -9 -U 用户名 | 强制杀死指定用户进程 |
| killall [选项] 进程名 | 针对进程名 杀死指定进程 |
| netstat -anpt | grep httpd | 查看指定名为httpd的进程的相关信息 -a:显示所有进程 -n:以数字显示地址相关信息 -p:列出协议 -t:列出tcp相关信息 |
| 快捷键 | 说明 |
| Ctrl + C | 取消当前前台程序 |
| Ctrl + Z | 将前台程序挂起到后台暂停起来,该进程处于停止状态 |
| ps命令选项参数 | 说明 |
| -e | (every)显示所有进程 |
| -u | (user)显示面向用户的进程的详细信息,如进程所有者、CPU 使用率、内存使用率等 |
| -f | (full-format)以全格式的列表显示进程的信息,包括进程之间的层级关系 |
| -p | (pid)查找具有指定进程 ID 的进程 |
| -C | (Command)查找具有指定命令名称的进程 |
| -aux | 在当前用户下以详细格式显示所有正在运行的进程 其中 x 是表示在没有控制终端的情况下列出进程,这些显示的主要是启动并运行在后台的进程 |
终端详细信息解析

| ps -elf信息列 | 说明 |
| F(flags) | 该进程的特定标志 |
| S(stat) | 进程状态 |
| PPID(Parent Process ID) | 该进程的父进程ID,创建当前进程的进程ID,如果没有父进程就显示0 |
| UID | 进程所有者的用户名;和USER一样 |
| C | CPU的利用率,和%CPU一样 |
| PRI(Priority:优先级) | 进程调度的优先级,越小越优先 也叫实时进程 或 动态优先级(0 ~ 99) 取值范围:0 ~ 139(共140个) |
| NI(nice) | 进程谦让度(对CPU资源的抢夺能力),NI值越高,优先级越低 也叫非实时进程 或 静态优先级,取值范围:-20 ~ 19(共40个) |
| ADDR | 内存地址,该进程在运行时所用的数据在内存中的地址 |
| SZ | 进程使用的交换空间(虚拟内存)的大小(以KB为单位) |
| WCHAN(Waiting Channel) | 如果该进程处于睡眠状态,这一列将显示进程正在等待的资源或条件 |
| STIME | 该进程启动时间 |
| ps -aux信息列 | 说明 |
| USER | 进程所有者的用户名 |
| PID(Procedure ID) | 该进程唯一进程ID,每一个进程在启动时,系统内核会分配一个运行时的唯一标识ID |
| %CPU | 该进程使用的 CPU 资源的百分比 |
| %MEM | 该进程使用的内存资源的百分比 |
| VSZ(Virtual Memory Size) | 该进程占用虚拟内存的大小;交换分区的占用量;以 KB 为单位 |
| RSS(Resident Set Size) | 该进程占用的物理内存大小;以 KB 为单位 |
| TTY | 该进程在哪个终端上运行 若该进程不在终端上运行则显示“?” 如果显示的是tty1-tty6表示本机登录,显示pts/0等,表示为网络连接进主机。 TTY是电传打字机的缩写;teletypewriter;TeleTYpe,是早期古老的一种终端设备 |
| STAT | 进程当前运行状态 |
| START | 该进程启动的时间点 |
| TIME | 进程运行过程中占用 CPU 的总时间 |
| CMD | 启动进程的命令的名称 |
前台和后台的概念
- 前台:进程独占终端,无法再执行其他指令
- 后台:进程位于后端运行,不独占终端
nice命令
也叫非实时进程 或 静态优先级,如果要把nice值映射到PRI,是100 ~ 139,而实时进程是0 ~ 99
| 命令 | 说明 |
| nice | 查看当前进程的nice值,不手动设置就默认为0 静态优先级,是我们定义的 nice值越高,优先级越低 |
| nice -10 bash | 将bash shell的静态优先级提高10个单位的优先级 |
| nice --10 bash | 将bash shell的静态优先级降低10个单位的优先级 |
终端类型
- tty终端
- 虚拟终端
- pts终端
- 伪终端
Linux的桌面只是系统中的一个应用程序(内核之外),默认安装在TTY1终端之上
进程的状态
第一个字母表示进程的状态,后续的文本表示进程其他的属性
| 进程状态 | 说明 |
| D | 不可唤醒的休眠进程 |
| R | 正在运行的进程 |
| S | 休眠进程 |
| T | 暂时停止的进程 |
| Z | 僵尸进程 父进程没有回收释放已经停止的进程,就会形成僵尸进程,一直占用资源 |
| s | 父进程 |
| + | 前台的进程 直接在终端下运行的程序,占据了终端,占据时不能正常使用其他命令 |
| 高优先级 | |
| N | 低优先级 |
代码风格
Linux环境下命令的选项大致可分为3个风格
- Unix风格:“ls -a”、“ls -Alh”
- BSD风格:“tar xzf”、“ps aux”
- GNU风格(Gnu is Not Unix):如“gzip --help”
top界面解析
使用top命令显示实时进程动态

| top界面信息 | 说明 |
| top | 系统当前时间 |
| up | 该主机运行时间 2:14表示运行了2小时14分钟 |
| user | 当前系统登录的用户数量 |
| load average | 系统负载平均值:最近一分钟的负载,最近5分钟的负载,最近15分钟的负载 数字越小代表负载越低,最近15分钟的最具备参考价值 |
| Tasks | 任务数量:当前进程数量 total,正在运行的 running,正在休眠的 sleeping,正在停止的 stopped 僵尸进程 zombie |
| %Cpu(s) | CPU占用率:用户占用的% us,系统内核% sy,改变静态优先级的进程% ni 空闲进程% id (idle),等待 I/O 完成的 CPU 百分比 wa,硬中断占用% hi,软中断占用% si,虚拟CPU% st |
| KiB Mem | 总物理内存空间 total,空闲内存空间 free,已使用空间 used,缓冲、缓存区总大小 buff/cache |
| KiB Swap | 交换分区总大小 total,空闲空间 free,已使用空间 used,可用物理内存空间 avail Mem |
| top进程信息列 | 说明 |
| PR | 和PRI一样,代表优先级 |
| VIRT | 虚拟内存使用量 |
| RES | 物理内存使用量 |
| SHR | 共享内存大小 |
缓冲区(buffer)
内存 ——》硬盘
缓冲区是一块内存区域,用于临时存储数据,以便在不同速度的设备(比如内存和硬盘)之间传输数据时起到协调作用。
当程序需要向硬盘写入数据时,数据首先被写入缓冲区。当缓冲区满或满足某些条件(比如占满三分之一)时,缓冲区中的数据会一次性写入硬盘。这样做的好处是可以减少直接写入硬盘的次数,提高写操作的效率。
缓存区(cache)
硬盘 ——》内存 ——》CPU
- 当程序需要数据时,数据首先从硬盘读取到内存中。
- 而内存作为CPU和硬盘之间的桥梁,具有比硬盘快得多的读取速度。数据在内存中,CPU就可以直接从内存中读取到CPU缓存中,而不需要等待硬盘的慢速响应。
- 因为内存的速度仍然跟不上CPU的速度,因此这些数据会先被加载到CPU缓存中(三级缓存,二级缓存) ——》寄存器 ——》运算器。
计划任务
-
一次性任务
- 在未来的某一个时间运行一个任务
-
周期性任务
- 在未来的某一个固定的时间周期性地运行任务
一次性任务
| 命令 | 说明 |
| yum -y install at | 安装相关软件包 |
| systemctl start atd | 运行该软件对应服务 |
| at 时间(23:30) | 创建一个于23:30运行的一次性任务 |
| atq | 查看创建的计划任务 |
| atrm 任务编号 | 删除指定任务号的计划任务 |
| 快捷键 | 说明 |
| Ctrl + D | 退出任务计划编辑界面 |
周期性任务
- 分钟(0 - 59)
- 小时(0 - 23)
- 日期(1 - 31)
- 月份(1 - 12 或缩写如 jan, feb 等)
- 星期(0 - 7,其中 0 和 7 都代表星期日,或缩写如 sun, mon 等)
实验文字步骤
- 在 /etc/cron.hourly/ 目录下放置或创建要执行的脚本
- chmod +x 文件名.sh 给脚本文件添加执行的权限
- 通过 vim /etc/crontab 命令添加周期性任务
- systemctl restart crond 重启相关服务
- 最后可以通过run-parts命令测试周期性任务
实验图片步骤
在 /etc/cron.hourly/ 下编写脚本文件

编辑/etc/crontab文件

五个*号对应5种日期单位
每分钟 每小时 每天 每月的这一天 每周的周几
语法:* * * * * 要执行该命令的用户 要执行的命令 执行脚本的路径
使用run-parts命令执行脚本,然后查看test文件是否被echo命令追加了字符串

因为设置的是每隔一分钟执行一次,所以过了几分钟就有了很多追加内容

| 命令 | 说明 |
| crontab -e | 在root用户下添加计划任务 脚本内使用的命令最好用绝对路径 |
| crontab -l -u [用户名] | 查询执行用户的计划任务 |
| crontab -e -u 用户名 | 给指定用户添加计划任务 以用户为单位,分别指定计划任务 |
相关文章:
进程和计划任务以及步骤
进程 进程和程序有关,把该文件放到内存里,进程是动态的,不同时刻的状态不一样 内存:放置正在运行的程序和所需数据的位置 程序启动 ——》将相关文件和数据放到内存里 ——》进程(processes) 进程相关命令 …...
使用Python实现深度学习模型:序列到序列模型(Seq2Seq)
序列到序列(Seq2Seq)模型是一种深度学习模型,广泛应用于机器翻译、文本生成和对话系统等自然语言处理任务。它的核心思想是将一个序列(如一句话)映射到另一个序列。本文将详细介绍 Seq2Seq 模型的原理,并使…...
力扣283. 移动零
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出:[1,3,12,0,0] 示例 2: 输入: nums [0] …...
二叉树的顺序结构(堆的实现)
前言 普通的二叉树是不适合用数组来存储的,因为可能会存在大量的空间浪费。而完全二叉树更适合使用顺序结 构存储。 现实中我们通常把堆 ( 一种二叉树 ) 使用顺序结构的数组来存储,需要注意的是这里的堆和操作系统 虚拟进程地址空间中的堆是两回事&…...
2024大模型如何学习【附学习资料】
摘要: 通过深入了解本文中的这些细节,并在实际项目中应用相关知识,将能够更好地理解和利用大模型的潜力,不仅在学术研究中,也在工程实践中。通过不断探索新方法、参与项目和保持热情,并将其应用于各种领域&…...
计算机组成原理·考点知识点整理
根据往年考试题,对考点和知识点的一个整理。 校验编码 码距 一种编码的最小码距,其实就是指这种编码的码距。码距有两种定义: 码距所描述的对象含义 2 2 2 个特定的码其二进制表示中不同位的个数一种编码这种编码中任意 2 2 2 个合法编码的…...
python-datetime模块时间戳常用方法汇总
文章目录 datetime模块常用方法1、导入模块2、获取当前日期和时间3、获取当前日期4、创建特定日期或时间5、日期和时间的运算6、使用timedelta运算日期时间创建 timedelta 对象timedelta 的加减运算timedelta 的属性timedelta 的比较示例代码格式化日期和时间获取日期和时间的各…...
【Python报错】已解决ModuleNotFoundError: No module named ‘timm’
成功解决“ModuleNotFoundError: No module named ‘timm’”错误的全面指南 一、引言 在Python编程中,经常会遇到各种导入模块的错误,其中“ModuleNotFoundError: No module named ‘timm’”就是一个典型的例子。这个错误意味着你的Python环境中没有安…...
【设计模式】适配器模式(结构型)⭐⭐⭐
文章目录 1.概念1.1 什么是适配器模式1.2 优点与缺点 2.实现方式2.1 类适配器模式2.2 对象适配器模式 3 Java 哪些地方用到了适配器模式4 Spring 哪些地方用到了适配器模式 1.概念 1.1 什么是适配器模式 简单来说,适配器模式就是作为两个不兼容接口之间的桥梁。 1.…...
云原生周刊:Gateway API v1.1 发布 | 2024.6.3
开源项目推荐 Grafana Tanka Tanka 是 Grafana 开发的一款用于 Kubernetes 的灵活、可重用和简洁的配置工具,是使用 YAML 进行 Kubernetes 配置的一种替代方案。 pv-migrate pv-migrate 是一个 CLI 工具/kubectl 插件,可以轻松地将一个 Kubernetes PersistentVo…...
KotlinConf 2024:深入了解Kotlin Multiplatform (KMP)
KotlinConf 2024:深入了解Kotlin Multiplatform (KMP) 在近期的Google I/O大会上,我们推荐了Kotlin Multiplatform (KMP)用于跨移动、网页、服务器和桌面平台共享业务逻辑,并在Google Workspace中采用了KMP。紧接着,KotlinConf 2…...
探索ChatGPT-4在解决化学知识问题上的研究与应用
1. 概述 近年来,人工智能的发展主要集中在 GPT-4 等大型语言模型上。2023 年 3 月发布的这一先进模型展示了利用广泛知识应对从化学研究到日常问题解决等复杂挑战的能力。也开始进行研究,对化学的各个领域,从化学键到有机化学和物理化学&…...
性能狂飙:SpringBoot应用优化实战手册
在数字时代,速度就是生命,性能就是王道!《极速启航:SpringBoot性能优化的秘籍》带你深入SpringBoot的内核,探索如何打造一个飞速响应、高效稳定的应用。从基础的代码优化到高级的数据库连接池配置,再到前端…...
Github上一款开源、简洁、强大的任务管理工具:Condution
Condution 是一款开源任务管理工具,它以简洁易用、功能强大著称。它旨在为用户提供一个简单高效的平台,帮助他们管理日常任务、提高工作效率。 1. Condution 的诞生背景 现如今,市面上存在着许多任务管理软件,但它们往往价格昂贵…...
LeetCode-2938. 区分黑球与白球【贪心 双指针 字符串】
LeetCode-2938. 区分黑球与白球【贪心 双指针 字符串】 题目描述:解题思路一:贪心解题思路二:一次遍历统计1的个数,找0后累加左边的1的个数解题思路三: 题目描述: 桌子上有 n 个球,每个球的颜色…...
深度神经网络——什么是扩散模型?
1. 概述 在人工智能的浩瀚领域中,扩散模型正成为技术创新的先锋,它们彻底改变了我们处理复杂问题的方式,特别是在生成式人工智能方面。这些模型基于高斯过程、方差分析、微分方程和序列生成等坚实的数学理论构建。 业界巨头如Nvidia、Google…...
有代码冗余的检查工具嘛
是的,有一些代码质量工具可以帮助检查冗余代码。这些工具可以分析代码库,并识别出重复、冗余或不必要的代码片段。一些流行的代码质量工具包括: PMD: PMD 是一个开源的静态代码分析工具,支持多种编程语言,包括 Java、…...
3D培训大师:快速输出标准3D课件,打造沉浸式培训体验
随着技术的日新月异和市场的迅猛扩张,企业对员工专业技能培训的需求日益凸显。传统的培训方式往往依赖于实地操作、现场指导,这不仅需要大量的人力、物力和时间成本,而且存在安全风险。特别是化工、机械制造等行业,实操培训的成本…...
Python接口自动化测试:Json 数据处理实战
🍅 视频学习:文末有免费的配套视频可观看 🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 上一篇说了关于json数据处理,是为了断言方便,这篇就带各位小伙伴实战一下…...
Java概述 , Java环境安装 , 第一个Hello World
环境变量,HelloWorld 1.会常用的dos命令 2.会安装java所需要的环境(jdk) 3.会配置java的环境变量 4.知道java开发三步骤 5.会java的入门程序(HelloWorld) 6.会三种注释方式 7.知道Java入门程序所需要注意的地方 8.知道println和print的区别第一章 Java概述 1.1 JavaSE体系介绍…...
深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...
聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...
【Java学习笔记】BigInteger 和 BigDecimal 类
BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点:传参类型必须是类对象 一、BigInteger 1. 作用:适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...
4. TypeScript 类型推断与类型组合
一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式,自动确定它们的类型。 这一特性减少了显式类型注解的需要,在保持类型安全的同时简化了代码。通过分析上下文和初始值,TypeSc…...
提升移动端网页调试效率:WebDebugX 与常见工具组合实践
在日常移动端开发中,网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时,开发者迫切需要一套高效、可靠且跨平台的调试方案。过去,我们或多或少使用过 Chrome DevTools、Remote Debug…...
0x-3-Oracle 23 ai-sqlcl 25.1 集成安装-配置和优化
是不是受够了安装了oracle database之后sqlplus的简陋,无法删除无法上下翻页的苦恼。 可以安装readline和rlwrap插件的话,配置.bahs_profile后也能解决上下翻页这些,但是很多生产环境无法安装rpm包。 oracle提供了sqlcl免费许可,…...
ubuntu22.04 安装docker 和docker-compose
首先你要确保没有docker环境或者使用命令删掉docker sudo apt-get remove docker docker-engine docker.io containerd runc安装docker 更新软件环境 sudo apt update sudo apt upgrade下载docker依赖和GPG 密钥 # 依赖 apt-get install ca-certificates curl gnupg lsb-rel…...
Spring AOP代理对象生成原理
代理对象生成的关键类是【AnnotationAwareAspectJAutoProxyCreator】,这个类继承了【BeanPostProcessor】是一个后置处理器 在bean对象生命周期中初始化时执行【org.springframework.beans.factory.config.BeanPostProcessor#postProcessAfterInitialization】方法时…...
