首页 > 系统相关 >5、Linux学习之进程管理

5、Linux学习之进程管理

时间:2023-11-28 17:24:13浏览次数:30  
标签:top 学习 命令 kill 信号 Linux 进程 CPU

一、进程概述

进程是已启动的可执行程序的运行实例。进程有以下组成部分。

  • 已分配内存的地址空间。
  • 安全属性,包括所有权凭据和特权。
  • 程序代码的一个或多个执行线程。
  • 进程状态。

每个进程都有唯一的进程标识PID一个PID只能标识一个进程。
PPID为父进程ID。
进程状态是指程序执行过程中的变化。进程状态随着程序的执行和外界条件的变化而转换,一般分为3类:就绪态、运行态、阻塞态。如下图:

 

 

二、查看进程

1、静态查看进程:ps命令

ps 命令可以查看静态进程,仅仅是捕捉某一个瞬间某一个进程的状态,类似于给进程制作快照。

使用 “ps aux” 命令查看当前目录的进程。

 每列显示的数据代表的意义如下:

USER 进程的用户 RSS   该进程占用的固定内存量(KB)
PID  进程的ID TTY 该进程在哪一个终端上运行(登录者的终端位置),若与终端无关,则显示(?)。若为pts/0等,则表示由网络链接主机进程
%CPU 进程占用的CPU百分比 START 该进程被触发启动时间
%MEM 占用内存的百分比 TIME 该进程实际使用CPU运行的时间
VSZ 该进程使用的虚拟内存量(KB) COMMAND 命令的名称和参数

查看进程按照CPU占用百分比的降序排列,使用该命令:ps aux --sort -%cpu

"ps -ef"命令查看UID、PID、PPID等信息。

 

 

2、动态查看进程:top命令

 top命令可以实时动态地显示进程,类似于Windows系统中的任务管理器。

使用top 命令动态查看进程时,进程信息分为上下两部分,上面为整体信息下面为每一个进程的信息。系统默认更新时间为3秒,也可以按回车键立即更新,具体如下所示。

 

我们现在一一分析这些字段的含义:

第一行

    • top - 14:55:31 表示当前时间,也就是当前真实的时间。

    • up 3:47,表示这个系统从启动到现在的时间。

    • 2 users 表示当前在使用这个机器的用户数量。

    • load average: 0.24, 0.08, 0.06 ,这个值表示系统过去1分钟,5分钟,15分钟的系统负载,即任务队列的平均长度。

      • 系统平均负载:单核CPU情况下,0.00 表示没有任何负荷,1.00表示刚好满负荷,超过1侧表示超负荷,理想值是0.7;
      • 多核CPU负载:CPU核数 * 理想值0.7 = 理想负荷,例如:4核CPU负载不超过2.8何表示没有出现高负载。

第二行

第二行主要表示当前系统当中任务的相关情况,所谓任务就是当前系统当中一共有多少个进程。

    • Tasks:235 totoal,这个表示当前系统当中一共有235个进程。

    • 1 runnung,表示有一个进程正在执行。

    • 234 sleeping,表示有234个进程处于睡眠状态,也就是不需要使用CPU的状态。

    • 0 stoped,表示有0个进程处于stopped状态,这个状态就是被停下来的进程,比如说通过ctrl+z让一个进程停下来,你可以通过给这个进程发送一个信号SIGCONT让这个进程恢复执行,linux当中进程的状态变换如下所示:

    • 0 zombie,这个就表示僵尸进程的个数,这里是0个僵尸进程,所谓僵尸进程就是一个进程执行完成了,对于C程序来说你可以理解为你的main函数执行完成了(这个不够准确,其实main函数执行完成之后还会有其他函数需要执行,但是这里你可以大致这么理解),如果这个时候(函数执行完成),这个进程的父进程却没有接受子进程发送给他的信号(子进程在执行完成之后会给父进程发送信号,父进程需要通过wait等系统调用去接受这个信号),那么子进程就处于zombie状态,处于这个状态的进程就需要父进程接受它发送的信号,然后子进程的系统资源就可以被回收了,然后子进程会彻底消亡。

