前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Linux入门】进程管理

【Linux入门】进程管理

原创
作者头像
参谋带个长
发布2023-12-25 20:25:39
2610
发布2023-12-25 20:25:39
举报
文章被收录于专栏:服务器运维日常

一个程序在系统中被加载到内存中运行,就产生了一个进程,在 Linux 系统当中,每一个进行给会有一个 ID,称为 PID 。

PID(进程标识符)是一个用于标识运行在Linux系统上的进程的唯一整数值。每个运行的程序都会分配一个唯一的 PID ,通过 PID 可以唯一标识和引用一个进程,进行创建、终止、等待和通信等操作。

本文主要介绍 CentOS 7.x 中的进程管理相关基础知识与命令。

查看进程命令 ps

程序一般是指存储在硬盘中的可执行文件,进程则是指运行该程序后在内存中的个体,为了能管理这个在内存中的个体,系统就赋予了一个 PID

ps 命令可以显示当前系统上所有进程的详细信息,包括进程ID(PID)、进程状态、进程用户、终端、CPU使用情况、内存使用情况等。

命令格式:

代码语言:bash
复制
ps [选项] [参数]

常用的选项和参数包括

参数

说明

-e

显示所有进程,包括其他用户(非root)的进程。

-f

显示完整的进程信息。

-l

以长格式显示进程信息。

-u

按照用户ID和用户名显示进程信息。

-p PID

显示指定PID的进程信息。

命令示例:

代码语言:bash
复制
# 输入命令
ps -l

# 可能返回以下内容
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0 27217 27214  0  80   0 - 29118 do_wai pts/0    00:00:00 bash
0 R     0 28037 27217  0  80   0 - 38332 -      pts/0    00:00:00 ps

分别显示了bash进程、ps进程的信息,具体参数功能如下:

参数

说明

F

进程标识,表示进程的权限。

S

进程状态。R进程正在运行,S睡眠状态(可被唤醒),D睡眠状态(不可被唤醒),T停止状态,Z僵尸状态

UID

进程的用户ID。

PID

进程ID。

PPID

父进程ID,指向了创建该进程的原始进程。

C

进程使用的CPU时间(单位为秒)。

PRI

进程的优先级,它决定了进程的抢占顺序。

NI

nice值,用于控制进程的优先级。

ADDR

内存地址。

SZ

进程使用的内存大小(单位为KB)。

TTY

进程运行终端的类型。

TIME

进程使用的CPU时间(单位为秒),包括用户时间和系统时间。

CMD

运行该进程的命令。

其它命令组合示例:

代码语言:bash
复制
# 显示所有用户的所有进程的详细信息
ps aux

# 以长格式显示所有用户的所有进程的详细信息
ps -aux

# 显示指定进程名的进程的详细信息
ps -C process_name

动态查看进程变化命令 top

top 命令用于显示当前系统中运行中的进程的实时信息,包括进程的 CPU 使用率、内存使用情况、运行时间、PID(进程 ID)等。

常用选项和功能:

参数

说明

-a

显示所有进程,包括其他用户的进程。

-u

显示进程的用户信息。

-n

更新频率,例如 -n 5 表示每5秒更新一次。

-p

显示特定进程 ID 的详细信息。

-i

以图形模式显示进程信息。

显示进程树状结构命令 pstree

pstree 命令用于显示当前系统中所有进程的树状结构。它以树状的形式展示了一个系统中的所有进程,每个进程用箭号连接起来,形成一个树状结构。这个树状结构可以帮助你更好地理解系统中的进程关系,以及哪些进程是父子进程关系。

使用 pstree 命令时,可以使用-p选项来显示特定进程的进程树,例如pstree -p <PID>

代码语言:bash
复制
# 输入命令
pstree

# 可能返回以下内容
systemd─┬─YDLive───7*[{YDLive}]
        ├─YDService───22*[{YDService}]
        ├─acpid
        ├─2*[agetty]
        ├─atd
        ├─auditd───{auditd}
        ├─barad_agent─┬─barad_agent
        │             └─barad_agent─┬─sh
        │                           └─4*[{barad_agent}]
        ├─crond
        ├─dbus-daemon
        ├─dhclient
        ├─iscsid
        ├─lsmd
        ├─lvmetad
        ├─master─┬─pickup
        │        └─qmgr
        ├─ntpd
        ├─polkitd───6*[{polkitd}]
        ├─rshim───{rshim}
        ├─rsyslogd───2*[{rsyslogd}]
        ├─sgagent───{sgagent}
        ├─sshd─┬─sshd───sshd
        │      └─sshd───bash───pstree
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-udevd
        ├─tat_agent───8*[{tat_agent}]
        └─tuned───4*[{tuned}]

终止进程命令 kill

kill 命令用于终止进程的命令。它通过发送信号来请求进程结束,可以使用kill命令来终止单个进程或一组进程。

代码语言:bash
复制
# 命令格式
kill [选项] <进程ID>

# 命令示例
kill -10

常用选项和用法:

参数

说明

-l

列出可用的信号列表。

-p

只发送信号,而不等待进程响应。

-s

指定要发送的信号类型,例如 SIGTERM 表示发送终止信号。

-u <用户>

终止指定用户的进程。

<PID>

终止指定进程 ID 的进程。

使用 kill 命令时需要足够的权限才能终止进程。通常,只有 root 用户或具有特定权限的用户才能使用 kill 命令终止进程。

在终止进程时需谨慎操作,避免意外终止重要进程导致系统不稳定或数据丢失。

指定名称终止进程命令 killall

killall 命令用于终止指定名称的进程的命令,通过发送信号来请求进程结束,并匹配进程名称来终止多个进程。

代码语言:bash
复制
# 命令格式
killall [选项] <进程名称>

# 命令示例
killall firefox

需要注意的是,在使用 killall 命令时,需要谨慎操作,确保了解要终止的进程以及可能的影响。

我正在参与2023腾讯技术创作特训营第四期有奖征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 查看进程命令 ps
  • 动态查看进程变化命令 top
  • 显示进程树状结构命令 pstree
  • 终止进程命令 kill
  • 指定名称终止进程命令 killall
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档