Shell命令管理进程

Shell命令管理进程

  • 列出进程
    • ps命令
    • top命令
  • 管理后台进程
    • 启动后台进程
    • 查看后台进程
    • jobs和ps的区别
    • 停止进程

  Linux除了是一种多用户操作系统之外,还是一种多任务系统。多任务意味着可以同时运行多个程序。Linux 提供了相关的工具来列出运行中的进程,监视系统的使用情况以及在必要时停止(或杀死)进程。

  可以通过一个 Shell启动、暂停、停止或者杀死进程。此外,还可以将进程放置到后台以及带到前台。本篇详细介绍ps、top、kill、jobs 以及其他用来列出和管理进程的命令。

列出进程

ps命令

  ps(Process Status)是一个常用的Linux/Unix命令,用于查看当前系统中运行的进程信息。它可以显示进程的状态、资源使用情况以及其他相关信息。ps命令的基本用法如下:

ps [选项]

  以下是一些常用的ps命令选项和示例:

  1. 显示当前用户的所有进程:

ps

在这里插入图片描述

  ps命令的输出中的 PIDTTYTIMECMD 是关于进程的信息的字段,它们分别代表以下内容:

  · PID(Process ID):进程的唯一标识符,用于识别和管理进程。每个进程都有一个唯一的PID,通过PID可以进行进程的操作和跟踪。

  · TTY(Terminal Type):与进程关联的终端设备(如果有的话)。这个字段显示了进程是否与终端关联,以及关联的终端类型。通常,如果进程是在终端上运行的,TTY字段将显示终端设备名称,否则显示?pts/0等。

  · TIME:进程已经占用CPU的累计时间。它通常以小时、分钟和秒的形式显示,用于表示进程在CPU上的运行时间。

  · CMD(Command):启动进程的命令行。这个字段显示了进程的完整命令,包括命令名称和可能的参数。

  2. 显示所有进程的详细信息,包括进程的PID(进程ID)、PPID(父进程ID)、CPU使用情况、内存使用情况等:

ps aux

在这里插入图片描述
  ps aux 命令的输出中的字段分别代表以下内容:

  · USER:启动进程的用户名。这是进程的所有者。

  · %CPU:进程占用的CPU利用率,以百分比表示。

  · %MEM:进程占用的物理内存利用率,以百分比表示。

  · VSZ(Virtual Memory Size):进程的虚拟内存大小,以千字节(KB)为单位。它表示进程当前使用的虚拟内存的总大小。

  · RSS(Resident Set Size):进程的常驻内存大小,以千字节(KB)为单位。它表示进程当前占用的物理内存的大小。

  · STAT:进程的状态。通常以单个字符表示,例如,R表示运行中,S表示休眠,Z表示僵尸进程等。

  · START:进程启动的时间和日期。

  · COMMAND:启动进程的完整命令行。

  3. 显示指定用户的所有进程,例如,显示用户名为user的所有进程:

ps -u user

在这里插入图片描述

  4. 显示指定进程的信息,例如,显示PID为1234的进程:

ps -p 1234

在这里插入图片描述

  5. 以树状结构显示进程,包括父子关系:

ps -ejH

在这里插入图片描述

  · UID(User ID):启动进程的用户ID。这是进程的所有者的数字标识符。

  · PID(Process ID):进程的唯一标识符,用于识别和管理进程。

  · PPID(Parent Process ID):父进程的PID,即启动当前进程的进程的PID。

  · PGID(Process Group ID):进程组的ID,多个进程可以被组织成一个进程组。

  · SID(Session ID):会话的ID,一个会话可以包含多个进程组。

  · C:进程占用CPU的时间片百分比。

  · STIME:进程的启动时间。

top命令

在这里插入图片描述

  top 命令是一个用于实时监视系统性能的强大工具,它会以交互式方式显示系统中运行的进程的信息,包括 CPU 使用率、内存使用、进程列表等。要正确分析 top 命令的输出,可以按照以下步骤进行:

  理解顶部概要信息: top 命令的顶部显示包含系统的概要信息。上图第一行,分别是系统运行时间、用户数量、平均系统负载。

  平均系统负载是一个用于衡量系统负载的指标,它表示在一段时间内系统中正在运行或等待执行的进程数量。通常,平均系统负载以三个值的形式显示,分别对应于不同的时间段:1分钟、5分钟和15分钟。
