2017-09-28 69 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