Linux:进程与计划任务

文章目录

  • Linux:进程与计划任务
    • 一、进程
      • 1、进程是什么
      • 2、进程状态
    • 二、列出进程命令
      • 1、查看静态的进程统计信息——“ps”
        • Play1:“ps aux”
        • Play2:ps -elf
      • 2、查看静态的进程统计信息——“top”
        • 段首解析
        • 进程信息区解释
    • 三、运行与终止进程
      • 3.1、运行进程
      • 3.2、进程前后台调度
      • 3.3、使用信号控制进程
      • 3.4、终止进程
    • 四、计划任务
      • 一次性计划任务——at
      • 周期性计划任务——crond

Linux:进程与计划任务

一、进程

1、进程是什么

进程的定义:进程是已启动的可执行程序的运行中实例。

  1. 进程由以下组成部分:

    • 已分配内存的地址空间

    • 安全属性,包括所有权凭据和特权

    • 程序代码的一个或多个执行线程

    • 进程状态

  2. 进程的环境包括:

    • 本地和全局变量

    • 当前调度上下文

    • 分配的系统资源,如文件描述符和网络端口

进程上下文:当一个进程从内核中移出,另一个进程成为活动的, 这些进程之间便发生了上下文切换。 操作系统必须记录重启进程和启动新进程使之活动所需要的所有信息。这些信息实际上是进程执行活动过程的描述信息,称作上下文。

现有的(父)进程复制自己的地址空间(fork)来创建一个新的(子)进程结构。每个新进程分配有一个唯一进程 ID(PID),满足跟踪和安全性之需。PID和父进程ID(PPID) 是新进程环境的元素。任何进程可创建子进程。所有进程都是第一个系统进程的后代,Linux系统上,第一个系统进程是systemd

在这里插入图片描述

进程生命周期

2、进程状态

在多任务处理操作系统中,每个CPU(或 CPU核心)在一个时间点上处理一个进程。在进程运行时,它对 CPU 时间和资源分配的直接要求会有变化。进程分配有一个状态,它随着环境要求而改变。

在单CPU系统上,一次只能运行一个进程。可以看到状态为R的几个进程。但是,并非所有进程都连续运行,其中一些进程处于状态等待状态。

在这里插入图片描述

Linux 进程状态
名称标志内核定义的状态名称和描述
RunningRTASK_RUNNING:进程正在CPU上执行,或者正在等待运行。处于运行中(或可运行)状态时,进程可能正在执行用户例程或内核例程(系统调用),或者已排队并就绪。
SleepingSTASK_INTERRUPTIBLE:进程正在等待某一条件:硬件请求、系统资源访问或信号。当事件或信号满足该条件时,该进程将返回到运行中。
SleepingDTASK_UNINTERRUPTIBLE:此进程也在睡眠,与S状态不同,不会响应信号。进程中断可能会导致意外设备状态的情况。
SleepingKTASK_KILLABLE:与不可中断的D状态相同,但有所修改,允许等待中的任务响应要被中断(彻底退出)的信号。实用程序通常将可中断的进程显示为D状态。
SleepingITASK_REPORT_IDLE:D状态的一个子集。在计算负载平均值时,内核不会统计这些进程。用于内核线程。设置了TASK_UNINTERRUPTABLE和TASK_NOLOAD标志。它接受致命信号。
StoppedTTASK_STOPPED:进程已被停止(暂停),通常是通过用户或其他进程发出的信号。进程可以通过另一信号返回到运行中状态,继续执行(恢复)。
StoppedtTASK_TRACED:正在被调试的进程也会临时停止,并且共享同一个T状态标。
ZombieZEXIT_ZOMB:子进程在退出时向父进程发出信号。除进程身份(PID)之外的所有资源都已释。
ZombieXEXIT_DEAD:当父进程清理(获取)剩余的子进程结构时,进程现在已彻底释放。此状态从不会在进程列出实用程序中看到。
Linux 进程状态名称和描述

二、列出进程命令

1、查看静态的进程统计信息——“ps”

ps命令选项包括两部分:限定查看哪些进程和对选定的进程查看他们哪些属性。

ps 命令支持三种选项格式

  • BSD选项,可以分组但不可与短划线同用;不使用-

  • UNIX(POSIX)选项,可以分组但必须以短划线开头;使用单个-

  • GNU长选项,以双短划线开头;使用两个–

