入职必会-开发环境搭建40-Linux常用操作-Linux进程管理

简介: 进程是正在执行的程序或命令。每个进程独立的,都有需要占用一定的系统资源。Linux系统中启动进程有两种方式:1.Linux操作系统启动的时自动启动的进程。2.用户在终端输入命令启动的进程。

进程管理

进程介绍

进程是正在执行的程序或命令。每个进程独立的,都有需要占用一定的系统资源。Linux系统中启动进程有两种方式:1.Linux操作系统启动的时自动启动的进程。2.用户在终端输入命令启动的进程。

ps 查看当前系统进程状态

命令说明:

ps命令的全称为`process status` 表示进程状态。

ps命令参数

作用

显示当前用户通过终端启动的进程

a

显示所有用户通过终端启动的进程

u

显示所有用户通过终端启动的进程的详细信息

x

显示所有用户的所有进程

-e

显示所有进程

-u

显示某个用户关联的所有进程

-f

显示进程完整信息

常用方法:

ps aux  查看进程的CPU占用率和内存占用率
ps -ef  查看进程的父进程ID可以使用

操作示例:

[root@cyxpa02 ~]# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.3 128096  6632 ?        Ss   14:36   0:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root          2  0.0  0.0      0     0 ?        S    14:36   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    14:36   0:00 [ksoftirqd/0]
root          5  0.0  0.0      0     0 ?        S<   14:36   0:00 [kworker/0:0H]

效果说明:

标题

说明

USER

进程所属的用户

PID

进程的ID

%CPU

进程占用CPU资源的百分比

%MEM

进程占用物理内存的百分比

VSZ

进程占用虚拟内存的大小,单位 KB

RSS

进程占用实际物理内存的大小,单位 KB

TTY

进程是在哪个终端中运行的,如果显示?,表示非终端启动,该进程是守护进程

STAT

进程状态。R:运行状态、S:睡眠状态、T:暂停状态、Z:僵尸状态、s:包含子进程、l:多线程、+:前台显示

START

进程的启动时间

TIME

进程占用CPU运算的时间

COMMAND

产生此进程的命令名

操作示例:

[root@cyxpa02 ~]# ps -ef
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 14:36 ?        00:00:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root          2      0  0 14:36 ?        00:00:00 [kthreadd]
root          3      2  0 14:36 ?        00:00:00 [ksoftirqd/0]
root          5      2  0 14:36 ?        00:00:00 [kworker/0:0H]

效果说明:

标题

说明

UID

进程所属的用户ID

PID

进程的进程号

PPID

进程的父进程号

C

进程的CPU使用率百分比

STIME

进程的启动时间

TTY

进程是在哪个终端中运行的,如果显示?,表示非终端启动,该进程是守护进程

TIME

进程占用CPU运算的时间

CMD

启动进程所用的命令和参数

ps -ef | grep 查询进程的信息

可以通过:ps -ef | grep 查询信息:可以根据查询信息找到相应的进程和信息。

操作示例:

[root@cyxpa02 ~]# ps -ef | grep tail
root     114750   7441  0 16:02 pts/0    00:00:00 tail -f he.txt
root     114882 113463  0 16:02 pts/2    00:00:00 grep --color=auto tail

kill 终止进程

命令说明:

作用: 发送一个特定的信号给指定的进程,若没有指定信号,默认是15,用于终止程序
语法: kill [选项] pid
选项: 
  -s    指定发送的信号,信号可以以信号名或数字的方式给定
  -p    指定 kill 只打印命名进程的进程标识 (pid) , 而不应发送给它信号
    -l    打印信号名的列表,这可以在 /usr/include/linux/signal.h 中找到
常见用法: 
  kill -l   打印信号名的列表
  kill -1 进程号   重新加载进程
  kill -9 进程号   杀死一个进程
    kill -15 进程号  正常停止一个进程

操作示例:

[root@cyxpa02 ~]# kill -l
 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
 6) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL     10) SIGUSR1
11) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO       30) SIGPWR
31) SIGSYS      34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX
[root@cyxpa02 ~]#
[root@cyxpa02 ~]# ps -ef | grep tail
root      12192   7441  0 16:13 pts/0    00:00:00 tail -f he.txt
root      79541  12407  0 16:31 pts/4    00:00:00 grep --color=auto tail
[root@cyxpa02 ~]# kill -1 12192
[root@cyxpa02 ~]#
[root@cyxpa02 ~]# ps -ef | grep tail
root      81383   7441  0 16:32 pts/0    00:00:00 tail -f he.txt
root      82270  12407  0 16:32 pts/4    00:00:00 grep --color=auto tail
[root@cyxpa02 ~]# kill -9 81383
[root@cyxpa02 ~]#
[root@cyxpa02 ~]# ps -ef | grep tail
root      83202   7441  0 16:32 pts/0    00:00:00 tail -f he.txt
root      83444  12407  0 16:32 pts/4    00:00:00 grep --color=auto tail
[root@cyxpa02 ~]# kill -9 83202
[root@cyxpa02 ~]#

pstree 查看进程树

最小化安装的CentOS 7系统默认没有pstree命令。直接敲命令运行后会显示-bash: pstree: 未找到命令,需要单独安装pstree命令。输入下面的命令安装pstree

yum -y install psmisc

命令说明:

作用: 
语法: pstree [选项]
选项: 
  -p    显示进程的ID
    -u    显示进程的所属的用户
常见用法: 
  pstree -p 树形结构显示进程的ID
  pstree -u 树形结构显示进程的所属的用户

操作示例:

[root@cyxpa02 ~]# pstree -p
systemd(1)─┬─NetworkManager(6431)─┬─dhclient(6729)
           │                      ├─{NetworkManager}(6438)
           │                      └─{NetworkManager}(6442)
           ├─VGAuthService(6306)
           ├─abrt-watch-log(6307)
     省略一部分
           ├─lvmetad(3201)
           ├─systemd-journal(3180)
           ├─systemd-logind(6310)
           ├─systemd-udevd(3214)
           ├─tuned(6923)─┬─{tuned}(7318)
           │             ├─{tuned}(7319)
           │             ├─{tuned}(7320)
           │             └─{tuned}(7333)
           └─vmtoolsd(6320)───{vmtoolsd}(6394)
[root@cyxpa02 ~]# pstree -u
systemd─┬─NetworkManager─┬─dhclient
        │                └─2*[{NetworkManager}]
        ├─VGAuthService
  省略一部分
        ├─sshd─┬─sshd─┬─bash───tail
        │      │      ├─bash───top
        │      │      └─bash───sleep
        │      ├─sshd─┬─bash───pstree
        │      │      ├─bash───top
        │      │      ├─bash───sleep
        │      │      └─sftp-server
        │      └─sshd─┬─bash───sleep
        │             ├─bash
        │             ├─bash───top
        │             └─sftp-server
[root@cyxpa02 ~]#

top 显示Linux进程状态

命令说明:

作用: 显示Linux进程状态
语法: top [选项]
选项: 
  -d    间隔秒数
  -i    忽略空闲进程和僵尸进程
  -p    监控指定的进程
              
常见用法: 
  top -d 2  间隔2秒数显示一次进程状态
  top -i    忽略空闲进程和僵尸进程
  top -p 1222 监控1222进程状态

top命令默认是3秒后刷新显示,用户可以输入回车空格手动刷新。

执行top命令后进入top基本视图,在top基本视图可以使用命令操作,命令如下:

top基本视图命令

说明

s

修改显示间隔时间

l

切换系统运行时间和平均负载信息

t

切换CPU状态信息

m

切换物理内存使用信息

f

设置进程的状态的显示信息,上下键

移动,空格键

选中或取消,q

退出选择

N

以PID的大小的顺序排列

P

以CPU占用率大小的顺序排列

M

以内存占用率大小的顺序排列

n

设置进程的显示数量

1

显示监控每个逻辑CPU的信息

h

显示帮助

操作示例:

[root@cyxpa02 ~]# top -d 0.5
top - 17:10:00 up  2:33,  6 users,  load average: 0.18, 0.31, 0.32
Tasks: 152 total,   1 running, 151 sleeping,   0 stopped,   0 zombie
%Cpu(s):  1.0 us,  3.5 sy,  0.0 ni, 95.5 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1863252 total,  1190420 free,   178444 used,   494388 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.  1481796 avail Mem 
   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                
 12373 root      20   0  161260   6096   4344 S   2.0  0.3   0:45.19 sshd                                   
 92071 root      20   0  162012   2328   1616 R   2.0  0.1   0:00.13 top                                     
     1 root      20   0  128096   6632   4140 S   0.0  0.4   0:03.27 systemd  
     省略其他信息
