2017-09-28 84 views
0

能pkill的保证下面的情况从未发生过:pkill的担保

  1. 我用pkill的-f “ABC”

  2. pkill的名字查找过程并记住PID

  3. 过程结束

  4. Linux启动一个新进程与相同的pid

  5. pkill的终止进程开始在步骤4

+1

欢迎来到Stack Overflow! SO用于编程问题,而不是关于使用或配置Linux的问题。 SuperUser.com或unix.stackexchange.com会是这样的问题的更好的地方。 – Barmar

+2

不,我不认为'pkill'可以做出这样的保证。 Unix没有任何锁定机制来支持PID查找和杀死原子。 – Barmar

+1

这主要取决于PID实际上从来没有如此快速被重用的事实。 – Barmar

回答

1

PIDS做包装,做最终得到重用。但是,分配给最近运行的进程的pid不会很快被重用。所以,在实践中,你担心的问题从未发生过。 据我所知,这在理论上是可能的。 然而,这将意味着

  • pkill的正在运行很慢,足以的新进程ID一大堆可以找到进程和杀死它
  • 系统的其余部分之间得到分配足够快,以创建运行所有这些进程,并达到最近使用过的pid被释放的地步。
  • 正如在评论中指出,无论你是根或进程正在运行相同的用户

有可能有pkill的攻击的一些方法,以便它是缓慢的,但这样的攻击几乎肯定会一个内核错误。 我从来没有在这种情况下担心这个问题是正确的设计决定。

+0

除非你以root身份运行'pkill',否则PID也会有t o由在相同用户标识下运行的进程重新使用。 – Barmar