Play1:“ps aux”
选项解释
a显示现行终端下的所有进程,包括其它用户的进程。
u显示进程的归属用户及内存的使用情况。
x显示所有终端的进程。
h不显示标题列。
ps [BSD]选项常用

在这里插入图片描述

ps aux命令
列名描述
USER进程的用户。
PID进程的ID。
%CPU进程占用的CPU百分比,占用越高,进程越耗费资源。
%MEM占用内存的百分比。
VSZ该进程使用的虚拟内存量(KB)。
RSS该进程占用的实际物理内存量(KB)。
TTY启动进程的终端名。不是从终端启动的进程则显示为 ?
STAT该进程的状态
START该进程被启动时间。
TIME该进程实际使用CPU的时间。
COMMAND进程的名称与参数
ps aux命令各列解析
Play2:ps -elf
选项解释
-e显示系统内的所有进程信息。
-l使用长格式显示进程信息。
-f使用完整的格式显示进程信息。
-a显示现行终端下的所有进程。
-T查看线程信息。
-C <进程名称>显示指定进程名的信息。
-p <进程pid>显示指定pid的进程的信息。
-H显示树状结构,表示进程间的相互关系。
–no-headers不显示标题列。
ps UNIX(POSIX)选项常用

在这里插入图片描述

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

2、查看静态的进程统计信息——“top”

在这里插入图片描述

top命令
选项描述
P根据CPU使用百分比大小进行排序
M根据启动时间进行排序
N根据启动时间进行排序
c切换显示命令名称和完整命令行
h可以获得 top程序的在线帮助信息
k根据提示输入指定进程的 PID 号并按 Enter 键终止对应的进程
q退出 top 程序
1显示CPU个数和状态
top常用选项
段首解析
top - 18:58:48 up  1:51,  1 user,  load average: 0.00, 0.00, 0.00
Tasks: 298 total,   1 running, 297 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.1 sy,  0.0 ni, 99.8 id,  0.0 wa,  0.1 hi,  0.0 si,  0.0 st
MiB Mem :   3615.9 total,   2266.4 free,   1021.0 used,    574.3 buff/cache
MiB Swap:   8028.0 total,   8028.0 free,      0.0 used.   2594.8 avail Mem 
  • 第一行:任务队列信息
18:58:48        ##系统时间
up  1:51        ##系统已运行时长
1 user            ##当前登录用户数
load average: 0.00, 0.00, 0.00        ##系统负载,即单位时间内系统处理的任务数,后面三个数值分别为1分钟、5分钟、15分钟前到现在的平均值
  • 第二行:进程信息
Tasks##总进程数
running##正在运行的进程数
sleeping##休眠的进程数
stopped##中止的进程数
zombie##僵死的进程数
  • 第三行:CPU的信息
us        ##用户占用
sy        ##内核占用
ni        ##优先级调度占用
id        ##空闲CPU,要了解空闲的 CPU 百分比,主要看%id 部分
wa        ##I/O 等待占用
hi        ##硬件中断占用
si        ##软件中断占用
st        ##虚拟化占用
  • 第四行:内存的信息
total        ##总内存空间
free        ##空闲内存
used        ##已用内存
buff/cache    ##物理内存和交换内存的缓冲区总和
  • 第五行:交换空间的信息
total        ##总交换空间
free        ##空闲交换空间
used        ##已用交换空间
avail Mem    ##可用物理空间
进程信息区解释
列名描述
PID进程id
USER进程所有者的用户名
PR优先级
NI谦让度值。负值表示高优先级,正值表示低优先级
VIRT进程使用的虚拟内存总量,单位kb
RES进程使用的物理内存大小,单位kb
SHR共享内存大小,单位kb
S进程状态
%CPU上次更新到现在的CPU时间占用百分比
%MEM进程使用的物理内存百分比
TIME+进程使用的CPU时间总计,单位1/100秒
COMMAND命令名/命令行
进程信息区各列解释

三、运行与终止进程

3.1、运行进程

前台进程:在命令行输入命令,直接运行;一个终端中只有一个前台进程,该进程可以终端窗口中读取输入和响应键盘生成的信号。
后台进程:在命令末尾追加 & 符号。;在后台运行的进程,该进程不能从终端读取输入或接收键盘产生的中断。后台进程可能暂停,也可能正在运行。如果正在运行的后台作业尝试从终端读取,它将自动暂停。