[root@cyxpa02 ~]# 
[root@cyxpa02 ~]# 
[root@cyxpa02 ~]# top -i
top - 17:11:39 up  2:35,  6 users,  load average: 0.47, 0.37, 0.34
Tasks: 152 total,   1 running, 151 sleeping,   0 stopped,   0 zombie
%Cpu(s):  2.4 us,  5.1 sy,  0.0 ni, 92.4 id,  0.0 wa,  0.0 hi,  0.1 si,  0.0 st
KiB Mem :  1863252 total,  1188848 free,   179092 used,   495312 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.  1481352 avail Mem 
   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                 
  7437 root      20   0  161260   6080   4344 S   1.3  0.3   2:05.26 sshd 
[root@cyxpa02 ~]# 
[root@cyxpa02 ~]# 
[root@cyxpa02 ~]# top -p 26520 -d 0.5
top - 17:12:43 up  2:36,  6 users,  load average: 0.35, 0.36, 0.33
Tasks:   1 total,   0 running,   1 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.5 sy,  0.0 ni, 99.5 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1863252 total,  1188492 free,   178332 used,   496428 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.  1481680 avail Mem 
   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                 
 26520 root      20   0  107992    616    524 S   0.0  0.0   0:00.00 tail

top命令结果说明

第一行top - 17:11:39 up 2:35, 6 users, load average: 0.47, 0.37, 0.34是系统运行时间和平均负载。

标题

说明

17:11:39

当前系统时间

up  2:35

系统运行时间为2小时35分

6 users

当前系统登录了6个用户

load average: 0.47, 0.37, 0.34

系统最近5、10、15分钟内的平均负载。小于1说明负载较小。大于1说明系统已经超出负荷

第二行Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie是进程信息。

标题

说明

Tasks:   1 total

系统的总进程数量

0 running

正在运行的进程数量

1 sleeping

睡眠的进程数量

0 stopped

停止的进程数量

0 zombie

僵尸进程数量

第三行%Cpu(s): 0.0 us, 0.5 sy, 0.0 ni, 99.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st是CPU状态。

标题

说明

%Cpu(s):  0.0 us

运行用户进程的CPU时间

0.5 sy

运行内核进程的CPU时间

0.0 ni

运行已调整优先级的用户进程的CPU时间

99.5 id

空闲CPU的百分比

0.0 wa

用于等待IO完成的CPU时间

0.0 hi

处理硬件中断的CPU时间

0.0 si

处理软件中断的CPU时间

0.0 st

这个虚拟机被hypervisor偷去的CPU时间

第四行KiB Mem : 1863252 total, 1188492 free, 178332 used, 496428 buff/cache是物理内存使用情况。

标题

说明

Mem :  1863252 total

物理内存总量

1188492 free

空闲的内存总量

178332 used

使用中的内存总量

496428 buff/cache

缓存的内存量

第五行KiB Swap: 2097148 total, 2097148 free, 0 used. 1481680 avail Mem是虚拟内存使用情况。

标题

说明

Swap:  2097148 total

交换区总量

2097148 free

使用的交换区总量

0 used

空闲的交换区总量

1481680 avail Mem

缓冲的交换区总量

第六行PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND是进程的状态。

标题

说明

PID

进程ID

USER

进程所属的用户

PR

进程的调度优先级

NI

进程的优先级,值越小优先级越高,负值表示高优先级,正值表示低优先级

VIRT

进程使用的虚拟内存。进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES

RES

驻留内存大小

SHR

共享内存大小

S

进程的状态,D:不可中断的睡眠态,R:运行态,S:睡眠态,T:被跟踪或已停止,Z:僵尸态

%CPU

进程使用CPU时间百分比

%MEM

进程使用物理内存百分比

TIME+

进程从启动到当前使用的CPU总时间

COMMAND

运行进程所使用的命令或进程名称

查看网络进程

netstat

命令说明:

作用: 显示网络连接,路由表,接口状态
语法: netstat [选项]
选项: 
  -n, -number   显示数字形式地址主机、端口
  -t, tcp       显示TCP协议进程
  -l, --listening   只显示正在侦听的套接字
  -p, --program   显示所属进程的PID和名称
              
