Linux——进程管理和计划任务管理

文章目录

  • 前言
  • 一、程序与进程的关系
    • 1.1 程序与进程的定义
    • 1.2 父进程与子进程
  • 二、查看进程信息
    • 2.1 ps 命令(重点)
    • 2.2 动态查看进程信息top命令(重点)
    • 2.3 pgrep命令查询进程信息
    • 2.4 pstree命令以树形结构列出进程信息
  • 三、进程的启动方式
    • 3.1 手工启动进程
    • 3.2 调度启动
  • 四、进程的前后台调度
    • 4.1 Ctrl+Z组合键
    • 4.2 jobs 命令
    • 4.3 fg 和 bg 命令
  • 五、终止进程的运行
    • 5.1 Ctrl+C组合键
    • 5.2 kill 命令
    • 5.3 killall 命令
    • 5.4 pkill 命令
  • 六、计划任务管理
    • 6.1 一次性任务:at 命令
    • 6.2 周期性任务:cron 命令
    • 6.3 cron 服务管理
  • 总结

前言

进程管理是操作系统管理进程和资源的关键部分。在 Linux 中,进程是系统中所有任务的核心,进程管理命令主要用于查看、控制和调度系统中的进程。本文档将详细介绍 Linux 进程管理的相关概念、命令及实际应用案例,帮助用户高效管理系统中的进程和计划任务。

一、程序与进程的关系

1.1 程序与进程的定义

  • 程序:是存储在硬盘上的可执行代码,像一本书的内容,静态存放在硬盘或其他存储设备上。例如,你下载并安装的一个应用程序(如 firefox)。
  • 进程:是程序在运行时的实例,像是一本书被人打开并阅读时,它在你眼前执行的过程。每当你运行一个程序,操作系统会创建一个进程,分配内存和 CPU 时间来执行这个程序。

1.2 父进程与子进程

  • 父进程:操作系统中的核心进程,负责创建和管理子进程。类似于家庭中的家长角色,父进程为子进程分配系统资源(如内存和CPU时间片),并持续监控其运行状态。典型的例子是Linux系统中的init进程(PID=1),它作为所有用户进程的源头。父进程通过调用fork()等系统调用来创建子进程,并可使用wait()等调用等待子进程结束。

  • 子进程:由父进程通过系统调用创建的独立执行实体,拥有专属的进程ID和地址空间。子进程会继承父进程的环境变量、文件描述符等属性,但运行后即实现完全独立。通过exec()系列函数,子进程可以加载新程序并执行不同任务。例如在Web服务器架构中,主进程(父进程)会为每个客户端请求生成独立的子进程进行处理。子进程完成任务后,通过exit()系统调用终止运行,并向父进程返回状态信息。


二、查看进程信息

2.1 ps 命令(重点)

ps(process status)命令用于查看系统中当前运行的进程。它显示了与进程相关的信息,如进程 ID (PID)、用户、CPU 和内存使用率等。

  • 常用选项
    • ps -aux:显示所有进程,包括其他用户的进程。
    • ps -ef:以标准格式显示所有进程。
    • ps -aux | grep [进程名]:通过管道和 grep 命令过滤进程。
  • 输出字段解释
    • USER:进程所属的用户。
    • PID:进程 ID。
    • %CPU:进程占用的 CPU 百分比。
    • %MEM:进程占用的内存百分比。
    • VSZ:进程使用的虚拟内存(单位 KB)。
    • RSS:进程使用的物理内存(单位 KB)。
    • STAT:进程的状态,常见状态有:R(运行)、S(睡眠)、Z(僵尸)、T(停止)等。
    • START:进程的启动时间。
    • TIME:进程占用的 CPU 时间。
    • COMMAND:启动该进程的命令。
