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

[root@localhost ~]# ps -le

F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIMECMD

4 S 0 1 0 0 80 0 - 718 - ? 00:00:02 init

1 S 0 2 0 0 80 0 - 0 - ? 00:00:00 kthreadd

…省略部分输出…

可以看到,每个进程都包含 F、S、UID、PID 等属性,这些属性参数决定了进程被处理的先后顺序、能够访问的资源等,对于系统管理员和程序员都非常重要。

本节将带领大家认识几个常用的属性参数。

PID(进程的 ID 号)

在前面章节已经讲过,系统为每个用户都分配了用于标识其身份的 ID 号(UID)。同样地,进程也有这样一个 ID 号,被称作 PID。

要知道,用 ID 确定进程的方法是非常有好处的,因为对于计算机而言,认识数字永远比认识一串字符方便得多,Linux 没有必要去理解那些对人类非常“有意义”的进程名。

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

PPID(父进程的 PID)

在 Linux 中,所有的进程都必须由另一个进程创建(除了在系统引导时,由内核自主创建并安装的那几个进程)。当一个进程被创建时,创建它的那个进程被称作父进程,而这个进程则相应地被称作子进程。

子进程使用 PPID 指出谁是其“父亲”,很容易可以理解,PPID 指的就是其父进程的 PID。

注意,在以上的叙述中,多次用到了“创建”这个词,这是出于表述和理解上的方便,事实上,在 Linux 中进程是不能被“凭空”创建的,换句话说,Linux 没有提供一种系统调用让应用程序“创建”一个进程,应用程序只能通过克隆自己来产生新进程。

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

UID(真实用户ID)和EUID(有效用户ID)

只有进程的创建者和 root 用户才有权利对该进程进行操作,因此记录一个进程的创建者(也就是属主)就显得非常必要。进程的 UID 就是其创建者的用户 ID 号,用于标识进程的属主。

除此之外,Linux 还为进程保存了一个“有效用户 ID 号”,被称作 EUID。这个特殊的 UID 号用来确定进程对某些资源和文件的访问权限。在绝大部分情况下,进程的 UID 和 EUID 是一样的,除了著名的 setuid 程序。

那么,什么是 setuid 程序呢?前面讲了 passwd 命令,这个命令允许用户修改自己的登录口令。但读者是否考虑过这个问题,密码保存在 /etc/shadow 文件中,这个文件对普通用户是不可读的,那么用户为什么能够通过修改 shadow 文件来修改自己的口令呢?

这就是 setuid 的妙处了,通过使 passwd 在执行阶段具有文件所有者(也就是 root)的权限,让用户临时有了修改 shadow 文件的能力(当然这种能力是受到限制的)。因此,passwd 就是一个典型的 setuid 程序,其 UID 是当前执行这个命令的用户 ID,而 EUID 则是 root 用户的 ID(也就是 0)。

除此之外,Linux 还给进程分配了其他几个 UID,例如 saved UID 和 FSUID。这种多 UID 体系的设置非常耐人寻味,对它的解释超出了本教程的范围,有兴趣的读者可以自己查阅相关资料。

GID(真实组ID)和 EGID(有效组ID)

类似地,进程的 GID 是其创建者所属组的 ID 号。对应于 EUID,进程同样拥有一个 EGID 号,可以通过 setgid 程序来设置。坦率地讲,进程的 GID 号确实没有什么用处。一个进程可以同时属于多个组,如果要考虑权限的话,那么 UID 就足够了。相比较而言,EGID 在确定访问权限方面还发挥了一定的作用。

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

进程的谦让度和优先级

顾名思义,进程的优先级决定了其受到 cpu“优待”的程度,优先级髙的进程能够更早地被处理,并获得更多的处理器时间。

Linux 内核会综合考虑一个进程的各种因素来决定其优先级,这些因素包括进程已经消耗的 cpu 时间、进程已经等待的时间等。在绝大多数情况下,决定进程何时被处理是内核的事情,不需要用户插手。

用户可以通过设置进程的“谦让度”来影响内核的想法。“谦让度”和“优先级”刚好是一对相反的概念,高“谦让度”意味着低“优先级”,反之亦然。需要注意的是,进程管理工具让用户设置的总是“谦让度”,而不是“优先级”。如果希望让一个进程更早地被处理,那么应该把它的谦让度设置得低一些,使其变得不那么“谦让”。

修改进程的谦让度可以使用 nice 和 renice 命令,这两个命令的具体用法,会在本章后续文章做详细介绍。

总结

以上是编程之家为你收集整理的Linux进程属性及含义全部内容,希望文章能够帮你解决Linux进程属性及含义所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

