文章

作业id和pid有什么区别

作业id和pid有什么区别

在Linux系统中,作业ID(Job ID)和进程ID(PID)是两个不同的概念,它们分别用于标识和管理不同的系统实体。以下是它们的主要区别:

作业ID(Job ID)

  1. 定义
    • 作业ID是由shell分配给在当前shell会话中启动的后台作业的唯一标识符。
  2. 范围
    • 作业ID通常是一个小的正整数,如[1][2]等。
  3. 作用域
    • 作业ID仅在当前shell会话中有效。如果退出当前shell,这些作业ID将不再存在。
  4. 用途
    • 用于在当前shell会话中管理和操作后台作业。例如,使用fgbgkill等命令时,可以通过作业ID来指定特定的作业。
  5. 示例
    1
    2
    3
    4
    
    [root@localhost ~]# sleep 100 &
    [1] 2345
    [root@localhost ~]# jobs
    [1]+  Running                 sleep 100 &
    

进程ID(PID)

  1. 定义
    • 进程ID是由系统内核分配给每个进程的唯一标识符。
  2. 范围
    • PID是一个较大的正整数,范围通常从1开始,直到系统最大PID值(通常为32768或更高)。
  3. 作用域
    • PID在整个系统中有效,不仅限于当前shell会话。即使退出当前shell,进程ID仍然存在,直到进程终止。
  4. 用途
    • 用于在系统级别管理和操作进程。例如,使用pskilltop等命令时,可以通过PID来指定特定的进程。
  5. 示例
    1
    2
    3
    4
    
    [root@localhost ~]# sleep 100 &
    [1] 2345
    [root@localhost ~]# ps ax | grep sleep
    2345 ?        S      0:00 sleep 100
    

关系与区别

  • 关系
    • 一个作业可以包含一个或多个进程,但通常情况下,一个后台作业对应一个进程。作业ID是shell分配的,用于在当前shell会话中标识和管理后台作业;而PID是系统内核分配的,用于在系统级别标识和管理进程。
  • 区别
    • 作用域不同:作业ID仅在当前shell会话中有效,而PID在整个系统中有效。
    • 分配者不同:作业ID由shell分配,PID由系统内核分配。
    • 用途不同:作业ID用于管理后台作业,PID用于管理系统中的进程。

示例操作

  1. 启动一个后台作业并查看作业ID和PID:

    1
    2
    
    [root@localhost ~]# sleep 100 &
    [1] 2345
    
    • [1]是作业ID。
    • 2345是进程ID。
  2. 使用jobs命令查看作业ID:

    1
    2
    
    [root@localhost ~]# jobs
    [1]+  Running                 sleep 100 &
    
  3. 使用ps命令查看进程ID:

    1
    2
    
    [root@localhost ~]# ps ax | grep sleep
    2345 ?        S      0:00 sleep 100
    

通过理解作业ID和PID的区别,可以更有效地管理和操作Linux系统中的后台作业和进程。

本文由作者按照 CC BY 4.0 进行授权