Linux进程管理实战指南:实用工具命令详解

前言

这是一篇深度剖析Linux系统进程管理的技术文章,详细介绍了各种进程管理相关命令的用法和示例。通过本文,你将掌握从基础到高级的进程管理技巧,了解如何利用命令行工具高效处理进程、提升系统性能。无论你是初学者还是经验丰富的管理员,本文都将为你带来实用而宝贵的知识,助力你在Linux系统中轻松应对各类进程管理挑战。立即阅读,发现Linux进程管理的奥秘!

进程管理命令

ps

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

css 复制代码
ps [options]

常用的ps命令选项包括:

  • -a:显示所有用户的所有进程,包括其他用户的进程。
  • -u:以用户为基础显示进程信息,包括进程的用户名、进程ID(PID)、CPU使用率、内存使用率等。
  • -x:显示没有控制终端的进程。
  • -e:显示所有正在运行的进程。
  • -f:以全格式显示进程信息,包括进程ID(PID)、父进程ID(PPID)、进程状态等。
  • -l:以长格式显示进程信息,包括进程ID(PID)、进程所属用户、CPU使用率等。

ps指令可以搭配不同的选项来获取不同的进程信息。下面是一些常用的选项:

显示所有用户的所有进程信息,包括进程ID(PID)、CPU使用率、内存使用率等

复制代码
ps -aux

显示所有进程的详细信息,包括进程ID(PID)、父进程ID(PPID)、进程状态等。

复制代码
ps -ef

显示所有正在运行的进程。

复制代码
ps -e

查询redis的进程信息,包括进程ID(PID)、CPU使用率、内存使用率等

perl 复制代码
ps -aux | grep redis

输出了两行信息,这两行信息分别是什么意思呢?

  • 第一行:进程名称:redis;进程ID:1054;CPU使用率:0.9;内存使用率:0.3;内存占用量:143056 KB;虚拟内存占用量:5812 KB;进程状态:?;运行优先级和调度策略:Ssl;启动时间:15:45;运行时间:1小时6分钟;可执行文件路径和参数:/usr/bin/redis-server 0.0.0.0:6379;
  • 第二行:进程所有者:root;进程ID:1939;CPU使用率:0.0;内存使用率:0.0;内存占用量:112824 KB;虚拟内存占用量:988 KB;终端:pts/0;进程状态:S+;启动时间:17:44;运行时间:0小时0分钟;可执行文件路径和参数:grep --color=auto redis;

以长格式显示进程信息,包括进程ID(PID)、进程所属用户、CPU使用率等。

复制代码
ps -l

这里需要注意的是ps -l 并不显示所有进程,而是显示与当前终端(TTY)相关的进程。如果你希望看到所有进程,可以使用 ps aux 或 ps -le

top

top命令是Linux中常用的性能监控工具,它可以实时显示系统中各个进程的资源占用状况,包括CPU、内存等。top命令提供了一个实时的视图,显示系统当前的活跃进程,并允许用户进行交互,对进程执行各种操作。

基本语法:

css 复制代码
top [options]

常用可选参数:

  • -d:指定刷新间隔,单位为秒。
  • -p:监控特定的PID。
  • -n:运行top命令时显示几次更新后退出。
  • -u:仅显示特定用户的进程。
  • -h:显示帮助信息。
  • -o:按某一字段排序,例如-o %MEM按内存使用率排序。

执行top命令后,实际上也可以执行一些交互命令:

  • Shift + P:按CPU使用率排序。
  • Shift + M:按内存使用率排序。
  • k:终止一个进程。
  • f:添加或删除显示的列。
  • t:打开或关闭显示图形。
  • 1:显示所有CPU的状况,而不是总体平均值。

比如:我要杀死进程ip是10789的vsftpd服务进程,可以直接输入k,会进入下面的交互界面,再输入vsftpd进程的进程id10789,按enter键,即可杀死vsftpd服务进程;

下面是其他的一些简单使用示例:

简单启动:直接在终端中输入 top,就可以显示当前系统的动态进程以及资源使用情况。

css 复制代码
top

改变更新速率:使用 top -d 5 来设定每5秒刷新一次。

css 复制代码
top -d 5

监控特定进程:假设要监控PID为10789的进程,可以使用 top -p 10789。

