Linux:进程与计划任务

news2025/1/10 16:48:18

文章目录

  • 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.coloradmin.cn/o/1619086.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

为什么要写技术方案?

技术方案是为研究解决各类技术问题&#xff0c;有针对性&#xff0c;系统性的提出的方法、应对措施及相关对策。技术方案设计是一个技术开发者必备的能力&#xff0c;特别是对于高级、资深、架构师等角色。技术方案设计不仅能够帮助我们明确需求&#xff0c;规划架构&#xff0…

2024新算法爱情进化算法(LEA)和经典灰狼优化器(GWO)进行无人机三维路径规划设计实验

简介&#xff1a; 2024新算法爱情进化算法&#xff08;LEA&#xff09;和经典灰狼优化器&#xff08;GWO&#xff09;进行无人机三维路径规划设计实验。 无人机三维路径规划的重要意义在于确保飞行安全、优化飞行路线以节省时间和能源消耗&#xff0c;并使无人机能够适应复杂环…

windows系统下python开发工具安装

一. 简介 前一篇文章学习了安装 python解释器&#xff0c;文章如下&#xff1a; windows系统下python解释器安装-CSDN博客 本文来学习如何下载安装 python开发工具 PyCharm。 二. python开发工具 PyCharm下载安装 1. PyCharm官网 PyCharm开发工具 PyCharm为 python代码…

STM32的GPIO输入和输出函数详解

系列文章目录 STM32单片机系列专栏 C语言术语和结构总结专栏 文章目录 1. GPIO模式 2. GPIO输出 2.1 RCC 2.2 GPIO 3. 代码示例 3.1 RCC时钟 3.2 GPIO初始化 3.3 GPIO输出函数 3.4 推挽输出和开漏输出 4. GPIO输入 4.1 输入模式 4.2 数据读取函数 5. C语言语法 1…

Mudem,打造私密安全、高效稳定的私人空间

Mudem 是 Codigger 平台中的一个关键组件&#xff0c;它提供基础通讯服务&#xff0c;确保不同类型的机器之间可以进行安全和高效的连接。它其设计理念在于将本地机器、公有云以及私有云上的设备无缝地整合为一个可远程在线访问的工作站&#xff08;Workstation&#xff09;。这…

Android SDK Manager安装Google Play Intel x86 Atom_64 System Image依赖问题

Package Google Play Intel x86 Atom_64 System Image,Android API R, revision 2 depends on SDK Platform Android R Preview, revision 2 问题 一开始以为网络还有依赖包没有勾选&#xff0c;尝试了很多次&#xff0c;勾选这边报错对应的license即可。此时点击一下其他licen…

【LeetCode】---118.杨辉三角

一、题目解析&#xff1a; 二、知识回顾&#xff1a; 1.二维数组&#xff1a; 2. C语言中的二维数组访问方式和vector二维数组的访问&#xff0c; 不同区别&#xff1a; &#xff08;1&#xff09;表面是一样的&#xff0c;但底层不同&#xff01; &#xff08;2&#xff09;静…

“PowerInfer:消费级GPU上的高效大语言模型推理引擎“

PowerInfer是由上海交通大学IPADS实验室开发的一个高效大语言模型&#xff08;LLM&#xff09;推理引擎&#xff0c;专为个人电脑&#xff08;PC&#xff09;上的消费者级GPU设计。它通过利用LLM推理中的高局部性&#xff0c;实现了快速且资源消耗低的模型推理&#xff0c;这一…

【插件】IDEA 热部署插件 JRebel

1 搜索安装插件 JRebel 2 选中Team URL 1、在上面的框中输入激活的url地址 https://jrebel.qekang.com/{GUID} http://jrebel-license.jiweichengzhu.com/{GUID} GUID生成工具 Create GUID online (guidgen.com) 备用 404 Not Found (ofmonkey.com) 如果上述激活地址不能…

蓝桥杯2024年第十五届省赛真题-小球反弹