3.2、进程前后台调度

  • ctrl + z #将前台进程挂起暂停并调入到后台

  • jobs -l #查看挂起调度到后台的进程列表和序号

  • fg <序号> #将挂起到后台的进程调度到前台继续运行

3.3、使用信号控制进程

生成信号(signal)的事件可以是错误,外部事件或者使用信号发送命令或键盘序列。

信号编号端名称定义用途
1HUP挂起用于报告终端控制进程的终止,也用于请求进程重新初始化(重新加载配置)而不终止。
2INT键盘中断导致程序终止。可以被拦截或处理。通过按键序列(Ctrl+c)发送。
3QUIT键盘退出与INT相似:在终止时添加进程转储。通过按键序列(Ctrl+)发送。
9KILL中断,无法拦截导致立即终止程序。无法被拦截、忽略或处理;总是致命的。
15TERM终止kill相关命令,默认信号,导致程序终止。和KILL不同,可以被拦截、忽略或处理。要求程序终止的“友好”方式;允许自我清理。
18CONT继续发送至进程使其恢复(若已停止)。无法被拦截。即使被处理,也始终恢复进程。
19STOP停止,无法拦截暂停进程。无法被拦截或处理。
20TSTP键盘停止和ST0P不同,可以被拦截、忽略或处理。通过按SUSP键序列(Ctrl+z)发送。
基本进程管理信号

3.4、终止进程

  • kill

  • killall <进程名>

  • pkill <关键词> -U <用户名> -t <终端>

kill是如何杀掉进程的: 向进程发送信号的方式杀掉进程

kill 参数

kill 默认选项为 -15 :发送信号 SIGTERM,表示告诉进程自行停止运行并退出,进程可以忽略

这种方式可能会存在一些问题:进程的子进程可能会无法终止,并继续消耗系统资源

kill -9 :发送信号 SIGKILL,表示进程要立即退出,且不能被捕捉或忽略

kill -3:发送信号 SIGQUIT,表示进程自行退出,并打印进程各个线程的堆栈信息,保存路径为 /proc/${pid}/cwd,文件名为 antBuilderOutput.log

kill -1:发送信号 SIGHUP,表示进程重新加载配置文件,不退出

四、计划任务

一次性计划任务——at

at是Linux中调度未来工作的一种解决方案。at不是一个单独的工具,包括系统后台进程(atd)和一系列的命令(例如at atq等等)与后台进程atd交互。

atd提供26个队列,a到z,排的越后优先级越低。使用at命令排队调度jobs。

语法:at

  • at命令从标准输入中读取要执行的命令。手动输入命令时,按ctrl+D完成输入。

  • 对于大量的命令或者错字敏感的命令,可以通过重定向从脚本中读取,例如at now +5min < myscript,也可以使用-f file 从特定文件中读取。

timespec允许多种时间组合。典型的时间,02:00pm,15:43,或者teatime,后接日期或
未来的天数。

周期性计划任务——crond

crond守护进程会读取多个配置文件(每个用户对应一个配置文件),以及针对系统周期性作业的配置文件。

  • 普通用户可以使用crontab命令管理自己的周期性作业。

  • root用户可以使用参数-u username管理其他用户周期性作业。

语法:crontab -e [-u username]

每一个jobs包涵6个部分,时间和执行的命令内容。前五个是时间,最后一个是执行的命令。

crontab文件中的字段按以下顺序显示:

在这里插入图片描述

  • 分钟
  • 小时
  • 几号
  • 星期几
  • 命令
字段含义例如
*任意时间点
,多个不连续的时间点“1,7”表示1或7
-连续的时间点“1-7”表示1至7
/间隔的时间频率“*/7”表示每隔7
前五字段可以使用字段

基本命令

命令用途
crontab -l列出当前用户的计划作业
crontab -r删除当前用户的所有作业
crontab -e编辑当前用户的作业
crontab filename删除所有作业,并替换为从filename读取的作业。如果没有指定文件,则使用stdin

例:配置 cron 作业,该作业每隔 2 分钟以 natasha 用户身份执行以下命令:强制复制/var/log/目录到/opt/

