Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux Bash作业控制(作业ID和进程组ID)_Linux_Bash_Shell_Unix - Fatal编程技术网

Linux Bash作业控制(作业ID和进程组ID)

Linux Bash作业控制(作业ID和进程组ID),linux,bash,shell,unix,Linux,Bash,Shell,Unix,bash究竟如何处理作业id?如果我运行以下命令: sleep 10 & sleep 60 & 然后当sleep 10终止并再次运行sleep 7&时,第三个作业的ID为3而不是1。作业ID号是否仅重置回上次停止的作业编号(如果未停止,则重置为0)?此外,每个作业的作业ID是否都会增加?例如,如果我运行一个内置命令,如fg,它会增加作业ID吗 我的第二个问题是,如何分配流程组?同一作业中的每个流程是否都具有相同的流程组ID?作业编号显示为递增,直到所有作业完成,然后再次重置为1

bash究竟如何处理作业id?如果我运行以下命令:

sleep 10 &
sleep 60 &
然后当
sleep 10
终止并再次运行
sleep 7&
时,第三个作业的ID为3而不是1。作业ID号是否仅重置回上次停止的作业编号(如果未停止,则重置为0)?此外,每个作业的作业ID是否都会增加?例如,如果我运行一个内置命令,如
fg
,它会增加作业ID吗


我的第二个问题是,如何分配流程组?同一作业中的每个流程是否都具有相同的流程组ID?

作业编号显示为递增,直到所有作业完成,然后再次重置为1。不过,这只是经验和观察的结果。我不知道它是否是这样设计的。这些是进程ID,你不应该依赖于它以任何方式出现,这取决于平台。@pizza:Shell作业编号不是进程ID。你是对的,我指的是第二个编号,即PID。不是bash创建的第一个。在bash中,ID从jobs数组的索引中去掉,添加1,然后返回给用户,该数组有4096个插槽。当它变得拥挤时,它会对它做各种各样的事情。例如重新定位、压实。+1增量通常会发生,但不能指望它。