流程与流程之间有什么区别? pid,ppid,uid,euid,gid和egid?

时间:2015-05-27 21:24:56

标签: ruby process pid

上下文:我正在获取当前的Ruby进程ID。

Process.pid  #=> 95291

Process.ppid #=> 95201

Process.uid  #=> 501

Process.gid  #=> 20

Process.euid #=> 501

Process.egid #=> 20

3 个答案:

答案 0 :(得分:29)

按顺序:

  • $( "#aboutLink" ).hover(function() { $( '#aboutBlurb' ).show(); }); :这是您调用pid方法的流程的进程ID(PID)。
  • Process.pid:父进程的PID(产生当前进程的进程)。例如,如果在bash shell中运行ppid,则该进程中的PPID将是Bash的PID。
  • ruby test.rb:运行进程的用户的UNIX ID。
  • uid:正在运行该进程的有效用户ID。 EUID根据允许具有此UID的用户执行的操作来确定允许程序执行的操作。通常与euid相同,但可以与uid等命令不同。
  • sudo:运行程序的UNIX组ID。
  • gid:与egid类似,但适用于群组。

答案 1 :(得分:11)

<强> PID:

  

在Linux中,存储在磁盘上的可执行文件称为程序,加载到内存中并运行的程序称为进程。当一个进程启动时,它会被赋予一个称为进程ID(PID)的唯一编号,用于标识该系统的进程。例如,如果您需要终止进程,可以通过其PID引用它。

<强> PPID:

  

除了唯一的进程ID之外,还为每个进程分配了一个父进程ID(PPID),用于指示启动它的进程。 PPID是进程父级的PID。

     

例如,如果PID为101的process1启动名为process2的进程,则process2将被赋予唯一的PID,例如3240,但它将被赋予PPID 101.这是一个父子关系。单个父进程可能会生成多个子进程,每个进程都有一个唯一的PID,但都共享相同的PPID。

<强> UID:

  类似于Unix的操作系统通过称为用户标识符的值来识别内核中的用户,该标识符通常缩写为UID或用户ID。 UID以及GID和其他访问控制标准用于确定用户可以访问哪些系统资源。密码文件将文本用户名映射到UID,但在内核中,只使用UID。

<强> EUID:

  

进程的有效UID(euid)用于大多数访问检查。它还用作该进程创建的文件的所有者。

<强> GID:

  

组标识符(通常缩写为GID)是用于表示特定组的数值。 GID的值范围因系统而异;至少,GID可以介于0到32,767之间,但有一个限制:超级用户的登录组必须具有GID 0。

<强> EGID:

  

进程的有效GID(egid)也会影响访问控制,并且还可能影响文件创建,具体取决于所使用的特定内核实现的语义以及可能使用的挂载选项。

请参阅这些文章以获取更多信息:

  1. What are PID and PPID?
  2. Meaning of PID, PPID and TGID
  3. User identifier
  4. Group identifier

答案 2 :(得分:0)

除了上述全面的答案外,我还想分享一些linux命令和相应的输出,这些信息可能有助于实现 real 有效用户ID /组之间的区别当前登录的用户 myuser

真实的用户名和组名以及数字ID

$ id

uid=1000(myuser) gid=1000(myuser) groups=1000(myuser),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),119(lpadmin),130(lxd),131(sambashare)

有效的用户名和组名以及数字ID

$ sudo id

uid=0(root) gid=0(root) groups=0(root)