📅  最后修改于: 2023-12-03 15:02:44.966000             🧑  作者: Mango
在 Linux/Unix 操作系统中,进程是系统中最基本的执行单元,它代表了正在运行的程序。进程拥有一些资源,如 CPU、内存、文件描述符等,可以创造、销毁、终止、等待和通信。
每个进程都有自己的进程属性,包括进程 ID、进程状态、进程名、PID(Parent Process ID 父进程 ID)、PPID(Parent Process ID 父进程的父进程 ID)、UID(User ID 用户 ID)、GID(Group ID 组 ID) 、进程优先级等。
每个进程都有一个唯一的 PID(进程 ID),它是一个非负整数,用于标识系统中的各个进程。PID 0 是系统中的 Swapper 进程,PID 1 是 init 进程。
进程有五种状态:
进程名是一个文本字符串,用于标识进程的名称。进程名并不一定要与二进制程序的名称相同。
PPID 是指父进程的 PID,每个进程都有一个父进程,除了 swapper 进程 (PID=0) 以外,所有进程都有父进程。
UID 和 GID 表示进程运行的用户和用户组。在 Linux/Unix 下,每个对象都有一个 UID 和 GID,而每个用户可以属于多个组。
Linux/Unix 中的进程拥有不同的优先级,用于确定进程的调度顺序。默认情况下,进程的优先级相等,但是我们可以使用 nice 命令来增加进程的优先级。
Linux/Unix 中的进程控制包括创建、销毁、等待和通信等操作。
进程可以通过调用 fork() 系统调用来创建子进程。fork() 调用成功后,父进程复制自己的内存空间、打开的文件和系统资源,并在子进程中运行。子进程会从 fork() 返回处开始执行,同时得到一个新的 PID。可以使用 exec() 系统调用来替换进程映像。
进程可以通过调用 exit() 系统调用来自我销毁。父进程可以使用 wait() 系统调用等待子进程结束并回收资源。kill() 系统调用可以向任何进程发送信号来终止进程。
进程可以通过等待(wait() 系统调用)来阻塞并等待子进程结束,同时回收子进程的资源。还可以使用 waitpid() 系统调用来等待特定的子进程结束。
进程可以使用信号(signal)来通信。 kill() 系统调用可以向任何进程发送信号。当进程接收到一个信号时,它可以采取不同的操作,如终止、暂停、忽略等。
Linux/Unix 中的进程管理工具包括 ps、top、htop、pgrep、kill、pkill 等。
ps 命令用于显示系统中当前运行的进程。常用选项如下:
top 命令用于动态地显示系统中当前运行的进程。它能够实时地更新屏幕内容,展示进程的各种属性,如 CPU 占用率、内存使用等。常用选项如下:
htop 是一个交互式的 top 命令替代工具。它可以实时更新进程信息,支持鼠标、键盘操作,更加友好。
pgrep 命令用于查找进程,并返回对应 PID。可以与 kill 命令配合使用,向指定进程发送信号。
pkill 命令可以根据进程名杀死进程,简化了查找对应 PID 的过程。
Linux/Unix 中的进程是系统中最基本的执行单元。通过对进程属性、进程控制、进程管理工具的介绍,相信读者已经对 Linux/Unix 中的进程有了初步的了解。