为什么grepping PID一直在变化?

Why does grepping PID keep changing?

我想编写一个 bash 脚本来通过 ID 终止进程,但我什至无法让 PID 正常工作,因为它一直在变化。这是为什么?

Jacks-MBP:~ Knof$ ps aux | grep "firefox"
Knof              515   0.0  4.3  4822060 723232   ??  U    10:28PM   4:57.15 /Applications/Firefox.app/Contents/MacOS/firefox
Knof             4489   0.0  0.0  2436888    812 s002  S+   12:36AM   0:00.00 grep firefox
Jacks-MBP:~ Knof$ ps aux | grep "firefox"
Knof              515   0.0  4.3  4822060 723232   ??  U    10:28PM   4:57.15 /Applications/Firefox.app/Contents/MacOS/firefox
Knof             4491   0.0  0.0  2436888    812 s002  S+   12:36AM   0:00.00 grep firefox
Jacks-MBP:~ Knof$ ps aux | grep "firefox"
Knof              515   0.0  4.3  4822060 723232   ??  U    10:28PM   4:57.15 /Applications/Firefox.app/Contents/MacOS/firefox
Knof             4493   0.0  0.0  2436888    812 s002  S+   12:36AM   0:00.00 grep firefox
Jacks-MBP:~ Knof$ ps aux | grep "firefox"
Knof              515   0.0  4.3  4822060 723232   ??  U    10:28PM   4:57.15 /Applications/Firefox.app/Contents/MacOS/firefox
Knof             4495   0.0  0.0  2435864    800 s002  S+   12:36AM   0:00.00 grep firefox

每次开火

ps aux | grep "firefox"

您正在重新启动 grep 进程。它不表示 运行 Firefox 的 PID 位于 /Applications/Firefox.app/Contents/MacOS/firefox

你的情况。

在你的例子中,515 是要杀死的进程。

每次启动进程时,都会为其分配一个新的(递增的)PID;即使可执行文件和所有参数都相同。

您会注意到 "firefox" 的 PID 对于您的所有四个调用都是相同的,表明它还没有同时重新启动。
"grep" 的 PID 在每次调用开始(和终止)时发生变化。