# 验证crond服务状态
[root@servera ~]# systemctl is-enabled crond.service
enabled
[root@servera ~]# systemctl is-active crond.service
active
# 添加cron作业,内容格式可以参考/etc/crontab
[root@servera ~]# crontab -u natasha -e
*/2 * * * * logger "EX200 in progress"
# 验证文件内容
[root@servera ~]# crontab -u natasha -l
*/2 * * * * \cp -f -r /var/log/ /opt/
g/目录到/opt/
```bash
# 验证crond服务状态
[root@servera ~]# systemctl is-enabled crond.service
enabled
[root@servera ~]# systemctl is-active crond.service
active
# 添加cron作业,内容格式可以参考/etc/crontab
[root@servera ~]# crontab -u natasha -e
*/2 * * * * logger "EX200 in progress"
# 验证文件内容
[root@servera ~]# crontab -u natasha -l
*/2 * * * * \cp -f -r /var/log/ /opt/

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

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

相关文章

一致性hash

一、什么是一致性hash 普通的hash算法 (hashcode % size )&#xff0c;如果size发生变化&#xff0c;几乎所有的历史数据都需要重hash、移动&#xff0c;代价非常大&#xff0c;常见的java中的hashmap就是如此。 那如果在hash表扩容或者收缩的时候size能够保持不变&#xff0…

React-editor-js not showing up in a function component

React-editor-js not showing up in a function component react-editor-js 在react 函数组件中显示不出来 真的&#xff0c;我马上就想放弃它了。但是看它周下载量还挺多&#xff0c;我不信别人没遇到过。于是我继续在网络上挖呀挖。只是我一开始的方向错了。我一直以为我的写…

学习Rust第14天:HashMaps

今天我们来看看Rust中的hashmaps&#xff0c;在 std::collections crate中可用&#xff0c;是存储键值对的有效数据结构。本文介绍了创建、插入、访问、更新和迭代散列表等基本操作。通过一个计算单词出现次数的实际例子&#xff0c;我们展示了它们在现实世界中的实用性。Hashm…

安居水站:四大学习法:成为学霸的有效途径

摘要&#xff1a; 本文详细探讨了全球公认的四种高效学习方法——费曼学习法、西蒙学习法、思维导图法和SQ3R阅读法&#xff0c;通过引入相关数据、名人名言以及名人故事&#xff0c;深入分析了这些方法的核心理念、实施步骤及其在学习过程中的关键作用。 一、引言 学习是人…

《QT实用小工具·三十八》QT炫酷的菜单控件

1、概述 源码放在文章末尾 非常飘逸的 Qt 菜单控件&#xff0c;带有各种动画效果&#xff0c;用起来也十分方便。 无限层级&#xff0c;响应键盘、鼠标单独操作&#xff0c;支持单快捷键。 允许添加自定义 widget、layout&#xff0c;当做特殊的 QDialog 使用。 项目demo演示…

如何理解自然语言处理中的位置编码(Positional Encoding)

在自然语言处理和特别是在使用Transformer模型中,位置编码(Positional Encoding)是一个关键的概念。它们的作用是为模型提供序列中各个元素的位置信息。由于Transformer架构本身并不像循环神经网络(RNN)那样具有处理序列的固有能力,位置编码因此显得尤为重要。 为什么需…

MongoDB数据恢复—拷贝MongoDB数据库文件后无法启动服务的数据恢复案例

服务器数据恢复环境&#xff1a; 一台Windows Server操作系统服务器&#xff0c;服务器上部署MongoDB数据库。 MongoDB数据库故障&检测&#xff1a; 工作人员在未关闭MongoDB数据库服务的情况下&#xff0c;将数据库文件拷贝到其他分区。拷贝完成后将原MongoDB数据库所在分…

CCS项目持续集成

​ 因工作需要&#xff0c;用户提出希望可以做ccs项目的持续集成&#xff0c;及代码提交后能够自动编译并提交到svn。调研过jenkins之后发现重新手写更有性价比&#xff0c;所以肝了几晚终于搞出来了&#xff0c;现在分享出来。 ​ 先交代背景&#xff1a; 1. 代码分两部分&am…

Android Studio开发之路(八)Spinner样式设置

一、需求 白色背景显示下拉框按钮 问题&#xff1a; 设置Spinner的背景可以通过设置background&#xff1a; android:background"color/white",但是一旦设置了这个值&#xff0c;右侧的下拉按钮就会消失 方法一、自定义一个style&#xff08;不成功&#xff09; …

大模型推理框架Vllm和TensorRT-LLM在ChatGLM2-6B模型的推理速度对比

目录 一、框架的特点简介 1、vllm pagedAttention Continuous batching 2、TensorRT-LLM WOQ——W4A16、W8A16 SQ——SmoothQuant AWQ——Activation-aware Weight Quantization 二、web推理服务 vllm_service tensortllm_service 三、推理速度对比 1、非业务数据 …

第48期|GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区&#xff0c;集成了生成预训练Transformer&#xff08;GPT&#xff09;、人工智能生成内容&#xff08;AIGC&#xff09;以及大语言模型&#xff08;LLM&#xff09;等安全领域应用的知识。在这里&#xff0c;您可以找…

游戏陪玩系统app

游戏陪玩系统APP为用户提供了一个便捷的平台&#xff0c;让他们能够轻松找到合适的陪玩者&#xff0c;一同享受游戏的乐趣。以下是对您提到的功能的详细解释&#xff1a; 游戏约玩&#xff1a; 在陪玩APP上&#xff0c;用户可以浏览陪玩者的信息&#xff0c;包括他们的游戏技能…

用Excel做一个功能完备的仓库管理系统

1 基本设计思路 用到的Excel技术&#xff1a;sumif, vlookup, 表格(table)。基本思路&#xff1a;在有基础的商品、仓库等信息的情况下&#xff0c;对商品的每一个操作都有对应的单据&#xff0c;然后再汇总统计。标识&#xff1a;为了在不同的维度统计数量&#xff0c;各单据…

【七】jmeter5.5+influxdb2.0+prometheus+grafana

参考文章&#xff1a;https://blog.csdn.net/wenxingchen/article/details/126892890 https://blog.csdn.net/Zuo19960127/article/details/119726652 https://blog.csdn.net/shnu_cdk/article/details/132182858 promethus参考 由于自己下载的是infuldb2.0&#xff0c;所以按照…

Hive服务详解

Hive服务 HiveServer2、Hive Metastore 服务服务共同构成了 Hive 生态系统中的核心功能&#xff0c;分别负责管理元数据和提供数据查询服务&#xff0c;为用户提供了一个方便、高效的方式来访问和操作存储在 Hive 中的数据。 1. Hive 查询服务&#xff08;HiveServer2&#xf…

jmeter之连接MySQL数据库

jmeter连接mysql数据库 mysql官网下载地址&#xff1a;MySQL :: Download Connector/J 步骤如下&#xff1a; 1、下载mysql的jar包放入到jmeter的lib/ext下&#xff0c;然后重启jmeter 链接: https://pan.baidu.com/s/1rRrMQKnEuKz8zOUfMdMHFg?pwdawfc 提取码: awfc 2、配置…

构建NodeJS库--前端项目的打包发布

1. 前言 学习如何打包发布前端项目&#xff0c;需要学习以下相关知识&#xff1a; package.json 如何初始化配置&#xff0c;以及学习npm配置项&#xff1b; 模块类型type配置&#xff0c; 这是nodejs的package.json的配置main 入口文件的配置 webpack 是一个用于现代 JavaSc…

ElasticSearch总结二

正向索引和倒排索引&#xff1a; 正向索引&#xff1a; 比方说我这里有一张数据库表&#xff0c;那我们知道对于数据库它一般情况下都会基于i d去创建一个索引&#xff0c;然后形成一个b树。 那么你根据i d进行检索的速度&#xff0c;就会非常的快&#xff0c;那么这种方式的…

Cesium之加载GeoServer或geowebcache的WMTS服务

文章目录 Cesium加载GeoServer的WMTS关键代码WMTS服务地址获取核心参数获取 Cesium加载GeoServer的WMTS关键代码 Cesium之加载GeoServer或geowebcache的WMTS服务关键代码如下 var url2"http://localhost:8090/geowebcache/service/wmts/rest/arcgis_com/{style}/{TileMat…

在excel中,如何在一个表中删除和另一个表中相同的数据?

现在有A表&#xff0c;是活动全部人员的姓名和学号&#xff0c;B表是该活动中获得优秀人员的姓名和学号&#xff0c; 怎么提取没有获得优秀人员的名单&#xff1f; 这里提供两个使用excel基础功能的操作方法。 1.条件格式自动筛选 1.1按住Ctrl键&#xff0c;选中全表中的姓…