详解
STAT:该进程的状态(D:不可中断的休眠状态:R:正在运行状态;S:处于休眠状态,可被唤醒;T:停止状态,可能是在后台暂停或进程处于跟踪调试状态: Z:僵尸进程,进程已经中止,但是部分程序还在内存当中)
。
D:系统守护进程
T:调式、程序执行一般停止
R :该程序目前正在运作,或者是可被运作;
S :该程序目前正在睡眠当中 (可说是 idle 状态啦!),但可被某些讯号(signal) 唤醒。
T :该程序目前正在侦测或者是停止了;
Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态D 不可中断状态.
它们含意如下::
<: 表示进程运行在高优先级上
N: 表示进程运行在低优先级上
L: 表示进程有页面锁定在内存中
s: 表示进程是控制进程
l: 表示进程是多线程的
+: 表示当前进程运行在前台
D:系统守护进程

案例
执行完毕vim命令之后,查找 vim 进程,并显示它的 CPU 和内存占用情况。

vim a.txt
ps -aux | grep vim

在这里插入图片描述
/usr目录归档到当前文件夹,查看该进程状态

tar -zcvf usr.tar.gz /usr
ps -aux|grep /usr

在这里插入图片描述


2.2 动态查看进程信息top命令(重点)

top 命令用于动态显示 Linux 系统中运行的进程和资源使用情况,实时更新显示。

  • 常用快捷键
    • P:按 CPU 使用率排序。
    • M:按内存使用量排序。
    • T:按时间排序。
    • 1:查看几个cpu
    • q:退出 top。
  • 输出解释
    • PID:进程 ID。
    • USER:启动该进程的用户。
    • %CPU:进程占用的 CPU 百分比。
    • %MEM:进程占用的内存百分比。
    • TIME+:进程累计使用的 CPU 时间。
    • COMMAND:执行的命令。

案例1

top

启动 top,查看实时的进程和系统资源占用情况。按 P 键查看 CPU 使用率排序,按 M 键查看内存使用情况排序。

在这里插入图片描述
P 键查看 CPU 使用率排序

在这里插入图片描述

M 键查看内存使用情况排序
在这里插入图片描述

案例2:
安装系统压力测试工具stress

# 启用 EPEL 仓库
yum install -y epel-release
# 安装 stress 工具
yum install -y stress
# 验证安装是否成功
stress --version

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

-c, --cpu N :指定 N 个进程,每个进程执行计算密集型的任务,通常是计算随机数的平方根(消耗 CPU 资源)。
示例:

stress -c 4
top

启动 4 个进程,消耗 CPU 资源。
在这里插入图片描述

在这里插入图片描述


2.3 pgrep命令查询进程信息

pgrep命令用于根据名称或其他条件查找进程。

常用的参数:

  • -l:选项可同时输出对应的进程名以及PID
  • -U:选项查询特定用户的进程
  • -t:选项查询在特定终端运行的进程
例1
pgrep -l "log"  # 匹配进程名中包含 log 的进程

在这里插入图片描述

例2
pgrep -l -U simon
# 筛选属于用户simon的进程

在这里插入图片描述

2.4 pstree命令以树形结构列出进程信息

pstree 是一个用于显示当前系统中进程树结构的命令行工具。它以树状图形式展示进程间的父子关系,便于直观理解进程的层级关系。

pstree 命令默认情况下只显示各进程的名称,结合以下常用的参数使用:

  • -p:选项使用时可以同时列出对应的PID号
  • -u:选项可以列出对应的用户名
  • -a:选项可以列出完整的命令信息
 执行如下的“pstree -aup”命令可以查看当前系统的进程树,包括各进程对应的PID 号、用户名、完整命令等信息。从输出结果中可以看出,systemd 进程确实是 Linux 操作系统中所有进程的“始祖”例1
pstree -aup hmj

在这里插入图片描述
在这里插入图片描述

三、进程的启动方式

3.1 手工启动进程

由用户手工输入命令或者可执行程序的路径,可以至少启动一个进程。根据该进程是否 需要占用当前的命令终端,手工启动又可以分为前台启动和后台启动。

