PID, PPID, PGID与SID

Linux中,进程都拥有以下的ID

  • Process ID(PID)
    Linux中标识进程的一个数字,它的值是不确定的,是由系统分配的(但是有一个例外,启动阶段,kernel运行的第一个进程是init,它的PID是1,是所有进程的最原始的父进程),每个进程都有唯一PID,当进程退出运行之后,PID就会回收,可能之后创建的进程会分配这个PID
  • Parent Process ID(PPID)
    字面意思,父进程的PID
  • Process Group ID(PGID)
    PGID就是进程所属的Group的Leader的PID,如果PGID=PID,那么该进程是Group Leader
  • Session ID(SID)
    和PGID非常相似,SID就是进程所属的Session Leader的PID,如果SID==PID,那么该进程是session leader

Session和Group都是管理多个进程的方式,同一个Group的进程属于同一个Session,一个Session里可以包含多个Group
ps j或者ps -j都可以显示出以上四个ID,命令如下

ps axj
ps -efj

意义

group和session虽然都是进程的集合,但是他们的意义不同。fork出的子进程,会继承group和session(PGID和SID与父进程相同)
session与终端相关(Control terminal),同一个终端启动的进程默认会在一个session里。例如图形界面的终端(比如GNOME按ctrl+atl+T呼出的命令行界面),都是虚拟终端(Virtual terminal),他们实质上只有一个终端在真正起作用,输入w命令,可以看到所有的control terminal。
group则是方便管理,比如发送信号,kill可以一次向一个group的进程发送同一个信号,ctrl+z进入后台、bg、fg都可以对一个group的进程起作用。比如ctrl+z可以将一个group的进程stop暂停运行,fg可以让一个group继续运行

top #在前台运行一个top
按下ctrl+z,top进入stopped状态
bg %1 #让top在后台运行,相当于运行top &,输出信息会显示在当前的shell上
fg %1 #让top在前台运行

这里的top如果是多进程的程序,他们在共同的group中,也有相同的效果

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值