«

Linux 进程管理

时间:2023-3-14 20:19     作者:wen     分类: Linux


[TOC]

进程的概念

Linux 进程是正在运行的程序的实例。它是一个在内存中运行的程序实例,由操作系统管理和调度。进程拥有自己的虚拟地址空间、寄存器集、堆栈和文件描述符等资源。每个进程都有一个唯一的进程标识符(PID)。

进程是操作系统进行任务管理和资源分配的基本单位。Linux 操作系统采用了多任务和时间分片的技术,即在同一时间内可以有多个进程运行,但是 CPU 会快速切换不同进程之间的运行,使得用户感觉所有进程都在同时运行。

进程可以通过父子进程的方式创建,子进程会继承父进程的大部分属性和资源,并可以独立运行。进程之间可以通过进程间通信机制来进行数据传输和共享,比如管道、共享内存和套接字等。

在 Linux 中,可以使用一些命令来管理进程,如 ps 命令用于列出当前正在运行的进程,kill 命令用于终止一个进程。除了这些基本命令之外,Linux 中还有一些高级工具和方法来监控和管理进程,如 top 和 htop 命令。

CentOS6管理进程的方式 init

CentOS7管理进程的凡是systemd

进程的属性

ps 命令是 Linux 中一个常用的命令,用于查看当前正在运行的进程。

下面是 ps 命令的一些常用选项:

例如,使用 ps -aux 命令可以查看所有正在运行的进程,并显示详细信息,如下所示:

[root@localhost ~]# ps -aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.5  0.3 193956  7036 ?        Ss   19:36   0:02 /usr/lib/systemd/systemd --switched-roo
root          2  0.0  0.0      0     0 ?        S    19:36   0:00 [kthreadd]

其中,每行的信息表示一个进程的详细信息,包括进程所属用户、进程 ID(PID)、CPU 占用率、内存占用率、虚拟内存大小、实际内存大小、终端类型、进程状态、启动时间、执行时间和命令等。

ps 命令中 STAT 列显示了进程的状态信息,具体取值及其含义如下:

其中,R 表示正在运行的进程,S 表示休眠状态的进程,Z 表示僵尸进程,这些状态是比较常见的。

需要注意的是,状态信息不是进程状态的全部信息,还需要结合其他信息来确定进程的状态。例如,进程的 CPU 占用率等信息可以帮助确定进程是否正在运行或休眠。

系统负载

updae

uptime 命令用于显示系统当前的运行时间和系统负载情况。运行该命令会输出如下信息:

[root@localhost ~]# uptime
 19:59:27 up 22 min,  1 user,  load average: 0.03, 0.03, 0.05

输出信息包含以下内容:

系统负载指的是 CPU 处理任务的数量。当系统运行的进程和线程数量超过了 CPU 处理能力时,系统负载会升高,表明系统正在处理更多的任务。负载值的大小可以根据系统的 CPU 核心数量来判断,例如,在一个 4 核 CPU 的系统中,如果负载值超过 4,就说明系统已经超负荷了。因此,了解系统的负载情况可以帮助我们评估系统的性能瓶颈和资源利用情况,及时进行优化和调整。

top

top 命令用于实时监控系统的进程和系统资源占用情况,是一款非常常用的系统性能监控工具。当运行 top 命令后,会显示一个实时更新的进程列表,以及系统资源的使用情况。

下面是一个 top 命令输出的示例:

top - 20:06:42 up 30 min,  1 user,  load average: 0.01, 0.04, 0.05
Tasks: 110 total,   1 running, 109 sleeping,   0 stopped,   0 zombie
%Cpu(s):  2.9 us,  5.7 sy,  0.0 ni, 91.4 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  2027860 total,  1715912 free,   193316 used,   118632 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.  1694920 avail Mem

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
   952 root      20   0  273004   4784   3648 S   5.9  0.2   0:03.75 vmtoolsd
     1 root      20   0  193956   7036   4164 S   0.0  0.3   0:02.93 systemd
     2 root      20   0       0      0      0 S   0.0  0.0   0:00.01 kthreadd
     4 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H
     6 root      20   0       0      0      0 S   0.0  0.0   0:00.03 ksoftirqd/0
     7 root      rt   0       0      0      0 S   0.0  0.0   0:00.14 migration/0
     8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh
     9 root      20   0       0      0      0 S   0.0  0.0   0:00.75 rcu_sched
    10 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 lru-add-drain
    11 root      rt   0       0      0      0 S   0.0  0.0   0:00.02 watchdog/0
    12 root      rt   0       0      0      0 S   0.0  0.0   0:00.03 watchdog/1
    13 root      rt   0       0      0      0 S   0.0  0.0   0:00.10 migration/1
    14 root      20   0       0      0      0 S   0.0  0.0   0:00.10 ksoftirqd/1
    16 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/1:0H
    18 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kdevtmpfs
    19 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 netns
    20 root      20   0       0      0      0 S   0.0  0.0   0:00.00 khungtaskd

终止进程

kill

kill 命令用于向指定的进程发送信号(signal),以控制进程的运行状态。默认情况下,kill 命令发送的是 TERM 信号,使进程正常终止。

以下是 kill 命令的基本语法:

kill [选项] <进程号> [...进程号]

常用的选项包括:

pkill

pkill 命令与 kill 命令类似,都是用于终止进程,不同之处在于 pkill 命令通过进程名或者其他属性(如用户、CPU 使用率等)来匹配进程并杀死它们。与 kill 命令需要指定进程号不同,pkill 命令可以根据进程名或其他属性匹配到多个进程,并将它们全部终止。

以下是 pkill 命令的基本语法:

pkill [选项] <进程名>

常用的选项包括:

killall

killall 命令与 pkill 命令类似,也是用于终止进程,不同之处在于 killall 命令只匹配进程名来终止进程,而不支持其他属性匹配。

以下是 killall 命令的基本语法:

killall [选项] <进程名>

常用的选项包括:

服务管理

以下是一些 Linux 服务管理命令:

  1. systemctl - systemd 系统管理工具,用于管理系统服务。可以启动、停止、重启、状态查询等等。示例命令:
    • 启动服务:systemctl start service-name
    • 停止服务:systemctl stop service-name
    • 重启服务:systemctl restart service-name
    • 查看服务状态:systemctl status service-name
    • 设置服务开机自启动:systemctl enable service-name
    • 取消服务开机自启动:systemctl disable service-name
  2. service - 传统的系统服务管理工具,现在已经被 systemctl 取代。但一些老版本的 Linux 还在使用 service。示例命令:
    • 启动服务:service service-name start
    • 停止服务:service service-name stop
    • 重启服务:service service-name restart
    • 查看服务状态:service service-name status
    • 设置服务开机自启动:chkconfig service-name on
    • 取消服务开机自启动:chkconfig service-name off

标签: linux