入职必会-开发环境搭建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

操作示例:

相关文章
|
3天前
|
资源调度 Linux 调度
Linux c/c++之进程基础
这篇文章主要介绍了Linux下C/C++进程的基本概念、组成、模式、运行和状态,以及如何使用系统调用创建和管理进程。
13 0
|
2月前
|
网络协议 Linux
Linux查看端口监听情况,以及Linux查看某个端口对应的进程号和程序
Linux查看端口监听情况,以及Linux查看某个端口对应的进程号和程序
327 2
|
2月前
|
Linux Python
linux上根据运行程序的进程号,查看程序所在的绝对路径。linux查看进程启动的时间
linux上根据运行程序的进程号,查看程序所在的绝对路径。linux查看进程启动的时间
54 2
|
3天前
|
消息中间件 Linux API
Linux c/c++之IPC进程间通信
这篇文章详细介绍了Linux下C/C++进程间通信(IPC)的三种主要技术:共享内存、消息队列和信号量,包括它们的编程模型、API函数原型、优势与缺点,并通过示例代码展示了它们的创建、使用和管理方法。
11 0
Linux c/c++之IPC进程间通信
|
3天前
|
Linux C++
Linux c/c++进程间通信(1)
这篇文章介绍了Linux下C/C++进程间通信的几种方式,包括普通文件、文件映射虚拟内存、管道通信(FIFO),并提供了示例代码和标准输入输出设备的应用。
10 0
Linux c/c++进程间通信(1)
|
3天前
|
Linux C++
Linux c/c++之进程的创建
这篇文章介绍了在Linux环境下使用C/C++创建进程的三种方式:system函数、fork函数以及exec族函数,并展示了它们的代码示例和运行结果。
10 0
Linux c/c++之进程的创建
|
20天前
|
Linux Shell
6-9|linux查询现在运行的进程
6-9|linux查询现在运行的进程
|
3天前
|
Linux C++
Linux c/c++进程之僵尸进程和守护进程
这篇文章介绍了Linux系统中僵尸进程和守护进程的概念、产生原因、解决方法以及如何创建守护进程。
11 0
|
2月前
|
消息中间件 Linux 开发者
Linux进程间通信秘籍:管道、消息队列、信号量,一文让你彻底解锁!
【8月更文挑战第25天】本文概述了Linux系统中常用的五种进程间通信(IPC)模式:管道、消息队列、信号量、共享内存与套接字。通过示例代码展示了每种模式的应用场景。了解这些IPC机制及其特点有助于开发者根据具体需求选择合适的通信方式,促进多进程间的高效协作。
104 3
|
2月前
|
消息中间件 Linux
Linux进程间通信
Linux进程间通信
41 1