linux进程属性,Linux进程属性及含义相关推荐

  1. linux QT 结束当前进程_Qt编写控件属性设计器7-串口采集

    一.前言 数据源是组态软件的核心灵魂,少了数据源,组态就是个花架子没卵用,一般数据源有三种方式获取,串口.网络.数据库,至于数据规则是什么,这个用户自己指定,本设计器全部采用第一个字节作为数据来演示. ...

  2. Linux实验三父子进程每隔3秒,实验三进程的创建和简单控制(学生分析.doc

    实验三进程的创建和简单控制(学生分析 实验 进程的创建和简单控制 实验目的: 掌握进程的概念和进程的状态,对进程有感性的认识: 掌握进程创建方法: 认识进程的并发执行,了解进程族之间各种标识及其存在的 ...

  3. Linux 进程资源分配,linux 进程管理和内存分配

    1.进程相关概念 进程:正在运行中的程序 内核功用:进程管理.文件系统.网络功能.内存管理.驱动程序.安全功能等 Process:运行中的程序的一个副本,是被载入内存的一个指令集合 进程 ID(Pro ...

  4. Linux学习-文件操作和属性

    1.grep grep过滤相当于一个筛子,可能筛子里面的东西是要保留的,也可能筛出来的是要保留的 grep [选项] 内容 文件: grep root psj.txt表示从psj.txt中找出包含ro ...

  5. Linux基础篇——Linux进程、服务管理

    文章目录 1. 什么是进程 2. Linux下进程与执行者的关系(多人多任务环境) 3. 工作(Job)管理 3.1 将指令丢到后端执行 & 3.2 将目前的工作暂停 Ctrl+z 3.3 j ...

  6. Linux编程入门四进程

    进程的创建有两种方式:一种是由操纵系统创建,一种是由父进程创建.在系统启动时,操作系统会创建一些进程,它们承担着管理和分配系统资源的任务,这些进程通常被称为系统进程.系统允许一个进程创建新进程(即为子 ...

  7. 管理Linux系统中的进程

    1.什么是进程? (1)进程与程序     在Linux系统当中,触发任何一个事件时,系统都会将它定义成为一个进程,并且给予这个进程一个ID,称为PID,同时依据启发这个进程的用户与相关属性关系,给予 ...

  8. 搞它!!!Linux系统中查看进程和计划任务管理

    文章目录 首先我们了解一下程序和进程的关系: 一.查看进程 1.查看静态的进程统计信息(ps) 2.查看静态的进程统计信息(top) 3.pgrep命令(查询进程信息) 4.pstree命令(查看进程 ...

  9. linux查看和结束进程,Linux查看和结束进程命令详解

    在ubuntu中,终止一个进程或终止一个正在运行的程序,一般是通过 kill .killall.pkill.xkill 等进行. ----------------------------------- ...

最新文章

  1. 计算机视觉系统怎样剖析“看到”的一切?
  2. python小项目案例-python_flask小项目实例-编一个小网站
  3. Spring Boot 2.x整合Apollo代码示例
  4. JavaScript判断字符串中包含另一个字符串(QML 中使用)
  5. Linux(CentOS)挂载U盘、移动硬盘以及文件拷贝、备份
  6. 5.jQueryAjax
  7. 案例 自动办公_办公自动化案例教程(双色)(含微课)
  8. 两个SEO技巧让你的网站排名靠前
  9. 菜鸟学习笔记:Java提升篇2(容器2——Map、Set、迭代器)
  10. Kaggle 数据清洗挑战 Day 3 - 快速解析日期(date)数据
  11. 账龄分析表excel模板_华为财务EXCEL内训手册(共131套模板,带公式).xls
  12. 普中V2 7人多数表决器 51单片机 仿真 proteus
  13. 大二Git-Branching学习
  14. 抖音上用计算机算66,抖音年龄计算器
  15. 远程桌面计算机用户名,远程桌面设置及使用
  16. 图像处理中像素和毫米的换算
  17. 【日常需求】一次使用EasyExcel而引发的问题与思考~
  18. python中datetime模块是以什么时间为基础_Python基础之datetime模块
  19. Kafka消费消息自动提交与手动提交
  20. OSAL移植到STM8

热门文章

  1. 使用RPM安装Mysql5.5找不到配置文件My.cnf
  2. KDE——年度最佳桌面环境
  3. nagios 监控出现It appears as though you do not have permission
  4. PTA:编程题:7-1 一元多项式的乘法与加法运算 (20 分)
  5. 大数据挖掘有哪些技术
  6. 如何针对大数据进行分析
  7. Kernel(核函数)
  8. insert into 插入空值_常州插入式涡轮流量计旋进旋涡流量计价格-玮偌自控系统...
  9. 2.C++深入理解 面向对象部分1
  10. 依存可视化︱Dependency Viewer——南京大学自然语言处理研究组