进程在前台运行:
(如执行ls -l命令)时,用户必须等到该进程执行结束并退出以后才能继续输入其他命令,大多数命令操作在前台启动运行。进程在后台运行时,用户可以继续在当前终端中输入其他命令,而无须等待该进程结束,适用于运行耗时较长的操作。

​ 启动后台进程需要使用&操作符,将&操作符放在要执行命令的最后面,进程启动后会直接放入后台运行,而不占用前台的命令操作界面,方便用户进行其他操作。例如,当使 用 cp 命令从光盘中制作镜像文件时,由于需要复制的数据较多,耗时较长,因此可结合& 符号将复制操作放到后台运行,以便用户可以继续执行其他命令操作

cp /dev/cdrom /opt/centos7.iso &

在这里插入图片描述

在这里插入图片描述

3.2 调度启动

在服务器维护工作中,经常需要执行一些比较费时而且较占用资源的任务(如数据备份),这些任务更适合在相对空闲的时候(如夜间)进行。这时就需要用户事先进行调度安排,指定任务运行的时间,当系统到达设定时间时会自动启动并完成指定的任务。调度启动的计划任务进程均在后台运行,不会占用用户的命令终端。

进程的调度启动可以通过 atcrontab 命令进行设置,其中 at 命令用于设置一次性(如12:15 时重启网络服务)计划任务,crontab 命令用于设置周期性运行(如每周五 17:30 备份数据库)的计划任务。

四、进程的前后台调度

4.1 Ctrl+Z组合键

当Linux操作系统中的命令正在前台执行时(运行尚未结束),按Ctrl+Z组合键可以将当前进程挂起(调入后台并停止执行),这种操作在需要暂停当前进程并进行其他操作时特别有用。例如,打包usr并且调入后台 ,可以按 Ctrl+Z 组合键将该下载任务调入后台并暂停执行

tar zcf usr.tar.gz /usr
Ctrl+Z
jobs -l  # 查看所有后台进程

在这里插入图片描述

4.2 jobs 命令

jobs 命令用于查看当前会话中运行的后台任务。

常用选项

  • jobs -l:列出当前所有后台任务及其进程 ID。

在这里插入图片描述

案例

将后台的进程恢复运行
使用 bg(BackGround,后台)命令,可以将后台中暂停执行(如按 Ctrl+Z 组合键挂起)的任务恢复运行,继续在后台执行操作;
使用 fg 命令(ForeGround,前台),可以将后台任务重新恢复到前台运行。
除非后台中的任务只有一个,否则 bgfg 命令都需要指定后台进程的任务编号作
为参数。例如,执行如下的“fg 1”命令可以将之前挂起至后台的 wget 进程重新调入前台执行。
[root@localhost ~]# jobs
[1]-   Stopped                 cp /dev/cdrom mycd.iso 
[2]+  Stopped                 top
[root@localhost ~]# fg 1

查看当前终端会话中的后台任务。

4.3 fg 和 bg 命令

  • fg:将后台任务带回前台执行。
  • bg:将暂停的任务放回后台继续执行。

案例

fg %1
将后台任务编号为 1 的任务带回前台。

在这里插入图片描述

bg %2
将后台任务编号为 2 的任务恢复在后台运行。

在这里插入图片描述

五、终止进程的运行

5.1 Ctrl+C组合键

​ 中断正在执行的命令

5.2 kill 命令

kill 命令用于发送信号给进程,通常用来终止进程。

常用选项

  • kill [PID]:正常终止进程。
  • kill -9 [PID]:强制终止进程(不可恢复)。(常用)

案例

kill 6281

终止 PID 为 1234 的进程。

kill -9 6281

强制终止 PID 为 1234 的进程。
在这里插入图片描述

5.3 killall 命令

killall 命令根据进程名称终止进程。

案例

vim test1.txt &
vim test2.txt &
vim test3.txt &
ps -aux|grep vim  # 查看和vim有关的进程
killall -9 vim    # 终止所有名为 vim的进程

