Linux进程和计划任务管理

文章目录

    • 一、进程管理
      • 1.1 进程管理概念
      • 1.2 查看进程信息
        • 1.2.1 ps命令------静态查看进程信息
          • 方法一:ps -aux
          • 方法二:ps -elf
          • ps命令结合管道符
        • 1.2.2 top命令------动态查看进程信息
          • top查看结果解释
          • 操作技巧
        • 1.2.3 pgrep命令
        • 1.2.4 jobs命令
      • 1.3 结束进程
        • 1.3.1 kill命令
        • 1.3.2 僵尸进程
        • 小问题
      • 1.4 运维的指标:五大负载
    • 二、定时任务、计划任务
      • 2.1 crontab命令
      • 2.2 定时任务文本格式

一、进程管理

1.1 进程管理概念

进程管理相当于任务管理器。

程序是一串没有运行的代码,进程是运行起来的代码。

线程:线程相当于复制了进程的部分代码,程序运行起来之后,真正执行的是线程。

Linux系统当中启动程序的过程

父进程先启动。------子进程的资源由父进程来进行分配。

结束的过程:

子进程先结束。------父进程收回子进程的资源。------父进程终止。

特殊情况:

父进程结束了,子进程还在。------僵尸进程。资源无人回收。

1.2 查看进程信息

查看进程信息分为静态查看,动态查看。

1.2.1 ps命令------静态查看进程信息
方法一:ps -aux

ps -a :all,显示终端上的所有进程,包括其他用户的进程

ps -u :user,显示进程的执行用户。

ps -x :显示当前终端进程的详细信息。

ps --sort :按照列名排序

ps -aux :主要用来查看进程占用系统资源的情况。

ps -aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.1  0.1 193816  6888 ?        Ss   21:25   0:01 /usr/lib/systemd/system
root          2  0.0  0.0      0     0 ?        S    21:25   0:00 [kthreadd]

ps -aux 查看结果首行字段的解释:

  • USER:进程的用户
  • PID:进程号,每个进程在系统中运行的唯一标识,每个PID都是不重复的。
  • %CPU:进程占用CPU的百分比
  • %MEM:进程占用物理内存的百分比
  • VSZ:进程使用的虚拟内存的大小,单位KB
  • RSS:进程占用物理内存的量,单位KB
  • TTY:表示终端。?表示该进程不是由终端启动的
  • STAT: status,进程的状态
    • ​ S:处于休眠状态,随时可唤醒。
    • ​ D:处于不可中断的休眠状态。
    • ​ R:运行状态。
    • ​ T:停止状态,后台进程暂停或者进程处于跟踪调试状态。
    • ​ Z:僵尸进程。父进程结束了子进程还在。
      • ​ s :该进程包含子进程
      • ​ < :该进程优先级高
      • ​ N :低优先级
      • ​ l :该进程由多个线程
      • ​ L :该进程有一部分被锁进内存
      • ​ + :该进程位于前台运行
  • START:进程启动的时间
  • TIME:进程实际使用CPU运行的时间
  • COMMAND:进程启动的命令
方法二:ps -elf

ps -e :显示系统内的所有进程

ps -l :显示进程的详细信息

ps -f :完整的显示进程的信息

ps -elf :也是静态查看

ps -elf 查看结果首行字段的解释:

  • F:内核分配给进程的系统标识
  • S:status,进程的状态
  • UID:该进程的用户
  • PID:该进程的进程号
  • PPID:该进程的父进程进程号
  • C:表示进程在生命周期当中的CPU利用率
  • PRI:优先级,数值越大优先级越低
  • NI:谦让值,PRI - NI 是最终优先级
  • ADDR:进程在内存当中的地址
  • SZ:交换空间,假如进程被换出,需要的交换空间大小
  • WCHAN:如果进程处于休眠状态,显示睡眠中的系统函数名
  • STIME:进程启动的时间
  • TIME:进程实际使用CPU运行的时间
  • CMD:command,进程启动的命令
