[ Content contribution] Linux 入门教程(十一):进程管理全面解析
Tofloor
poster avatar
玄圭SwenGway
deepin
2025-01-10 18:34
Author

Linux 入门教程(十一):进程管理全面解析

欢迎来到 Linux 进程管理的大课堂!在本节教程中,我们将从什么是进程开始,逐步了解 Linux 系统中如何管理和监控进程,深入探讨 PID、父子进程、权限、优先级等核心概念,并学会使用工具如 psbtoplsofkill 来高效操作进程。最后,我们还将揭开 /proc 文件系统的神秘面纱。


一、什么是进程?

进程:在 Linux 中,进程是一个程序正在运行的实例。它是程序的具体执行,包括分配的资源和运行状态。

比喻:如果程序是一本菜谱,那么进程就是按照菜谱做饭的厨师!

进程的类型:

  • 前台进程:由用户直接启动(如在终端运行 ls)。
  • 后台进程:在后台运行,不需要用户干预(如守护进程 sshd)。

二、进程的 PID 和 PPID

1. PID(进程 ID)

每个进程都有唯一的一个标识号,称为 PID。系统通过 PID 来管理和操作进程。

2. PPID(父进程 PID)

PPID 是创建该进程的父进程的 PID。所有进程最终的父进程都是 init(PID 为 1)。

比喻:一个进程的 PPID 就是它的“父亲”,所有进程的祖先是 init

查看一个进程的 PID 和 PPID:

ps -o pid,ppid,comm -C bash

示例输出:

  PID  PPID COMMAND
  1234  5678 bash

三、UID 和 EUID,GID 和 EGID

1. UID(用户 ID)和 GID(组 ID)

  • UID:进程所属用户的 ID,用于权限控制。
  • GID:进程所属组的 ID,决定进程对文件和资源的组权限。

2. EUID 和 EGID

  • EUID:有效用户 ID,代表进程运行时的实际权限。
  • EGID:有效组 ID,决定组权限的实际生效。

例如,sudo 提升权限后,EUID 会变成 0(root)。

查看进程的 UID 和 GID:

ps -o uid,euid,gid,egid,comm -C bash

四、谦让度和优先级

1. 什么是谦让度(Nice 值)?

Nice 值是进程的谦让度,范围从 -20(最高优先级)到 19(最低优先级)。
Nice 值越低,进程越不“谦让”,获得 CPU 时间片的概率越高。

查看进程的 Nice 值:

ps -o pid,ni,comm -C bash

2. 修改 Nice 值

  • 启动进程时指定 Nice 值
    nice -n 10 command
    
  • 调整运行中进程的 Nice 值
    renice -n 5 -p 
    

五、监视进程

1. ps:静态查看进程

ps 是最基础的查看进程信息的命令。

ps aux
  • a:显示所有用户的进程。
  • u:以用户友好的格式输出。
  • x:显示没有终端关联的进程。

2. btop:动态监控进程

btop 是一款图形化工具,用于实时监控进程、内存、CPU 使用情况:

btop

六、lsof 查看占用文件的进程

lsof(List Open Files)显示当前系统中被打开的文件。
用途

  • 查找某个文件被哪个进程占用:
    lsof /path/to/file
    
  • 查找某个端口被哪个进程占用:
    lsof -i :8080
    

七、kill 命令:控制进程

kill 用于向进程发送信号,可以终止、暂停或唤醒进程。

1. 常见信号

  • SIGTERM(15):优雅地终止进程。
  • SIGKILL(9):强制终止进程。
  • SIGHUP(1):重新加载配置。

2. 使用示例

  • 终止进程:-9选项用于强力结束(杀死)失控的进程,平时也可以用,只要你喜欢,有一些进程生命力如此顽强,-9都无法影响到它,这时候重启是唯一办法。
    kill -9 
    
  • 给所有进程发送信号:
    killall -15 
    

八、/proc 文件系统

/proc 是一个虚拟文件系统,提供关于进程和系统的实时信息。

1. 常见路径

  • /proc/:每个进程的信息。
  • /proc/cpuinfo:CPU 信息。
  • /proc/meminfo:内存信息。
  • /proc/loadavg:系统负载。

2. 查看特定进程的信息

cat /proc//status

输出示例:

Name:   bash
State:  S (sleeping)
Pid:    1234
PPid:   5678
Uid:    1000
Gid:    1000

九、实战演练

任务 1:查看当前所有运行的进程

ps aux

任务 2:找到占用某个端口的进程

lsof -i :80

任务 3:优雅终止进程

kill -15 

任务 4:实时监控系统资源

btop

任务 5:通过 /proc 文件系统查看某进程状态

cat /proc/$(pgrep bash)/status

十、总结

通过本节内容,你应该已经掌握了以下技能:

  1. 理解进程的概念及其在 Linux 系统中的作用。
  2. 熟练使用 psbtoplsofkill 等工具监控和管理进程。
  3. 理解 Nice 值和优先级的关系,并学会调整进程谦让度。
  4. 掌握 /proc 文件系统的基本用途。

多练习,多尝试,你一定会对 Linux 进程管理得心应手! 🎉

Reply Favorite View the author
All Replies

No replies yet

New Thread

Popular Ranking

Change

Popular Events

More
国际排名
WHLUG