Shell命令管理进程
- 列出进程
- ps命令
- top命令
- 管理后台进程
- 启动后台进程
- 查看后台进程
- jobs和ps的区别
- 停止进程
Linux除了是一种多用户操作系统之外,还是一种多任务系统。多任务意味着可以同时运行多个程序。Linux 提供了相关的工具来列出运行中的进程,监视系统的使用情况以及在必要时停止(或杀死)进程。
可以通过一个 Shell启动、暂停、停止或者杀死进程。此外,还可以将进程放置到后台以及带到前台。本篇详细介绍ps、top、kill、jobs 以及其他用来列出和管理进程的命令。
列出进程
ps命令
ps
(Process Status)是一个常用的Linux/Unix命令,用于查看当前系统中运行的进程信息。它可以显示进程的状态、资源使用情况以及其他相关信息。ps
命令的基本用法如下:
ps [选项]
以下是一些常用的ps
命令选项和示例:
1. 显示当前用户的所有进程:
ps
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
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的区别
jobs
和 ps
是两个不同的命令,用于查看系统中正在运行的进程和作业,它们有以下主要区别:
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]