ps命令结合管道符

例:ps结合grep查看指定进程:查看nginx服务进程状态

systemctl restart nginx
ps -aux | grep nginx
root      11216  0.0  0.0  39308   940 ?        Ss   22:25   0:00 nginx: master process /usr/sbin/nginx
nginx     11217  0.0  0.0  41780  1960 ?        S    22:25   0:00 nginx: worker process
nginx     11218  0.0  0.0  41780  1960 ?        S    22:25   0:00 nginx: worker process
root      11222  0.0  0.0 112708   976 pts/0    S+   22:26   0:00 grep --color=auto nginx
#最后一个是grep的进程,表示对查到的nginx结果着色显示,实际有两个子进程

例:查看CPU/内存占用率最高的进程

使用 --sort 排序是,- 表示降序,+ 表示升序

ps -aux --sort=-pcpu | head -11
#展示占用CPU排名前10的进程。(标题也算1行,所以head -11)
ps -aux --sort=-pmem | head -11
#展示占用内存排名前10的进程。
1.2.2 top命令------动态查看进程信息
top查看结果解释
第一行:top - 23:03:47 up  1:38,  2 users,  load average: 0.00, 0.01, 0.05
  • 23:03:47 :系统时间
  • up 1:38 :系统运行的时长
  • 2 users :当前登录系统的用户
  • load average :系统的负载:三个数字分别为系统1分钟、5分钟、15分钟内处理的任务数的平均值。
第二行:Tasks: 193 total,   1 running, 192 sleeping,   0 stopped,   0 zombie

​ 进程信息:进程总数193,1个运行,192个休眠,0个终止,0个僵尸

第三行:%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
  • CPU信息
  • us :系统用户占用CPU的百分比
  • sy :内核占用CPU的百分比
  • ni :优先级调度占用的CPU
  • id :当前系统CPU空闲的百分比
  • wa :磁盘的读写性能
  • hi :1分钟内CPU的使用率
  • si :5分钟内CPU的使用率
  • st :15分钟内CPU的使用率
第四行:KiB Mem :  3861508 total,  2753368 free,   412208 used,   695932 buff/cache
第五行:KiB Swap:  4063228 total,  4063228 free,        0 used.  3147044 avail Mem 

​ **第四行 + 第五行 = free -h,查看内存使用情况

进程信息区各列的作用

  • PID:进程号
  • USER:用户
  • PR:优先级
  • NI:谦让值
  • VIRT:进程使用的虚拟内存,单位KB
  • RES:进程使用的物理内存,单位KB
  • SHR:共享内存大小
  • S:进程状态
  • %CPU:动态显示进程占用CPU的百分比
  • %MEN:动态显示进程占用物理内存的百分比
  • TIME+:进程使用CPU的时间总计,单位1/100秒
  • COMMAND:进程启动的命令
操作技巧

数字1键:展示CPU个数和使用情况

c键:根据CPU占用量的百分比大小,从大到小排序

q键:退出top

命令 top -b -n 1:运行一次之后立刻退出top,相当于静态查看ps。

1.2.3 pgrep命令
pgrep -选项 进程名		------格式

pgrep :查找PID,可以配合kill一起使用,结束进程。

pgrep -a :显示进程名和PID号

pgrep -c :仅显示匹配进程的数量,不显示其他内容

pgrep -f :匹配进程名以及参数

pgrep -a nginx
11216 nginx: master process /usr/sbin/nginx
1.2.4 jobs命令

jobs :显示位于后台的进程

jobs -l :列出所有后台进程的PID号,进程名(常用)

jobs -p :列出所有后台进程的组PID

jobs -n :仅显示最近被放到后台的进程(运行中的进程)

jobs -r :仅显示正在运行的后台进程

jobs -s :仅显示已经停止的后台进程

如何把运行的程序调度到后台

在命令行的结尾加“&”符号,就是把进程调度到后台运行。

fg 命令可以把后台的任务调度到前台。fg + 后台任务序号(通过jobs查看)

