我正在尝试解决 nginx 的问题,并认为我的机器上正在运行一个 nginx 进程。当我运行这个命令时,我得到了这个输出。
$ ps aux -P | grep nginx
1000 3947 0.0 0.0 13596 932 pts/0 S+ 14:05 0:00 grep --color=auto nginx
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试终止进程 1000、3947、13596 或 932,则会出现如下错误:
bash: kill: (1000) - No such process
这是怎么回事?如何找到并终止 nginx 进程?
ps aux -P
显示这些列:
$ ps aux -P | head -1
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
Run Code Online (Sandbox Code Playgroud)
只有第二列是pid。
警告:不要试图杀死随机 pid。
pid 3947 是在您收到提示时结束的 grep 进程,因此确实没有这样的进程。
如果有一个 nginx 进程,你会在 grep 输出中看到它。结论:nginx 没有在你的机器上运行。
避免grep
命令本身出现在ps
输出中的一个常见技巧是将第一个字符放入字符类中,这样它就不会与其文字本身相匹配。IE,
$ ps aux | grep [n]ginx
Run Code Online (Sandbox Code Playgroud)
这样,grep
模式将匹配“nginx”,但不匹配输出中显示的文字“[n]ginx” ps
。