常见用法: 
  netstat -tnpl

操作示例:

相关文章
|
存储 Linux API
【Linux进程概念】—— 操作系统中的“生命体”,计算机里的“多线程”
在计算机系统的底层架构中,操作系统肩负着资源管理与任务调度的重任。当我们启动各类应用程序时,其背后复杂的运作机制便悄然展开。程序,作为静态的指令集合,如何在系统中实现动态执行?本文带你一探究竟!
【Linux进程概念】—— 操作系统中的“生命体”,计算机里的“多线程”
|
算法 Linux 调度
深入理解Linux操作系统的进程管理
本文旨在探讨Linux操作系统中的进程管理机制,包括进程的创建、执行、调度和终止等环节。通过对Linux内核中相关模块的分析,揭示其高效的进程管理策略,为开发者提供优化程序性能和资源利用率的参考。
471 32
|
并行计算 Linux
Linux内核中的线程和进程实现详解
了解进程和线程如何工作,可以帮助我们更好地编写程序,充分利用多核CPU,实现并行计算,提高系统的响应速度和计算效能。记住,适当平衡进程和线程的使用,既要拥有独立空间的'兄弟',也需要在'家庭'中分享和并行的成员。对于这个世界,现在,你应该有一个全新的认识。
395 67
|
11月前
|
Web App开发 Linux 程序员
获取和理解Linux进程以及其PID的基础知识。
总的来说,理解Linux进程及其PID需要我们明白,进程就如同汽车,负责执行任务,而PID则是独特的车牌号,为我们提供了管理的便利。知道这个,我们就可以更好地理解和操作Linux系统,甚至通过对进程的有效管理,让系统运行得更加顺畅。
305 16
|
11月前
|
Unix Linux
对于Linux的进程概念以及进程状态的理解和解析
现在,我们已经了解了Linux进程的基础知识和进程状态的理解了。这就像我们理解了城市中行人的行走和行为模式!希望这个形象的例子能帮助我们更好地理解这个重要的概念,并在实际应用中发挥作用。
213 20
|
10月前
|
监控 Shell Linux
Linux进程控制(详细讲解)
进程等待是系统通过调用特定的接口(如waitwaitpid)来实现的。来进行对子进程状态检测与回收的功能。
229 0
|
10月前
|
存储 负载均衡 算法
Linux2.6内核进程调度队列
本篇文章是Linux进程系列中的最后一篇文章,本来是想放在上一篇文章的结尾的,但是想了想还是单独写一篇文章吧,虽然说这部分内容是比较难的,所有一般来说是简单的提及带过的,但是为了让大家对进程有更深的理解与认识,还是看了一些别人的文章,然后学习了学习,然后对此做了总结,尽可能详细的介绍明白。最后推荐一篇文章Linux的进程优先级 NI 和 PR - 简书。
298 0
|
10月前
|
存储 Linux Shell
Linux进程概念-详细版(二)
在Linux进程概念-详细版(一)中我们解释了什么是进程,以及进程的各种状态,已经对进程有了一定的认识,那么这篇文章将会继续补全上篇文章剩余没有说到的,进程优先级,环境变量,程序地址空间,进程地址空间,以及调度队列。
179 0
|
10月前
|
Linux 调度 C语言
Linux进程概念-详细版(一)
子进程与父进程代码共享,其子进程直接用父进程的代码,其自己本身无代码,所以子进程无法改动代码,平时所说的修改是修改的数据。为什么要创建子进程:为了让其父子进程执行不同的代码块。子进程的数据相对于父进程是会进行写时拷贝(COW)。
240 0
|
存储 网络协议 Linux
【Linux】进程IO|系统调用|open|write|文件描述符fd|封装|理解一切皆文件
本文详细介绍了Linux中的进程IO与系统调用,包括 `open`、`write`、`read`和 `close`函数及其用法,解释了文件描述符(fd)的概念,并深入探讨了Linux中的“一切皆文件”思想。这种设计极大地简化了系统编程,使得处理不同类型的IO设备变得更加一致和简单。通过本文的学习,您应该能够更好地理解和应用Linux中的进程IO操作,提高系统编程的效率和能力。
608 34