1.3 结束进程

1.3.1 kill命令

kill -9 :立即强制结束该进程(掌握这一个即可)

kill -9 PID(进程号)		————结束进程

kill -9 不能强制结束僵尸进程。

1.3.2 僵尸进程

制造一个僵尸进程并观察

vim wait.c		#创建一个c文件,内容如下
#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>int main(int argc, char **argv)
{pid_t pid;pid = fork();if (pid == 0) {	 // childprintf("child pid = %d\n", getpid());printf("in child...\r\n");sleep(2);} else if (pid > 0) {  // fathersleep(15); /* 子进程 2s 钟后提前结束,等待父进程回收其资源,在这期间,子进程处于僵尸状态 */wait(NULL);}

在终端输入命令:

gcc wait.c -o wait.out	#执行 wait.c 输出 wait.out 
./wait.out		#获取僵尸进程pid
child pid = 11555

另开一个终端,抓取僵尸进程

ps -elf | grep 11555
1 Z root      11555  11554  0  80   0 -     0 do_exi 22:52 pts/0    00:00:00 [wait.out] <defunct>	#此即为僵尸进程,类型Z
0 S root      11557  11512  0  80   0 - 28177 pipe_w 22:52 pts/1    00:00:00 grep --color=auto 11555
小问题

问:kill命令结束进程,是谁来结束进程?命令还是系统?

答:kill只是传递一个信号——要结束进程,由系统来将进程结束。

问:如果有僵尸进程,怎么处理?

答:少量的僵尸进程影响不大,因为僵尸进程所占的系统资源很少,可以忽略。

僵尸进程数量过多时,重启

1.4 运维的指标:五大负载

  • CPU负载:监控CPU的使用率。 工具:top,htop(top的升级版,epel源下载)。了解CPU是否过载,85%注意,90%告警。

  • 内存负载:监控内存。 工具:free,top。内存占用比90%告警。优化:关闭不需要的服务;释放缓存。

  • echo 1 > /proc/sys/vm/drop_caches	#清除缓存的命令
    
  • 磁盘负载:I/O,磁盘的读写性能。 工具:iostat

  • 网络负载:带宽的利用率,流量的使用情况。工具:iftop(epel源下载),ifconfig。

  • 进程负载:监控进程使用资源情况。工具:top,ps。

二、定时任务、计划任务

2.1 crontab命令

crontab -e :创建定时任务,默认当前用户执行

crontab -e -u :+用户名,可以指定用户执行定时任务

crontab -l -u :展示指定用户的定时任务

crontab -r :全部清空定时任务(不要用-r !需要编辑定时任务用 -e 进入文本编辑

2.2 定时任务文本格式

* * * * * 命令/可执行脚本		------定时格式

5个 * 位置分别表示 分,时,日,月,周几

时间范围(整数):分:0-59 ;时:0-23 ;日:1-31 ;月:1-12 ;周:0-7 ,0和7都表示周日

当 * 不指定具体数值的时候表示该范围内的任意时间都执行;

任一个 * 的位置可以用 “ , ” 在数字中作间隔,表示多个不连续的时间点;

任一个 * 的位置可以用 “ - ” 在数字中作间隔,表示连续的时间范围;

任一个 * 的位置可以用 “ */ ” 后接数字,表示间隔的频率。

# 定时任务举例
* 8 * * * ls		#每天8点的每一分钟,执行一次ls
10,30,50 8 * * * ls		#每天,8点10分,30分,50分执行一次ls
30 13-16 * * 5 ls		#每周五,13-16点30分,执行一次ls
0 */2 * * 1	ls			#每周一,每隔2小时,在0分时执行一次ls

在定时后一般接可执行脚本。

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

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

相关文章

工控一体机5寸显示器电容触摸屏(YA05WK)产品规格说明书

如果您对工控一体机有任何疑问或需求&#xff0c;或者对如何集成工控一体机到您的业务感兴趣&#xff0c;可移步控芯捷科技。 一、硬件功能介绍 YA05WK是我公司推出的一款新型安卓屏&#xff0c;4核Cortex-A7 架构&#xff0c;主频1.2GHz的CPU。采用12V供电&#xff0c;标配5寸…

UML 在 vs-code上的快速使用

UML 在 vs-code上的快速使用 1.软件准备工作2.创建第一张甘特图2.1 创建 UML文件: xxxx. puml2.2 输入甘特图代码2.3 VS code 生成甘特图 结束 。 1.软件准备工作 使用的软件为&#xff1a;VS CODE使用插件 &#xff1a; PluntUML2.创建第一张甘特图 2.1 创建 UML文件: xxxx. …

认识NoSql

SQL是结构化的&#xff0c;NoSql是非结构化的 SQL是关联的&#xff1a; Nosql是无关联的&#xff1a; SQL采用的是SQL查询&#xff1a; 语法固定&#xff0c;好处是&#xff1a;只要是关系型数据库&#xff08;Mysql,Oracle&#xff09;&#xff0c;都能够使用相同的语句进行查…

计算机毕业设计 | SpringBoot个人博客管理系统(附源码)

1&#xff0c;绪论 1.1 背景调研 在互联网飞速发展的今天&#xff0c;互联网已经成为人们快速获取、发布和传递信息的重要渠道&#xff0c;它在人们政治、经济、生活等各个方面发挥着重要的作用。互联网上发布信息主要是通过网站来实现的&#xff0c;获取信息也是要在互联网中…

Javascript 基础知识 —— 重写数组方法

1、写一个函数&#xff0c;实现深度克隆对象 const obj {name: "LIYUFAN",age: 25,career: "初级前端工程师",info: {field: ["JS", "CSS", "HTML"],framework: ["React", "Vue", "Angular"…

521源码-免费手游下载-【烽火中原H5】深度体验:横版网页国战手游及WIN学习手工端

【烽火中原H5】深度体验&#xff1a;横版网页国战手游及WIN学习手工端全面解析,烽火中原H5】横板网页国战手游WIN学习手工端语音视频教程营运后台CDK授权后台, 喜欢国战手游的玩家们&#xff0c;你们期待已久的【烽火中原H5】现已上线&#xff01;这款游戏以横版网页的形式呈现…

揭开神秘的“位移主题”面纱 no.16

Kafka中神秘的内部主题&#xff08;Internal Topic&#xff09;__consumer_offsets。 consumer_offsets在Kafka源码中有个更为正式的名字&#xff0c;叫*位移主题*&#xff0c;即Offsets Topic。为了方便今天的讨论&#xff0c;我将统一使用位移主题来指代consumer_offsets。需…

Vue3 双向绑定

需求&#xff1a;父和子实现双向数据绑定 &#xff08;Vue3.4&#xff09; 单参数实现&#xff1a; 父组件------------------<UserNamev-model:first-name"first"v-model:last-name"last" />子组件&#xff1a;------------<script setup> c…

Kotlin学习笔记 泛型

在 Kotlin 中&#xff0c;T 通常用作类型参数的占位符&#xff0c;它在实例化或传递参数时会被替换成具体的类型。 Kotlin 支持泛型&#xff0c;这意味着您可以编写可以与多种数据类型一起工作的代码&#xff0c;而不必为每种数据类型编写单独的代码。 ### 泛型类和函数 在 …

记录贴 Elasticsearch的RestClient进行DSL查询

must&#xff1a;必须匹配每个子查询&#xff0c;类似“与” should&#xff1a;选择性匹配子查询&#xff0c;类似“或” must_not&#xff1a;必须不匹配&#xff0c;不参与算分&#xff0c;类似“非” filter&#xff1a;必须匹配&#xff0c;不参与算分 import cn.huto…

Kali 我来了

Kali 我来了 1、官网下载2、修改密码3、开启SSH远程登录服务4、关闭kali图形化界面 1、官网下载 官方链接: https://www.kali.org/ 下载链接: https://cdimage.kali.org/kali-2024.1/kali-linux-2024.1-vmware-amd64.7z 解压后 直接导入 VmWare 就可使用可爱的小 Kali 了。 …

AOP——学习

AOP&#xff08;面向切面编程&#xff09;是Spring框架的重要特性之一&#xff0c;用于分离关注点并处理横切关注点&#xff0c;如日志记录、安全性和事务管理。在面试中&#xff0c;AOP相关的问题通常会涉及基本概念、应用场景、实际使用、以及与其他编程范式的比较。以下是一…

LabVIEW机器设备的振动监测

振动监测是工业和机械维护中重要的一部分&#xff0c;通过检测和分析机械振动&#xff0c;提前发现潜在故障&#xff0c;确保设备的可靠运行。LabVIEW是一种强大的图形化编程环境&#xff0c;非常适合用于振动监测系统的开发和实施。以下从多个角度详细介绍LabVIEW在振动监测中…

互联网应用主流框架整合之数据库编程

Spring最重要的功能就是操作数据&#xff0c;数据库编程也是互联网编程的基础&#xff0c;Spring为开发者提供了JDBC模板模式&#xff0c;使用JdbcTemplate可以简化许多编码工作&#xff0c;同时也提供了TransactionTemplate支持事务的模板&#xff0c;但都不是常用技术&#x…

管理能力学习笔记十一:如何通过反馈做好辅导

关于辅导的常见错误 辅导过于细致 辅导的首要障碍: 不相信对方的潜力需要有成长型思维&#xff1a;即便员工现在不OK&#xff0c;未来会更好因材施教&#xff1a;对不同风格的下属&#xff0c;采取不同的辅导风格 凡事亲力亲为 作为管理者&#xff0c;我们要做的是&#xf…

【Unity2D 2022:Particle System】添加粒子特效

一、创建粒子系统游戏物体 1. 创建粒子系统游戏物体Smog Effect 2. 给粒子特效添加精灵贴图 &#xff08;1&#xff09;启用Texture Sheet Animation&#xff08;纹理表动画&#xff09; &#xff08;2&#xff09;点击加号添加一个纹理&#xff0c;并将两张厌恶图片导入到纹理…

【YashanDB知识库】OCI驱动类问题定位方法

【标题】OCI驱动类问题定位方法 【需求分类】故障分析 【关键字】OCI 【需求描述】由于我们的OCI接口目前尚不完善&#xff0c;经常会遇见OCI接口能力不足导致应用功能无法运行的问题&#xff0c;需要定位手段确定底层是哪个接口报错 【需求原因分析】方便一线数据库管理员…

使用jdk自带jhat工具排查OOM问题

使用jdk自带jhat工具排查OOM问题 OOM java.lang.OutOfMemoryError: Java heap space排查步骤 编写一个测试类 public class TestJVM {Testpublic void test1() throws InstantiationException, IllegalAccessException {List<A> list new ArrayList<>();for (i…

做抖音小店什么类目最容易爆单?搞懂这三点就明白了!

大家好&#xff0c;我是电商糖果 我们刚接触电商的时候&#xff0c;一定经常听一些同行念叨&#xff0c;选择大于努力&#xff0c;类目大于一切。 很多电商人把选类目比做定生死。 类目选对了&#xff0c;让你轻松飞升不是问题&#xff0c;类目选错了&#xff0c;基本被判了…

【YOLOv10】使用yolov10训练自己的数据集/验证 /推理 /导出模型/ONNX模型的使用

YOLOv10: 实时端到端的目标检测。 性能 YOLOv10比最先进的YOLOv9延迟时间更低&#xff0c;测试结果可以与YOLOv9媲美&#xff0c;可能会成为YOLO系列模型部署的“新选择”。 目录 1 数据准备 2 配置文件 3 训练 4 验证 5 预测 6 导出模型 7 ONNX模型的使用 官方论文地址…