Linux进程属性及含义

来源:
导读 大家好,我是本期栏目编辑小友,现在为大家讲解Linux进程属性及含义问题。 一个流程包含多个属性参数。通过使

大家好,我是本期栏目编辑小友,现在为大家讲解Linux进程属性及含义问题。

一个流程包含多个属性参数。通过使用ps命令,我们可以查看当前系统中进程的详细信息,例如:

.省略一些输出.

可以看到每个流程都包含f、s、UID、PID等属性。这些属性参数决定了处理流程的顺序和可以访问的资源,这对系统管理员和程序员非常重要。

本节将向您介绍几种常用的属性参数。

工艺号

如前一章所述,系统会分配一个标识号(UID)来标识每个用户。同样,流程也有这样一个ID号,叫做PID。

要知道,通过ID识别进程的方法是非常有益的,因为对于计算机来说,知道数字总是比知道一串字符要方便得多,而且Linux不需要理解对人类来说非常“有意义”的进程名称。

Linux不仅使用PID来确定进程本身,还要求用户在管理进程时提供相应的PID号。事实上,几乎所有的流程管理工具都接受PID编号,而不是流程名称。

PPID(父进程的PID)

在Linux中,所有进程都必须由另一个进程创建(系统启动时由内核创建和安装的进程除外)。当一个进程被创建时,创建它的进程被称为父进程,而这个进程相应地被称为子进程。

很容易理解,子过程使用PPID来指示谁是它的“父亲”。PPID指的是其父进程的PID。

注意,在上面的描述中,为了便于表达和理解,“创建”一词被多次使用。事实上,在Linux中,进程不能凭空创建。换句话说,Linux没有为应用程序“创建”一个进程提供系统调用,应用程序只能克隆自己来生成新的进程。

“子进程应该是其父进程的克隆”的说法听起来有点令人困惑。如果读者对此感兴趣,可以阅读一些与Linux编程相关的文章。

UID(真实用户标识)和EUID(有效用户标识)。

只有流程的创建者和根用户才有权操作流程,所以记录流程的创建者(即所有者)是非常必要的。流程的UID是其创建者的用户ID号,用于标识流程的所有者。

此外,Linux还为进程保存了一个“有效的用户ID号”,称为EUID。这个特殊的UID号用于确定进程对某些资源和文件的访问权限。在大多数情况下,进程的UID和e UID是相同的,除了著名的setuid程序。

那么,什么是setuid程序呢?我谈到了passwd命令,它允许用户更改他们的登录密码。但是读者有没有考虑过这个问题?密码存储在/etc/shadow文件中,普通用户无法读取。那么为什么用户可以通过修改影子文件来修改自己的密码呢?

这就是setuid的美妙之处。通过在执行阶段赋予passwd文件所有者(即root)的权限,用户可以临时修改影子文件(当然,这种能力是有限的)。因此,passwd是一个典型的setUID程序,它的UID是当前执行此命令的用户的ID,而EUID是根用户的ID(即0)。

此外,Linux还为进程分配了其他几个UID,比如保存的UID和FSUID。这个多UID系统的设置非常耐人寻味,它的解释超出了本教程的范围。感兴趣的读者可以自行查阅相关资料。

GID(真实组标识)和EGID(有效组标识)。

同样,进程的GID是其创建者所属的组的标识号。与EUID相对应,进程还有一个EGID号,可以通过setgid程序设置。坦白说,一个进程的GID号真的没用。一个进程可以同时属于多个组。如果要考虑权限,UID就足够了。相比之下,EGID在确定准入权方面也发挥了一定的作用。

当然,一个流程的GID号也不是一无是处。当进程需要创建新文件时,该文件将采用进程的GID。

过程的适度性和优先性。

顾名思义,进程的优先级决定了它被CPU“青睐”的程度。优先级较高的进程可以更早处理,获得更多的处理器时间。

Linux内核会综合考虑一个进程的各种因素来决定它的优先级,包括进程消耗的CPU时间,进程的等待时间等等。在大多数情况下,在没有用户干预的情况下,由内核决定何时处理流程。

用户可以通过设置过程的“谦逊”来影响内核的思维。“谦虚”和“优先”只是一对对立的概念。高“谦逊”意味着低“优先”,反之亦然。需要注意的是,流程管理工具总是让用户设置“谦逊”而不是“优先”。如果你想让一个过程被更早地处理,你应该把它的谦卑度设置得更低,让它不那么“卑微”。

标签:

版权声明:转载此文是出于传递更多信息之目的。若有来源标注错误或侵犯了您的合法权益,请作者持权属证明与本网联系,我们将及时更正、删除,谢谢您的支持与理解。