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.mzph.cn/pingmian/2422.shtml

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

相关文章

spring的跨域问题

跨域问题 什么是跨域解决跨域 什么是跨域 跨域问题本质是浏览器的一种保护机制&#xff0c;它的初衷是为了保证用户的安全&#xff0c;防止恶意网站窃取数据。如果出现了以下情况中的任意一种&#xff0c;那么它就是跨域请求&#xff1a; 1、协议不同&#xff0c;如 http 和 h…

Redis入门到通关之Redis数据结构-List篇

文章目录 ☃️概述☃️数据结构☃️源码☃️其他 欢迎来到 请回答1024 的博客 &#x1f353;&#x1f353;&#x1f353;欢迎来到 请回答1024的博客 关于博主&#xff1a; 我是 请回答1024&#xff0c;一个追求数学与计算的边界、时间与空间的平衡&#xff0c;0与1的延伸的后端…

8、案例实战【处理百万级交易无压力】:支付系统JVM调优实战指南

8.1、前文回顾 本文将以一个日交易量达百万次的支付系统为背景,为大家深入分析在上线部署一个系统时,如何根据系统的业务量来合理设置JVM的堆内存大小。 通过阅读之前的文章,相信大家已经对编写的代码如何在JVM中运行的基本原理有了一定的了解,同时也知道如何通过参数来设…

数据结构(Wrong Question)

一、绪论 1.1 数据结构的基本概念 D 因为抽象数据类型&#xff08;ADT&#xff09;描述了数据的逻辑结构和抽象运算&#xff0c;通常用&#xff08;数据对象&#xff0c;数据对象&#xff0c;基本操作集&#xff09;这样的三元组来表示&#xff0c;从而可构成一个完整的数据结…

3节点ubuntu24.04服务器docker-compose方式部署高可用elk+kafka日志系统并接入nginx日志

一&#xff1a;系统版本: 二&#xff1a;部署环境&#xff1a; 节点名称 IP 部署组件及版本 配置文件路径 机器CPU 机器内存 机器存储 Log-001 10.10.100.1 zookeeper:3.4.13 kafka:2.8.1 elasticsearch:7.7.0 logstash:7.7.0 kibana:7.7.0 zookeeper:/data/zookeep…

(Oracle)SQL优化案例:组合索引优化

项目场景 项目上的ETL模型里有如下SQL语句。执行速度非常慢&#xff0c;每次只查询200条数据&#xff0c;但却需要20多秒的时间。再加上该SQL查询出的数据同步频率很高&#xff0c;这个速度是完全不能忍受的。 因为项目隐私&#xff0c;所以对表及字段做了改写。 SELECT ID…

DaVinci Fusion Studio 19 for Mac/win:影视后期特效合成的巅峰之作

在影视后期制作的广袤天地里&#xff0c;一款强大的特效合成软件如同一位技艺高超的魔法师&#xff0c;能够化腐朽为神奇&#xff0c;将普通的影像素材转变为震撼人心的视觉盛宴。而DaVinci Fusion Studio 19&#xff0c;正是这样一款备受影视从业者推崇的巅峰之作。 无论是Ma…

基于Python+Selenium+Pytest的Dockerfile如何写

使用 Dockerfile 部署 Python 应用程序与 Selenium 测试 在本文中&#xff0c;我们将介绍如何使用 Dockerfile 部署一个 Python 应用程序&#xff0c;同时利用 Selenium 进行自动化测试。我们将使用官方的 Python 运行时作为父镜像&#xff0c;并在其中安装所需的依赖项和工具…

Android视角看鸿蒙第十二课-鸿蒙的布局之相对布局RelativeContainer

Android视角看鸿蒙第十二课-鸿蒙的布局之相对布局RelativeContainer 导读 相对布局和线性、层叠布局一样都是类似于Android布局的&#xff0c;之前两篇文章已经了解线性、层叠布局的使用方法&#xff0c;这篇文章一起来学习下鸿蒙中的相对布局。 之前的文章中&#xff0c;我偶…

VNISEdit 制作安装包

1. 环境依赖 1.1. NSIS 下载 下载地址&#xff1a;https://nsis.sourceforge.io/Download 1.2. VNISEdit 下载 下载地址1&#xff1a;https://sourceforge.net/projects/hmne/ 下载 exe 安装。 下载地址2&#xff1a;https://hmne.sourceforge.net/ 可以下载 exe 安装。也…

centos 安装配置文件中心 nacos2.2.3 稳定版

安装mysql 8 参考文章 centos7搭建mysql5.6 && mysql 8.0_centos7 mysql5.6-CSDN博客 安装 jdk 17 官网下载 对应的版本 Java Downloads | Oracle wget https://download.java.net/java/GA/jdk17.0.2/dfd4a8d0985749f896bed50d7138ee7f/8/GPL/openjdk-17.0.2_l…

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

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

Flutter 上架如何解决 ITMS-91053 问题

最近&#xff0c;我的 Flutter App 发布到 TestFlight 后&#xff0c;就会收到一封邮件&#xff1a;The uploaded build for YOUR APP has one or more issues. 上面的邮件主要是说&#xff0c;我的 App 缺少了调用 API 的声明&#xff0c;以前从来没看到过&#xff0c;上网一查…

SpringBoot+Vue开发记录(三)

说明&#xff1a;本篇文章的主要内容为需求分析。需求分析这一部分很重要&#xff0c;也稍微有点子难搞&#xff0c;所以本篇文章里的有些内容会有失偏颇。 一、准备步骤 我打算做一个刷题项目&#xff0c;但是具体这个项目该怎么做&#xff0c;我是一头雾水。 所以就要先进行…

消灭AI“耗电巨兽”?暴雨服务器推出液冷节能降耗算力方案

在科技飞速发展的今天&#xff0c;人工智能已成为驱动未来的重要力量。随着AI及大模型技术的进一步普及和应用场景的拓宽&#xff0c;相关算力需求呈指数级增长&#xff0c;大规模的AI训练和推理过程均需消耗大量电力&#xff0c;如同一个巨大的电力黑洞&#xff0c;吞噬着海量…

Elasticsearch集群部署(Linux)

1. 准备环境 这里准备三台Linux虚拟机&#xff0c;用于配置Elasticsearch集群和部署可视化工具Kibana。 角色IP域名集群名称节点名称版本操作系统ES192.168.243.100linux100cluster-eses-node-1007.12.0CentOS 7192.168.243.101linux101cluster-eses-node-101192.168.243.102…

docker容器内彻底移除iptables服务的实现方法

背景 我创建的容器使用的是centos6的标准镜像&#xff0c;所以内置了iptables服务。容器启动后iptables服务默认就启动了。iptables设置的规则默认是所有流量都无法通行。而对于服务器的管理使用的是宿主机的防火墙。这样就导致在实现用iptables动态给容器添加端口映射时不成功…

coredns部署

coredns部署 coredns部署 一&#xff1a;coredns-rbac.yaml apiVersion: v1 kind: ServiceAccount metadata:name: corednsnamespace: kube-systemlabels:kubernetes.io/cluster-service: "true"addonmanager.kubernetes.io/mode: Reconcile --- apiVersion: rbac…

Hive服务详解

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

关于路由过滤、路由策略的实验eNSP

具体接口IP地址如下图所示 第一步&#xff1a;配置IP R1: [R1]int g 0/0/0 [R1-GigabitEthernet0/0/0]ip ad [R1-GigabitEthernet0/0/0]ip address 100.1.1.1 24 Apr 23 2024 19:35:38-08:00 R1 %%01IFNET/4/LINK_STATE(l)[0]:The line protocol IP on the interface Giga…