top -p 10789

查看特定用户的进程:如果需要查看用户root的进程,可以使用 top -u root。

top -u root

htop

htop 是一个类似于 Linux 系统中的 top 命令的工具,用于显示系统中运行的进程的实时信息。与 top 不同的是,htop 提供了更加直观和友好的界面,可以通过鼠标或键盘快捷键进行交互操作,显示的信息也更加详细和易读。htop 可以显示 CPU、内存、swap 等资源的使用情况,同时还可以方便地对进程进行排序、搜索和管理。

htop 并不是所有 Linux 发行版的默认安装包,因此可能需要单独安装它。可以按照以下步骤在常见的 Linux 发行版上安装 htop:

对于 Ubuntu 或 Debian 等基于 apt 的系统:

sql 复制代码
sudo apt update sudo 
apt install htop

对于 CentOS 或 RHEL 等基于 yum 的系统:

复制代码
sudo yum install htop

一旦安装完成,就可以直接使用了。

使用 htop的方法很简单:

打开终端窗口输入 htop 命令,并按下 Enter 键

复制代码
htop

然后就可以看到如上图的输出内容:实时进程信息,包括 CPU 和内存的占用情况等。

还可以使用键盘快捷键进行操作:你可以使用键盘上的不同按键来进行排序、筛选和管理进程。例如:

  • 使用 ↑ 和 ↓ 键来上下移动光标选择进程。
  • 使用 F6 键可以根据不同的标准对进程进行排序。
  • 使用 F9 键可以选择发送信号给选定的进程。
  • 使用 Space 键可以选中或取消选中进程。
  • 使用 q 键可以退出 htop。

pgrep

pgrep 命令用于根据进程的名称或其他属性查找正在运行的进程,并返回与之匹配的进程ID(PID)。

pgrep 的基本语法如下:

css 复制代码
pgrep [options] <pattern>

其中, 是用于匹配进程的模式。可以是进程名称、进程命令行参数或其他进程属性。

以下是一些常用的选项:

  • -u :指定进程所属的用户名。
  • -x:精确匹配整个进程命令行。
  • -d :使用自定义分隔符来分隔多个 PID。
  • -n:仅显示最新创建的进程。
  • -o :指定输出格式。常见的格式包括进程ID(%p)、父进程ID(%P)、进程名称(%n)等。

例如,要查找所有以 "nginx" 开头的进程,可以使用以下命令:

复制代码
pgrep nginx

如果要限制搜索特定用户的进程,可以使用 -u 选项:

复制代码
pgrep -u username nginx

pgrep 命令非常有用,可以快速查找和操作正在运行的进程。它通常与其他命令(如 kill)结合使用,以对匹配的进程进行进一步操作。

kill

kill 命令用于终止正在运行的进程。

kill 命令的基本语法如下:

bash 复制代码
kill [options] <PID>

其中, 是要终止的进程的进程ID。

最常用的用法是:例如,要终止进程ID为 12345 的进程,可以使用以下命令:

bash 复制代码
kill 12345

pkill

pkill 命令用于根据进程的名称或其他属性发送信号给进程,从而终止或操作匹配的进程。

pkill 的基本语法如下:

css 复制代码
pkill [options] <pattern>

其中, 是用于匹配进程的模式。可以是进程名称、进程命令行参数或其他进程属性。

以下是一些常用的选项:

  • -u :指定要匹配的进程所属的用户名。
  • -x:精确匹配整个进程命令行。
  • -n:仅发送信号给最新创建的进程。
  • -signal :指定要发送的信号,默认为 SIGTERM。
  • -l:显示可用的信号列表。

例如,要终止所有名为 "nginx" 的进程,可以使用以下命令:

markdown 复制代码
    pkill nginx

如果要限制操作特定用户的进程,可以使用 -u 选项:

markdown 复制代码
    pkill -u username nginx

pkill 命令与 pgrep 命令结合使用,可以方便地查找并终止匹配的进程。不过个人感觉,还是根据进程id,使用kill命令杀死指定进程,会更稳妥一点。

systemctl

systemctl 命令是一个在大多数现代 Linux 发行版中用于管理系统服务的工具。它可以启动、停止、重启、启用或禁用系统服务,还可以显示服务的状态和控制服务的启动顺序等。