命令格式:top [选项]

选项:

"-d"参数 设置刷新时间,以秒为单位 top -d 5(刷新时间)
“-p”参数 指定查看一个或多个进程的动态信息 top -p 10636,1(指定进程PID) 
"-u"参数 查看指定用户的进程 top -u apache(指定进程名)
“-n”参数 设置刷新次数,完成后自动退出 top -n 2(刷新次数)

 

三、信号控制进程

在进程运行过程中,若由于某些原因需要终止该进程,用户可以给予该进程一个信号(signal),进程接收到信号之后,就会依照信号的要求做出相应的反应。

1、 kill命令

Linux中的kill命令用来终止指定进程的运行。首先使用ps / pidof / top 等工具获取进程 PID,然后使用kill命令来杀死该进程。kill命令通过向进程发送指定的信号来结束相应的进程,在默认情况下,采用编号为15的 TERM信号。使用kill -l命令查看全部信号,具体如下所示。

 常用的信号如下:

信号编号 名称 特性及意义
1 SIGHUP 启动被终止的进程,重新加载,PID不会发生变化
9 SIGKILL 强制终止进程,使用此信号可能导致进程无法再次启动
15 SIGTERM 默认信号,以正常流程终止进程,允许进程释放资源。若进程已经出现问题,无响应,此信号将不起作用
18 SIGCONT 恢复进程
19 SIGSTOP 暂停进程

kill命令格式:  kill [参数] [进程号]

[注意] 

  • kill命令可以带信号号码选项,也可以不带。如果没有信号号码,kill命令就会默认发出终止信号(15),这个信号可以被进程捕获,使得进程在退出之前可以清理并释放资源。也可以用kill向进程发送特定的信号。例如:      kill -2 123

它的效果等同于在前台运行PID为123的进程时按下Ctrl+C键。但是,普通用户只能使用不带signal参数的kill命令或最多使用-9信号。

 

2、killall命令

killall 命令可以用于终止某个指定名称的服务所对应的全部程序。

四、进程优先级

1、基本概念

 cpu 资源分配的先后顺序,就是指进程的优先级(priority) 。优先级高的进程有优先执行权利。配置进程优先权对多任务环境的 Linux 很有用,可以改善系统性能。

由于不是每个进程都同样重要,可以让进程调度程序为不同的进程使用不同的调度策略。常规系统上运行的大多数进程所使用的调度策略为SCHED_OTHER(也称为 SCHED_NORMAL),但还有其他一些调度策略用于不同的目的。

SCHED_OTHER 调度策略使用的进程的相对优先级称为进程的 nice值,有40个不同级别,其范围为-20~19,数值越小优先级越高,数值越大优先级越低。例如,-20的优先级最高,该进程不倾向于让出 CPU;19的优先级最低,该进程容易将CPU 让给其他进程。

【注意】普通用户调整应用程序优先权值的范围为0~19,只有超级用户有权使用更高的优先权值。

2、查看进程优先级

A、使用top命令查看nice级别

使用top 命令动态查看进程时,进程信息分为上下两部分,上面为整体信息,下面为每一个进程的信息

 其中:

  • PID : 代表这个进程的ID号。
  • PPID :代表这个进程是由哪个进程发展衍生而来的,亦即父进程的ID号。
  • PR :将nice级别映射到更大的优先级队列,-20映射到0,+19映射到39。
  • NI :代表这个进程的 nice 值。

B、使用ps 命令查看nice级别

在Linux系统中,用 ps –l 或 ps -al命令则会类似输出以下几个内容:

 

 

标签:top,学习,命令,kill,信号,Linux,进程,CPU
From: https://www.cnblogs.com/yyz1-/p/17855047.html