以下两个解法感觉都靠谱&#xff0c;并且网上的题解每个人答案都不一样&#xff0c;目前无法判断哪个是正确答案。 方法一&#xff1a;模拟 代码参考博客 #include <iostream> #include <cmath> #include <vector>using namespace std;int main() {const i…

第48期|GPTSecurity周报

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

从0到1—POC编写基础篇(一)

POC编写基础篇 POC的概念 在网络安全领域中&#xff0c;POC的概念是指"Proof of Concept"&#xff0c;也被称为"攻击验证"。它是指安全研究人员或黑客用来证明某个漏洞、弱点或安全问题存在的实证或演示。 网络安全研究人员经常通过开发POC来展示一个漏洞的…

泛微 E-Office UserSelect接口存在未授权访问漏洞

声明&#xff1a; 本文仅用于技术交流&#xff0c;请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;文章作者不为此承担任何责任。 简介 老洞 泛微e-office系统是标准、易用、快速部署上线…

在vscode上面进行分支merge的记录

前言&#xff1a;在我们的项目中&#xff0c;有两个分支&#xff1a;master和liutielong。现在要将liutielong分支的改动merge到master分支中。 如果master分支已经更改了&#xff0c;所以要先pull&#xff08;这是在git bash里面的命令&#xff09;。 git pull origin master…

探索ChatGPT在提高人脸识别与软性生物识准确性的表现与可解释性

概述 从GPT-1到GPT-3&#xff0c;OpenAI的模型不断进步&#xff0c;推动了自然语言处理技术的发展。这些模型在处理语言任务方面展现出了强大的能力&#xff0c;包括文本生成、翻译、问答等。 然而&#xff0c;当涉及到面部识别和生物特征估计等任务时&#xff0c;这些基于文…

vue项目启动npm install和npm run serve时出现错误Failed to resolve loader:node-sass

1.常见问题 问题1&#xff1a;当执行npm run serve时&#xff0c;出现Failed to resolve loader: node-sass&#xff0c;You may need to install it 解决方法&#xff1a; npm install node-sass4.14.1问题2&#xff1a;当执行npm run serve时&#xff0c;出现以下错误 Fa…

QML 不同风格和主题的切换

Quick程序提供了方便的用于切换不同风格和主题的配置文件&#xff0c;如果没有设计稿&#xff0c;又想界面没那么丑&#xff0c;那么可以用这套配置&#xff0c;让应用看起来相对专业一点。 一&#xff0c;在 qrc 资源文件中添加 qtquickcontrols2.conf 文件。 二&#xff0c;…

iOS - 多线程的安全隐患

文章目录 iOS - 多线程的安全隐患1. 卖票案例2. 多线程安全隐患的解决方案2.1 iOS中的线程同步方案2.2 同步方案的使用2.2.1 OSSpinLock2.2.1.1 使用方法&#xff1a;2.2.1.2 案例 2.2.2 os_unfair_lock2.2.2.1 使用方法&#xff1a;2.2.2.2 案例 2.2.3 pthread_mutex2.2.3.1 使…

【嵌入式】Arduino IDE + ESP32开发环境配置

一 背景说明 最近想捣鼓一下ESP32的集成芯片&#xff0c;比较了一下&#xff0c;选择Arduino IDE并添加ESP32支持库的方式来开发&#xff0c;下面记录一下安装过程以及安装过程中遇到的坑。 二 下载准备 【1】Arduino IDE ESP32支持一键安装包&#xff08;非常推荐&#xff0…

Linux RTC驱动深入解析

目录标题 实时时钟&#xff08;RTC&#xff09;基础Linux内核中的RTC框架RTC设备类设备树&#xff08;Device Tree&#xff09; 编写Linux RTC驱动1. 初始化和注册2. RTC设备操作函数3. 清理函数 测试RTC驱动驱动开发的挑战总结 在许多嵌入式系统和服务器上&#xff0c;实时时钟…