我按照ps aux | grep postgres
postgres 8720 0.0 0.0 2492848 5652 ?? SN 2:33 PM
0:00.04 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Versions/A/Support/mdworker -s mdworker -c MDSImporterWorker -m com.apple.mdworker.shared postgres 495 0.0 0.0 2514428 1776 ?? S 1:57 PM 0:00.07 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Versions/A/Support/mdflagwriter postgres 491 0.0 1.0 2669764 166180 ?? Ss 1:57 PM
0:10.31 com.apple.IconServicesAgent postgres 490 0.0 0.0 2505832 2884 ?? Ss 1:57 PM 0:00.07 / usr / libexec / xpcd postgres 485 0.0 0.0 2514284 1284 ?? S 1:57 PM 0:00.07 / usr / sbin / cfprefsd agent postgres 484 0.0 0.0 2536788
1708 ?? S 1:57 PM 0:00.06 / usr / sbin / distnoted agent postgres
479 0.0 0.0 2508256 1100 ?? Ss 1:57 PM 0:00.06 / sbin / launchd postgres 427 0.0 0.0 2493792 608 ?? Ss 1:55 PM 0:00.02 postgres:stats collector process postgres 426 0.0 0.0 2654624 2208 ?? Ss 1:55 PM 0:00.02 postgres: autovacuum launcher process postgres 425 0.0 0.0 2646300 764 ?? Ss 1:55 PM 0:00.03 postgres:沃尔夫作家 post postgres 424 0.0 0.0 2638108 1608 ?? SS 下午1:55 0:00.07 postgres:作家流程postgres 423
0.0 0.0 2638108 836 ?? Ss 1:55 PM 0:00.00 postgres:checkpointer process postgres 419 0.0 0.0 2493792
500 ?? Ss 1:55 PM 0:00.00 postgres:logger process postgres 85 0.0 0.1 2638108 13844 ?? Ss 1:55 PM 0:00.04 /Library/PostgreSQL/9.3/bin/postmaster -D / Library / PostgreSQL / 9.3 / data 用户名8910 0.0 0.0 2432784 612 s003 R + 2:35 PM
0:00.00 grep postgres
我希望他们死!
但是killall postgres给了我:
No matching processes belonging to you were found
我明白我需要使用:
kill -INT `head -1 /usr/local/pgsql/data/postmaster.pid`
但我不明白这个命令。
指导表示赞赏。令人沮丧的早晨!
答案 0 :(得分:7)
通常,您可以使用kill
命令停止正在运行的进程。更具体地说,kill
向进程发送信号。最基本的kill命令是这样的:
kill <pid>
这会向进程发送SIGTERM
信号,告诉他们停止。
有时,您会遇到一个真正陷入困境的流程,并且似乎无法响应SIGTERM。在这种情况下,您可以通过执行以下操作告诉kill
命令执行一些(或者,您知道,很多):
kill -9 <pid>
或等同于kill -KILL <pid>
这会向进程发送SIGKILL
信号,其效果(通常)是OS立即将进程从运行队列中取出并停止它。 这通常会有点危险,因为它不会给程序带来改变&#34;清理&#34;或以任何合理的方式完成运行。它只是立即停止它。
您可以在Wikipedia或man pages(本地计算机上的kill
)上找到有关man kill
的更多信息。该命令在Linux,UNIX,BSD和OS X中是相当标准的,因此文档应该或多或少地适用于任何这些。
此外,您还可以在Wikipedia找到有关不同信号的更多信息。
作为额外的奖励,我发现this song使我无法忘记此命令的工作原理。
编辑:有时候,有些进程只能无法杀死。发生这种情况的最常见情况之一是流程处于D
状态时(请参阅STAT
输出中的ps axu
列)。这种状态意味着该过程是不可中断的,通常是因为它等待一些I / O操作完成,因为各种原因永远不会。更多信息here。
另一个注意事项:有时候杀死一个进程并不起作用,因为你需要杀死父进程,而不是某些工作人员处理它fork
&#39;编辑。你可以看到这个过程&#34; heirarchy&#34; (即父/子关系)使用命令ps axjf
。您可以在man page(本地计算机上的ps
)中查看有关man ps
命令的详细信息。与kill
一样,ps
命令非常标准,因此文档应该主要适用于所有类似UNIX的操作系统。
答案 1 :(得分:6)