相关文章

  • py01-python之进程
    一、进程1、概念(1)并发:在一段时间内交替去执行多个任务。例如对于单核cpu处理多任务,操作系统轮流让各个任务交替执行(任务数量大于CPU的核心数)。(2)并行:在一段时间内真正的同时一起执行多个任务。例如对于多核cpu处理多任务,操作系统会给cpu的每个内核安排一个执行的任务,多个内......
  • Linux第七章学习笔记
    Linux中的存储管理主要涉及磁盘分区、文件系统和磁盘配额等内容。本篇学习笔记将对Linux存储管理相关内容进行介绍。磁盘分区在Linux中,磁盘分为多个区域,每个区域被称为一个分区(partition)。磁盘分区可以将硬盘划分为不同的逻辑部分,每个分区可以单独设置不同的文件系统和挂载点。......
  • Linux第三章学习笔记
    Linux系统是一个多用户、多任务的操作系统。为了保证系统的安全和有效使用,Linux提供了严格的用户管理机制。本篇学习笔记主要讲解Linux用户管理相关内容。用户账户Linux系统中的用户账户包括系统管理员账户(root账户)和普通用户账户。其中,root账户拥有最高的权限,可以进行系统的所......
  • 学习linux文件管理的收获与心得
    学习Linux文件管理我有以下收获和心得:1.熟悉了Linux文件系统的组成和目录结构,对Linux操作系统有了更深入的理解。2.掌握了文件和目录操作的基本命令,如ls、cd、mkdir、rm等,能够快速查看和操作文件。3.学习了文件和目录权限相关的命令(chmod,chown,chgrp)以及权限表示方法......
  • Linux学习日志
    Linux学习日志环境安装安装软件一般有三种方式:rpm解压缩yum在线安装1、JDK安装我们开发java程序必须要的环境!1、下载JDKrpm。2、安装java环境#检测当前系统是否存在java环境!java-version#如果有的话就需要卸载#rpm-qa|grepjdk#检测JDK版本信息#rpm-e--n......
  • 学习linux用户管理的收获
    学习Linux用户管理我有以下收获:1.掌握了用户与组的基本概念,以及用户与组的关系;2.熟悉了用户与组相关的文件和目录,如/etc/passwd、/etc/shadow、/etc/group等;3.熟悉了添加和删除用户、修改用户信息、修改密码等操作,能够灵活地对用户进行管理;4.学习了不同用户之间的权限控......
  • 高级权限介绍以及文件属性进程掩码
    昨天把文件管理的基本权限介绍了,今天介绍高级权限高级权限包含SUIDSGIDSticky权限。1.SUID权限当s这个标志出现在文件所有者的x权限上时,此时就被称为SetUID,简称SUID。作用:SUID权限仅对可执行文件有效执行者对于该可执行文件需要具有x权限在执行过程中,调用者会暂时获......
  • 学习Vue3 第五章(Vue核心虚拟Dom和 diff 算法)
      介绍虚拟DOM虚拟DOM就是通过JS来生成一个AST节点树   为什么要有虚拟DOM?一个dom上面的属性是非常多的,所以直接操作DOM非常浪费性能介绍Diff算法diff算法的目的就是找出新旧不同虚拟DOM之间的差异,使最小化的更新视图,所以diff算法本质上就是......
  • 使用Python中的tarfile :解决Mac和Linux 打包冲突问题
    Python对tar包的操作目的:兼容linux和macOS系统上都能正常打包和解包起初:在macOS上使用命令tar打得包在linux上根本无法解开。原因:https://blog.csdn.net/qq_44214671/article/details/127804905解决办法:python是兼容MacOS和Linux,直接用Python的tarfile操作tar包。https://do......
  • Linux进程管理
    作为一名大学生,最近我在学习Linux操作系统的过程中深入了解了进程管理这一重要的章节。Linux作为一种强大而灵活的操作系统,其进程管理机制为用户提供了广泛的控制和定制能力。在这篇博客文章中,我将分享我在学习Linux进程管理方面所获得的知识。什么是进程?首先,让我们明确什么是......