在这里插入图片描述
一次性杀死所有和vim有关的进程
在这里插入图片描述
在这里插入图片描述

5.4 pkill 命令

pkill 命令根据进程属性(如用户名、终端等)终止进程。

案例

su - simon      # 切换用户
vim test1.txt &
vim test2.txt &
vim test3.txt &
ps -aux|grep simon
pkill -9 -U simon
ps -aux|grep simon  # 查看该用户的进程是否被杀死

终止所有由 root 用户启动的进程。

在这里插入图片描述
在这里插入图片描述


六、计划任务管理

计划任务用于自动执行系统中的任务。Linux 中常用的计划任务工具包括 atcron

6.1 一次性任务:at 命令

at 命令用于设置一次性任务,任务将在指定时间执行。

  • 命令格式
 at [HH:MM] [yyyy-mm-dd]at> [要执行的命令]   # 按CTRL+D提交任务
  • 常用选项

    • atq:列出待执行的任务。
    • atrm [任务编号]:删除指定的任务。

案例

date
at at 14:25 2025-08-16
at>pgrep -U root|wc -l > /opt/ps.root 
at> <EOT>

设置任务在指定时间执行,并将输出保存到 /opt/ps.root 文件中。
在这里插入图片描述
在这里插入图片描述
atq列出待执行的任务
在这里插入图片描述
·atrm [任务编号]:删除指定的任务。

在这里插入图片描述


6.2 周期性任务:cron 命令

cron 用于设置定期执行的任务。用户可以通过 crontab 命令编辑和管理自己的计划任务。

主要设置文件:

  • 全局配置文件,位于文件:/etc/crontab
  • 系统默认的设置,位于目录:/etc/cron.*/
  • 用户定义的设置,位于文件:/var/spool/cron/用户名

命令格式

 * * * * * [command]
  • *:每个字段的取值范围:分钟(0-59),小时(0-23),日期(1-31),月份(1-12),星期(0-6,0 为周日)。
  • [command]:要执行的命令。
由于各字段的作用不同,其取值范围也不一样,如表 9-2 所示,当使用“*”时表示取值范围中的任意时间。crontab 任务配置记录中所设置的命令操作将在“分钟”+“小时”+“日期”+ “月份”+“星期”都满足的条件下执行。
crontab 计划任务的配置字段说明分钟	取值为 0~59 的任意整数
小时	取值为 0~23 的任意整数
日期	取值为 1~31 的任意整数(日期在该月份中必须有效) 
月份	取值为 1~12 的任意整数
星期	取值为 0~7 的任意整数,0 或 7 代表星期日命令	可以是普通的命令,也可以是自己编写的程序脚本除了“*”以外,还可以使用“-”(减号)、“,”(逗号)、“/”(斜杠)与数字构成表达式来表  示较复杂的时间关系。
减号“-”:可以表示一个连续的时间范围,如“1-4”表示整数 1、2、3、4。
逗号“,”:可以表示一个间隔的不连续范围,如“3, 4, 6, 8”。
斜杠符号“/”:可以用来指定间隔频率,如在日期字段中的“*/3”表示每隔 3 天。

应用示例:

  • 0 17 * * 1-5 每周一至周五下午5点整
  • 30 8 * * 1,3,5 每周一、三、五上午8点30分
  • 0 8-18/2 * * * 每天上午8点至下午6点,每隔2小时执行一次
  • 0 0 */3 * * 每3天执行一次

常用命令

  • crontab -e [-u 用户名]:编辑当前用户的 cron 任务。

  • crontab -l [-u 用户名]:列出当前用户的 cron 任务。

  • crontab -r [-u 用户名]:删除当前用户的所有 cron 任务。

其他命令:

设置用户的周期性计划任务列表主要通过 crontab 命令进行,结合不同的项可以完成不同的计划任务管理操作。常用的选项如下。
-u:指定所管理的计划任务属于哪个用户,默认是针对当前用户(自己),一般只有 root 用户有权限使用此选项(用于编辑、删除其他用户的计划任务)。
下面将分别讲解 crontab 命令相关选项的使用。crontab -u 用户名 #指定XX用户的cron服务crontab -u zx -l #列出zx用户下的cron的详细内容crontab -r #删除所有用户的cron内容,普通用户执行,只删除自己的cron内容crontab -r -u zx #删除zx用户的cron内容

案例1

50 7 * * * /usr/bin/systemctl start httpd.service
25 15 * * * /usr/bin/systemctl stop httpd.service

每天的 7:50 启动 httpd 服务,15:25 停止 httpd 服务。

crontab -e50 7 * * * /usr/bin/systemctl start httpd.service
25 15 * * * /usr/bin/systemctl stop httpd.service

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
crontab -l [-u 用户名]:列出当前用户的 cron 任务。
在这里插入图片描述
crontab -r [-u 用户名]:列出当前用户的 cron 任务。

在这里插入图片描述

案例2:
每两分钟记录一次/opt目录下内容

crontab -e
*/2 * * * * /usr/bin/ls -lh /opt/* >> /opt/bak.txt
tail -f /var/log/cron  # 追踪cron的日志文件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


6.3 cron 服务管理

  • 启动 cron 服务
 systemctl start crond
  • 查看 cron 服务状态
 systemctl status crond
  • 启用 cron 服务开机启动
 systemctl enable crond

扩充 生产案列

例如,若要按固定的周期重复完成一些系统管理任务,任务内容如下:①每天早上 7:50
自动开启 sshd 服务,22:50 关闭 sshd 服务;②每隔五天清空一cron		次 FTP 服务器公共目录
/var/ftp/pub 中的数据;③每周六的 7:30 重新启动系统中的 httpd 服务;④每周一、周三、周五的下午 17:30,使用 tar 命令自动备份/etc/httpd 目录,则可由 root 用户通过 crontab 设置以下计划任务。[root@localhost ~]# crontab -e
50 7 * * * /usr/bin/systemctl start sshd.service 
50 22 * * * /usr/bin/systemctl stop sshd.servic 
0 0 */5 * * /usr/bin/rm -rf /var/ftp/pub/*
30 7 * * 6 /usr/bin/systemctl httpd restart
30 17 * * 1,3,5 /usr/bin/tar jcf httpdconf.tar.bz2 /etc/httpd/
*/2 * * * * ls -lh /home/*普通用户执行“crontab -e”命令时,可以设置自己的计划任务(需要注意命令的执行权限)。
例如,用户 jerry 设置一条计划任务:在每周日晚上的 23:55 将/etc/passwd 文件的内容复制到宿主目录中,保存为 pwd.txt 文件,具体操作如下:
[jerry @localhost ~]# crontab -e
55 23 * * 7 /usr/bin/cp /etc/passwd /home/jerry/pwd.txt因各条计划任务在执行时并不需要用户登录,所以任务配置记录中的命令建议使用绝对路径,以避免因缺少执行路径而无法执行命令的情况。另外,在设置非每分都执行的任务时,    “分钟”字段也应该填写一个具体的时间数值,而不要保留为默认的“*”,否则将会在每分钟执行一次计划任务。
(2)查看用户的计划任务列表
crontab 命令结合“-l”选项可以查看当前用户的计划任务列表,对于 root 用户来说,还可以结合“-u”选项查看其他用户的计划任务,具体操作如下:[root@localhost ~]# crontab –l	//查看用户root 自己的计划任务
50 7 * * * /usr/bin/systemctl start sshd.service
50 22 * * * /usr/bin/systemctl stop sshd.servic 
0 0 */5 * * /usr/bin/rm -rf /var/ftp/pub/*
30 7 * * 6 /usr/bin/systemctl httpd restart
30 17 * * 1,3,5 /usr/bin/tar jcf httpdconf.tar.bz2 /etc/httpd/
[root@localhost ~]# crontab -l -u jerry	//查看用户jerry 的计划任务
55 23 * * 7 /usr/bin/cp /etc/passwd /home/jerry/pwd.txt 
[root@localhost ~]# ls -l /var/spool/cron/jerry
-rw-------. 1 root root 57 May 7 11:10 /var/spool/cron/jerry(3)删除用户的计划任务列表
当只需要删除某一条计划任务时,可以通过“crontab -e”命令进行编辑;而若要清空某个用户的所有计划任务,可以执行“crontab -r”命令。[jerry@localhost ~]$ crontab -r	 //用户jerry 清空自己设置的计划任务[jerry@localhost ~]$ crontab -l
[jerry@localhost ~]$ crontab -l
no crontab for jerry案列
21 17 * * * /usr/bin/systemctl reboot
26 17 * * * /usr/bin/cp -r /etc/ /home/
#0 8-18/2 * * * /usr/binsystemctl start vsfrpd.service
0 * */3 * * /usr/bin/rm -rf /var/log/ftp/*.log
*/2 * * * * /usr/bin/systemctl start vsfrpd.service[root@192 home]# crontab -l -u lisi
17 19 * * * /usr/bin/cp -r /home/etc/ /home/lisi/backup/journalctl -xe

