Shell命令管理进程

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

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


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


列出进程


ps命令


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


ps [选项]


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


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


ps


image.png


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


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


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


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


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


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


ps aux


image.png


 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


image.png


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


ps -p 1234


image.png


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


ps -ejH


image.png


 · 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命令


image.png


  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和内存使用情况等。它主要用于查看和管理进程。


jobs:jobs 命令用于查看当前shell会话中的作业(通常是由shell启动的命令)。它主要用于查看和管理由当前shell会话启动的作业。


  2. 应用范围


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


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


 3. 输出格式


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


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


  4. 用途


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


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


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


停止进程


kill -9 [进程pid]


相关文章
|
17天前
|
监控 Linux 应用服务中间件
探索Linux中的`ps`命令:进程监控与分析的利器
探索Linux中的`ps`命令:进程监控与分析的利器
|
10天前
|
小程序 Linux
【编程小实验】利用Linux fork()与文件I/O:父进程与子进程协同实现高效cp命令(前半文件与后半文件并行复制)
这个小程序是在文件IO的基础上去结合父子进程的一个使用,利用父子进程相互独立的特点实现对数据不同的操作
|
10天前
|
SQL 自然语言处理 网络协议
【Linux开发实战指南】基于TCP、进程数据结构与SQL数据库:构建在线云词典系统(含注册、登录、查询、历史记录管理功能及源码分享)
TCP(Transmission Control Protocol)连接是互联网上最常用的一种面向连接、可靠的、基于字节流的传输层通信协议。建立TCP连接需要经过著名的“三次握手”过程: 1. SYN(同步序列编号):客户端发送一个SYN包给服务器,并进入SYN_SEND状态,等待服务器确认。 2. SYN-ACK:服务器收到SYN包后,回应一个SYN-ACK(SYN+ACKnowledgment)包,告诉客户端其接收到了请求,并同意建立连接,此时服务器进入SYN_RECV状态。 3. ACK(确认字符):客户端收到服务器的SYN-ACK包后,发送一个ACK包给服务器,确认收到了服务器的确
|
14天前
|
Linux 数据处理 调度
深入探索Linux的renice命令:优化进程优先级
`renice`命令在Linux中用于调整运行进程的优先级,范围-20(最高)至19(最低)。它可以实时改变进程的优先级,无需重启,支持按PID、进程组或用户批量修改。例如,`renice -n 10 -p 1234`将PID为1234的进程优先级设为10。使用时要注意不要滥用高优先级,避免频繁修改,了解系统负载,并记录变更,通常需root权限。
|
17天前
|
Web App开发 运维 监控
深入探索Linux命令pwdx:揭秘进程工作目录的秘密
`pwdx`命令在Linux中用于显示指定进程的工作目录,基于`/proc`文件系统获取实时信息。简单易用,如`pwdx 1234`显示PID为1234的进程目录。结合`ps`和`pgrep`等命令可扩展使用,如查看所有进程或特定进程(如Firefox)的目录。使用时注意权限、进程ID的有效性和与其他命令的配合。查阅`man pwdx`获取更多帮助。
|
23天前
|
缓存 监控 安全
Linux top命令详解:持续监听进程运行状态
Linux top命令详解:持续监听进程运行状态
33 3
|
24天前
|
Shell 虚拟化
分布式系统详解--框架(Zookeeper-基本shell命令)
分布式系统详解--框架(Zookeeper-基本shell命令)
21 1
|
4天前
|
应用服务中间件 nginx
cmd 杀掉 nginx后台进程 命令杀掉nginx后台 nginx 常用命令
cmd 杀掉 nginx后台进程 命令杀掉nginx后台 nginx 常用命令
10 0
|
13天前
|
Ubuntu Unix Linux
如何使用 Supervisor 管理你的进程
**Supervisor** 是一款Python编写的进程管理工具,用于类Unix系统,确保应用服务持续运行。常用命令包括:`reload`(重新加载配置)、`status`(查看进程状态)、`shutdown`(关闭所有进程)、`start`和`stop`(控制单个进程)。在CentOS上安装Supervisor用`yum install -y supervisor`,配置文件通常在`/etc/supervisord.conf`。
14 0
|
17天前
|
监控 Linux
深入了解Linux的pmap命令:进程内存映射的利器
`pmap`是Linux下分析进程内存映射的工具,显示内存区域、权限、大小等信息。通过`/proc/[pid]/maps`获取数据,特点包括详细、实时和灵活。参数如`-x`显示扩展信息,`-d`显示设备。示例:`pmap -x 1234`查看进程1234的映射。注意权限、实时性和准确性。结合其他工具定期监控,排查内存问题。