以下是一些常用的 systemctl 命令以及其作用:

启动一个系统服务

markdown 复制代码
    systemctl start <service-name>

停止一个系统服务

arduino 复制代码
    systemctl stop <service-name>

重启一个系统服务。

markdown 复制代码
    systemctl restart <service-name>

显示一个系统服务的状态信息。

lua 复制代码
    systemctl status <service-name>

设置一个系统服务在系统启动时自动启用。

bash 复制代码
    systemctl enable <service-name>

设置一个系统服务在系统启动时不自动启用。

bash 复制代码
    systemctl disable <service-name>

列出当前正在运行的所有系统服务

ini 复制代码
    systemctl list-units --type=service

重新加载 systemd 管理的服务单元配置。

markdown 复制代码
    systemctl daemon-reload

这些命令使得对系统服务进行管理变得非常方便。通过 systemctl,你可以轻松地管理系统中的各种服务,确保它们按照你的期望进行启动、停止和管理。

通常情况下,通过标准的软件包管理工具(例如 apt、yum、dnf 等)安装的软件,都会在系统中注册为服务,并且可以通过 systemctl 来进行管理。这些软件通常会在安装时创建相应的服务单元文件,以便 systemd(系统初始化系统和服务管理器)能够管理它们。

然而,某些情况下可能存在无法通过 systemctl 管理的软件,例如:

  • 手动安装的软件:如果你手动编译并安装了某个软件,但没有为其创建 systemd 服务单元文件,那么这个软件就不会被 systemd 所管理,因此无法使用 systemctl 来对其进行管理。
  • 自定义安装路径:有些软件可能会被安装到非标准的路径,或者安装路径不在 systemd 默认的服务搜索路径中,这样 systemd 就无法正确识别这些软件并管理其服务。

在这些情况下,你可能需要手动创建一个 systemd 服务单元文件,以便让 systemd 能够管理这些软件。创建systemd服务单元的方法只需要简单的三步:

1、编写服务单元文件:使用文本编辑器(如vim或nano)创建一个新的服务单元文件,通常存储在/etc/systemd/system/目录下,以.service为后缀名。

2、编辑服务单元文件,定义服务的名称、描述、执行路径等信息。例如:

ini 复制代码
    [Unit]
    Description=My Custom Service 
    After=network.target 
    [Service] 
    Type=simple 
    ExecStart=/path/to/your/executable 
    [Install] 
    WantedBy=multi-user.target

3、重新加载systemd管理器配置:

使用以下命令重新加载systemd管理器的配置,以使新的服务单元生效:

markdown 复制代码
    sudo systemctl daemon-reload

写在最后

这篇技术文章详细介绍了各种进程管理相关命令的精髓,让你轻松掌握高效处理进程的技巧和窍门。无论你是想加深对系统运维的理解,还是希望优化系统性能,本文都将为你提供最实用的指南和实例。点赞收藏,随时翻阅,让你的Linux之旅更上一层楼!立即阅读,开启进程管理新篇章!

相关推荐
默默提升实验室13 分钟前
Linux 系统如何挂载U盘
linux·运维·服务器
意倾城22 分钟前
Spring Boot 配置文件敏感信息加密:Jasypt 实战
java·spring boot·后端
火皇40522 分钟前
Spring Boot 使用 OSHI 实现系统运行状态监控接口
java·spring boot·后端
mahuifa34 分钟前
python实现usb热插拔检测(linux)
linux·服务器·python
Lw老王要学习44 分钟前
Linux架构篇、第五章git2.49.0部署与使用
linux·运维·git·云计算·it
薯条不要番茄酱1 小时前
【SpringBoot】从零开始全面解析Spring MVC (一)
java·spring boot·后端
啊吧怪不啊吧1 小时前
Linux之初见进程
linux·centos
上天_去_做颗惺星 EVE_BLUE2 小时前
Docker入门教程:常用命令与基础概念
linux·运维·macos·docker·容器·bash
孙克旭_8 小时前
PXE_Kickstart_无人值守自动化安装系统
linux·运维·自动化
懵逼的小黑子9 小时前
Django 项目的 models 目录中,__init__.py 文件的作用
后端·python·django