案例总结

  1. 查看进程
 ps -aux | grep vim

查看 vim 进程的 CPU 和内存使用情况。

  1. 设置周期性任务
 crontab -e30 2 * * * /usr/bin/rsync -av /data /backup# 每天02:30将/data的内容同步到/backup

总结

这篇文档详细介绍了 Linux 系统中的进程管理及相关命令,涵盖了从基本概念到实际操作的全方位内容。以下是核心要点总结:

  1. 程序与进程的关系

    • 程序:静态存储在硬盘上的可执行代码。
    • 进程:程序运行的动态实例,由操作系统分配资源(如内存、CPU)执行。
    • 父进程与子进程:父进程创建并管理子进程,类似于公司中的上下级关系。
  2. 查看进程信息

    • ps 命令:查看当前运行的进程,常用选项如 ps -auxps -ef,支持通过 grep 过滤特定进程。
    • top 命令:动态实时显示进程及资源占用情况,支持按 CPU、内存等排序。
    • pgreppstree:分别用于查询进程 PID 和以树形结构展示进程关系。
  3. 进程的启动方式

    • 手工启动:分为前台启动(占用终端)和后台启动(使用 & 符号)。
    • 调度启动:通过 at 设置一次性任务,或通过 cron 设置周期性任务(如定时备份)。
  4. 进程的前后台调度

    • Ctrl+Z:挂起当前前台进程到后台并暂停。
    • jobsfgbg:分别用于查看后台任务、将任务恢复到前台或后台继续运行。
  5. 终止进程

    • Ctrl+C:中断当前前台进程。
    • killkillallpkill:通过 PID、进程名或属性终止进程,kill -9 用于强制终止。
  6. 计划任务管理

    • at:设置一次性任务,如定时执行脚本。
    • cron:通过 crontab 管理周期性任务,支持灵活的时间配置(如每天、每周或每隔几天执行)。
    • 服务管理:使用 systemctl 启动、启用或查看 crond 服务状态。
  7. 实际案例

    • 使用 ps -aux | grep vim 查看 vim 进程。
    • 通过 crontab -e 设置每天定时启动/停止服务或备份文件。
    • 使用 kill -9 PID 强制终止无响应的进程。

本文档为 Linux 系统管理员和用户提供了全面的进程管理指南,帮助用户高效监控、调度和控制系统中的进程,同时通过自动化任务提升系统管理效率。无论是日常维护还是复杂任务调度,这些命令和技巧都能发挥重要作用。

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

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

相关文章

阿里云TranslateGeneral - 机器翻译SDK-自己封账单文件版本—仙盟创梦IDE