要理解这些值的含义,可以将其解释如下:
  第一个值(1分钟负载平均):它表示在过去1分钟内平均有多少个进程处于运行状态或等待运行状态。这个值通常对应于系统的瞬时负载情况,如果这个值大于系统的CPU核心数量,表示系统可能正处于过载状态。
  第二个值(5分钟负载平均):它表示在过去5分钟内平均有多少个进程处于运行状态或等待运行状态。这个值通常对应于较长时间内的负载情况,可以用来观察系统的负载趋势。
  第三个值(15分钟负载平均):它表示在过去15分钟内平均有多少个进程处于运行状态或等待运行状态。这个值通常对应于相对较长的时间段内的负载情况,也可以用来观察系统的负载趋势。
  通常情况下,平均系统负载值应该保持在系统的CPU核心数量范围内(例如,如果系统有4个CPU核心,那么负载应该在1到4之间较为正常)。如果平均系统负载持续高于系统的CPU核心数量,可能表示系统正处于过载状态,需要进一步分析和处理,例如优化性能或增加硬件资源。

  第二行是任务运行统计。第三行是CPU使用情况。

  us:用户空间(User Space)CPU 使用率。它表示在用户程序中消耗的CPU时间,例如运行应用程序。
  sy:系统空间(System Space)CPU 使用率。它表示在内核中执行系统调用或内核任务时消耗的CPU时间,例如处理硬件中断或文件系统操作。
  ni:Nice值(Nice)。Nice值是进程的调度优先级,如果有运行在较低优先级的进程,它们消耗的CPU时间会显示在这里。
  id:空闲(Idle)CPU 时间的百分比。这表示 CPU 空闲的时间百分比,没有任何任务在运行。
  wa:等待(Wait)CPU 时间的百分比。它表示 CPU 等待I/O操作完成的时间百分比,通常用于检测磁盘或其他I/O瓶颈。
  hi:硬中断(Hardware Interrupts)CPU 时间的百分比。它表示处理硬件中断的时间百分比,通常由硬件设备触发。
  si:软中断(Software Interrupts)CPU 时间的百分比。它表示处理软中断的时间百分比,通常由操作系统内核触发。
  st:虚拟化(Steal Time)CPU 时间的百分比。这个值通常在虚拟化环境中出现,表示虚拟机被宿主机夺走的CPU时间。

  第四行是系统内存和交换空间的统计信息。

  查看进程列表: top 的主要部分是进程列表,它会列出当前运行的所有进程。默认情况下,进程按照CPU使用率排序,最高的进程位于列表的顶部。你可以按下不同的键来改变排序方式,例如按下M键按内存使用率排序。

  理解各列的含义: 见本篇博客的ps命令介绍。

  交互式操作: top 命令允许在运行时进行交互式操作。你可以使用键盘上的不同键来改变排序、过滤进程、查看不同的系统信息等。按下h键可以查看帮助信息,列出了可用的交互命令。

  查看资源利用情况: 注意查看系统的资源利用情况,特别是 CPU 和内存的使用率。如果某个进程占用了大量资源,可以考虑采取措施来优化或终止该进程。

  退出 top 当完成分析后,可以按下q键来退出 top

管理后台进程

启动后台进程

  如果想要使某些程序在使用Shell的过程中始终运行,可以将它们放置到后台。为了将某一程序放置到后台,需要在命令行的末尾输入一个与号(&),如下所示:

java -jar a.jar &

  上面的代码指的是在后台执行java文件。

查看后台进程

  如果想要检查哪些命令在后台运行,可以使用jobs命令,如下所示:

jobs
[ 1] stopped (tty output) vi/tmp/myfile
[ 2] Running find /usr -print > /tmp/allusrfiles &
[ 3] Running nroff -man /usr/man2/* >/tmp/ man2 &
[ 4]- Running nroff -man /usr/man3/* >/tmp/man3 &
[ 5] + Stopped nroff -man /usr/man4/* >/tmp/man4

jobs和ps的区别

  jobsps 是两个不同的命令,用于查看系统中正在运行的进程和作业,它们有以下主要区别:

  1. 功能和用途

  • ps(Process Status):ps 命令用于查看系统中所有进程的信息,包括它们的PID、状态、CPU和内存使用情况等。它主要用于查看和管理进程。
  • jobsjobs 命令用于查看当前shell会话中的作业(通常是由shell启动的命令)。它主要用于查看和管理由当前shell会话启动的作业。

  2. 应用范围

  • ps 可以用于查看系统中所有进程,包括后台运行的系统进程和由其他用户启动的进程。

  • jobs 仅用于查看当前shell会话中的作业,通常用于查看和管理当前用户启动的命令。
      3. 输出格式

  • ps通常以详细的表格形式显示进程信息,提供更多的细节。

  • jobs 显示当前shell会话中的作业列表,通常包括作业号、状态和命令。
      4. 用途

  • ps 通常用于全局系统级别的进程监控,用于系统管理员或高级用户查看系统中的进程情况。

  • jobs 用于shell会话中的作业控制,例如在后台运行作业、挂起作业、恢复作业等。

  举个例子,当你在终端中启动一个长时间运行的命令,并且希望在后台运行,你可以使用 & 符号来将命令放入后台,然后使用 jobs 命令来查看后台作业列表。而 ps 命令则用于查看系统中运行的所有进程,包括后台进程和其他用户的进程。

停止进程

kill -9 [进程pid]

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

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

相关文章

库的相关操作

目录 一、创建数据库 1,创建数据库规则 2、创建案例 二、字符集和校验规则 1、查看系统默认字符集以及校验规则 2、查看数据库支持的字符集以及校验规则 3、校验规则对数据库的影响 三、操纵数据库 1、查看数据库和目前所在数据库 2、显示创建语句 3、修改数据库 4、…

windows环境下node安装教程(超详细)

安装node.js 1、下载node: 下载地址:下载 | Node.js 中文网 node.js的zip包安装时是直接解压缩后就可以了, node.js的msi包是傻瓜式一路next就可以了 选择一中方式就可以 2、解压后的目录,或者mis安装后的目录如下: 3、安装完后,可以在命令行中输入…

c高级day4(9.11)shell脚本(case ....in语句,循环语句,select ...in和case...In结合,辅助控制关键字,函数)

1.实现一个对数组就和的函数,数组通过实参传递给函数 2.写一个函数,输出当前用户的uid和gid,并使用变量接收结果 #!/bin/bash read -a arr sum0 function add() { …

【易盾点选】

拿官网的点选做个例子吧,比较省事,水一篇~ ​ 官网的接口目前都改成V3了,多了个dt参数,以及加密的一个函数也变动了下 点选坐标在这,加密函数未变,用逗号拼接 整个加密里的函数变了,直接重新…

RedisJava基础代码实现

Jedis快速入门 <!--jedis--> <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>3.7.0</version> </dependency> <!--单元测试--> <dependency><groupId>org.ju…

人工智能AI 全栈体系(一)

第一章 神经网络是如何实现的 这些年人工智能蓬勃发展&#xff0c;在语音识别、图像识别、自然语言处理等多个领域得到了很好的应用。推动这波人工智能浪潮的无疑是深度学习。所谓的深度学习实际上就是多层神经网络&#xff0c;至少到目前为止&#xff0c;深度学习基本上是用神…

华为云云耀云服务器L实例评测|有关华为云云耀云服务器L实例你可能不知道的事情

前言 最近华为云推出了华为云云耀云服务器L实例。主打一个轻量级云服务器&#xff0c;即开即用&#xff0c;轻松运维&#xff0c;开启简单上云第一步。具有智能不卡顿&#xff0c;价优随心用&#xff0c;上手更简单&#xff0c;管理特省心。 在推出的第一时间我就买了一台来耍…

C高级day4

一、实现一个对数组求和的函数&#xff0c;数组通过实参传递给函数 二、写一个函数&#xff0c;输出当前用户的uid和gid&#xff0c;并使用变量接收结果 三、XMind思维导图

23062C++QTday4

仿照string类&#xff0c;完成myString 类 代码&#xff1a; #include <iostream> #include <cstring> using namespace std; class myString {private:char *str; //记录c风格的字符串int size; //记录字符串的实际长度public://无参构造my…

【MySQL系列】视图特性

「前言」文章内容大致是MySQL事务管理。 「归属专栏」MySQL 「主页链接」个人主页 「笔者」枫叶先生(fy) 目录 视图1.1 视图概念1.2 创建视图1.3 修改互相影响1.4 删除视图1.5 视图规则和限制 视图 1.1 视图概念 视图是一个虚拟表&#xff0c;其内容由查询定义同真实的表一样…

零基础教程:使用yolov8训练无人机VisDrone数据集

1.准备数据集 1.先给出VisDrone2019数据集的下载地址&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1e2Q0NgNT-H-Acb2H0Cx8sg 提取码&#xff1a;31dl 2.将数据集VisDrone放在datasets目录下面 2.数据集转换程序 1.在根目录下面新建一个.py文件&#xff0c;取名叫…

【strcat函数和strncat函数的对比与模拟实现】

strcat函数和strncat函数的对比与模拟实现 1.strcat函数的介绍 资源来源于cplusplus网站 它的作用是&#xff1a; 将源字符串的副本追加到目标字符串。目标中的结束空字符被源的第一个字符覆盖&#xff0c;并且在由目标中的两个字符串串联形成的新字符串的末尾包含一个空字符…

序列到序列学习(seq2seq)

permute(1,0,2)&#xff0c;将batch_size 放在中间state 最后一个时刻&#xff0c;每个层的输出

一文看懂Java的类加载机制

前言 当我们运行Java程序时&#xff0c;Java虚拟机&#xff08;JVM&#xff09;需要加载各种类文件&#xff0c;以执行程序中的代码。Java的类加载机制是Java语言的一个关键特性&#xff0c;它负责在运行时将类加载到内存中&#xff0c;并确保类的正确性。 类是在运行期间第一…

网络安全—0基础入门学习手册

前言 一、什么是网络安全 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、Web、移动、桌面、云等哪个领域&#xff0c;都有攻与防…

用python实现基本数据结构【01/4】

说明 如果需要用到这些知识却没有掌握&#xff0c;则会让人感到沮丧&#xff0c;也可能导致面试被拒。无论是花几天时间“突击”&#xff0c;还是利用零碎的时间持续学习&#xff0c;在数据结构上下点功夫都是值得的。那么Python 中有哪些数据结构呢&#xff1f;列表、字典、集…

Kubernetes (K8s) 解读:微服务与容器编排的未来

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f405;&#x1f43e;猫头虎建议程序员必备技术栈一览表&#x1f4d6;&#xff1a; &#x1f6e0;️ 全栈技术 Full Stack: &#x1f4da…

设计模式篇(Java):装饰者模式

&#x1f468;‍&#x1f4bb;本文专栏&#xff1a;设计模式篇-装饰者模式 &#x1f468;‍&#x1f4bb;本文简述&#xff1a;装饰者模式的详解以及jdk中的应用 &#x1f468;‍&#x1f4bb;上一篇文章&#xff1a; 设计模式篇(Java)&#xff1a;桥接模式 &#x1f468;‍&am…

串行数据发送器

框图 THR&#xff1a;发送保持寄存器 定义了两种状态&#xff1a;空&#xff0c;满数据写入端口地址&#xff1a;00H状态读出端口地址&#xff1a;00H当THR不满时&#xff0c;可以向THR写入数据 TSR&#xff1a;发送移位寄存器 一旦TSR空而THR中有数据时&#xff0c;THR中的数…