仙盟创梦IDE代码<?php /*** 阿里云机器翻译通用版API调用工具* 文档参考&#xff1a;https://help.aliyun.com/zh/machine-translation/developer-reference/api-alimt-2018-10-12-translategeneral*/ class AliyunTranslate {// 阿里云访问密钥private $accessKeyId;priva…

新字符设备驱动实验

经过前两章实验的实战操作&#xff0c;我们已经掌握了 Linux 字符设备驱动开发的基本步骤&#xff0c;字符 设备驱动开发重点是使用 register_chrdev 函数注册字符设备&#xff0c;当不再使用设备的时候就使用 unregister_chrdev 函数注销字符设备&#xff0c;驱动模块加载成功…

【更新公告】C++算法·线段树

之前的线段树知识都忘了qwq 现在在重新学线段树 下一篇就是写线段树了&#xff0c;例题已经找好了 A了1遍&#xff0c;但是用的玄学代码ee 下面是更新公告 更新公告 更新模式改为2~3天1篇 但是绝对高质量&#xff01;&#xff01; (平均质量分93够吗qwq) 如果例题好找尽量给出2…

pyqtgraph 库 右键菜单栏插件汉化

第一步&#xff0c;打开pyqtgraph文件夹。 第二步&#xff1a;打开graphicsItems&#xff0c;将PlotItem和ViewBox中的.py文件中的英文替换为中文&#xff0c;运行软件即可看到插件右键的菜单栏成为中文。 第三步&#xff1a;GraphicsScene中的&#xff0c;等找到相应的右键菜单…

docker镜像解决的一些问题

1 概述Docker镜像技术通过创新性的设计&#xff0c;彻底解决了应用交付领域的核心痛点&#xff0c;已经成为已成为云原生时代的事实标准。其核心价值在于​​通过标准化封装实现"一次构建&#xff0c;处处运行"​​&#xff0c;从根本上改变了软件交付的生命周期。2 …

10.从开始写LINUX内核——时钟中断

Linux 0.12 内核时钟中断实现&#xff1a;从初始化到中断响应时钟中断是操作系统中最基础且最重要的中断之一&#xff0c;它为系统提供时间基准&#xff0c;支持进程调度、定时器等核心功能。本文将基于 Linux 0.12 内核的 setup 程序框架&#xff0c;详细介绍时钟中断的完整实…

Effective C++ 条款45:运用成员函数模板接受所有兼容类型

Effective C 条款45&#xff1a;运用成员函数模板接受所有兼容类型核心思想&#xff1a;使用成员函数模板&#xff08;member function templates&#xff09;生成可接受兼容类型的函数&#xff0c;特别是泛型拷贝构造函数和赋值操作符&#xff0c;同时避免抑制编译器生成的默认…

华测科技(北京)的3D GPR数据分析

很高兴得到了张总的支持&#xff0c;获得了他们雷达的数据&#xff0c;并写了雷达数据读取和转换文件。1 背景搜索后发现 华测科技&#xff08;北京&#xff09;有限公司 的实力很强&#xff0c;因为他们的检测可达100km/h的时速。以前我只知道行业内 青岛中电众益 的3D GPR产…

X86、ARM与C86架构全面对比分析:性能、功耗、成本与生态系统

目录标题X86、ARM与C86架构全面对比分析&#xff1a;性能、功耗、成本与生态系统一、架构概述与发展背景1.1 X86架构&#xff1a;PC与服务器市场的传统霸主1.2 ARM架构&#xff1a;移动领域的王者与新兴服务器力量1.3 C86架构&#xff1a;国产x86兼容的创新尝试二、性能表现对比…

w嵌入式分享合集66

自己的原文哦~ https://blog.51cto.com/whaosoft/14132240 一、STM32的NRST管脚异常复位问题 这个问题是客户对开发的平台做EMS 浪涌测试的时候发生的&#xff0c;平台上使用了一个STM32G474 RCT6 MCU 。在某个等级的EMS 测试中&#xff0c; 客户发现MCU有时候会异常…

ZKmall开源商城的数据校验之道:用规范守护业务基石

在电商系统里&#xff0c;数据就像流淌的血液 —— 用户填的手机号、下单的商品数量、支付的金额&#xff0c;每一个数字、每一段文字都得靠谱。要是数据出了错&#xff0c;轻则订单下不了&#xff0c;重则钱货两空。ZKmall 开源商城作为一个分布式电商系统&#xff0c;每天要处…

QML实现数据可视化

界面样式 项目开发流程 1.通过QtCreator创建一个Qt Quick插件,插件命名为CarPanMod; 2.通过QtCreator创建一个Qt Quick Application,命名为QmlPro; 3.在插件CarPanMod中实现条形图,折线图和饼状图的绘制; 4.在应用程序QmlPro中,添加插件的导入路径; 5.在应用程序中,通过i…

实时计算 记录

《大数据架构师》海量实时广告流平台架构设计与实践 《架构师必备技能之集群资源评估.pdf》 参考&#xff1a; 大型广告系统架构与实现 架构图

gitee_流水线搭配 Dockerfile 部署vue项目

使用 gitee流水线搭配docker,编写Dockerfile文件进行自动部署Vue项目 gitee流水线 基本配置跟另外一篇文章中类似 gitee_配置自动部署vue项目-CSDN博客 需要修改的只是脚本执行 # 构建阶段脚本echo 清理旧文件 rm -rf dist echo 配置 Git 参数 git config --global http.pos…

Win10快速安装.NET3.5

按Windows键输入CONTROL打开“控制面板”点击“程序”点击“启用或关闭Windows功能”勾选“.NET Framework3.5&#xff08;包括.NET2.0和3.0&#xff09;”点击确定随后选择从更新下载&#xff08;具体提示忘记了&#xff09;&#xff0c;之后windows会自动安装

Docker Compose 入门教程

一、Docker Compose 简介 Docker Compose 是 Docker 官方提供的多容器编排工具&#xff0c;通过 YAML 文件&#xff08;docker-compose.yml&#xff09;定义应用程序的服务、网络和卷&#xff0c;实现一键式容器管理。其核心优势包括&#xff1a; 简化多容器管理&#xff1a;通…

Tomcat架构深度解析:从Server到Servlet的全流程揭秘

第一章&#xff1a;Tomcat架构概述1.1 Tomcat的角色与定位&#xff1a;Web服务器 vs Servlet容器Tomcat 是什么&#xff1f;它既是一种轻量级 Web 服务器&#xff0c;也是一种符合 Java EE 规范的 Servlet 容器。Web服务器&#xff1a;类似 Nginx、Apache HTTP Server&#xff…

【Java web】HTTP 协议详解

一、什么是 HTTP&#xff1f;—— 互联网的 "快递员"你有没有想过&#xff0c;当你在浏览器输入www.baidu.com并按下回车时&#xff0c;背后发生了什么&#xff1f;为什么几秒钟后就能看到百度首页&#xff1f;这一切的背后&#xff0c;都离不开一个叫HTTP的 "快…

流式数据服务端怎么传给前端,前端怎么接收?

01 引言 大模型时代&#xff0c;尤其会话模型为了提高用户的使用体验&#xff0c;它不会将所有的数据加载完成一次响应给客户端&#xff0c;而是通过数据流&#xff0c;一点点的将数据慢慢呈现出来。 正是这种有趣的交互方式一次次将SSE&#xff08;Server Sent Event&#x…

ML307C 4G通信板:工业级DTU固件,多协议支持,智能配置管理

产品概述 ML307C 4G通信板是一款基于中移物联网ML307C模组的工业级DTU&#xff08;数据传输单元&#xff09;产品&#xff0c;专为工业物联网应用设计。我们的固件支持多种工业协议&#xff0c;具备远程配置、FOTA升级、数据加密等企业级功能&#xff0c;为您的工业设备提供稳定…