我运行以下进程 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:wal writer process postgres 424 0.0 0.0 2638108 1608 ?? Ss 1:55 PM 0:00.07 postgres:writer process 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`
但我不明白这个命令.
指导表示赞赏.令人沮丧的早晨!
或者,我发现这个答案为我解决了问题.
杀死名为'postgres'的所有进程
pkill postgres
通常,您可以使用该kill
命令停止正在运行的进程.更具体地说,kill
向进程发送信号.最基本的kill命令是这样的:
kill <pid>
这会将SIGTERM
信号发送给进程,告诉他们停止.
有时候,你会遇到一个真正陷入困境的进程,而且似乎没有响应SIGTERM.在这种情况下,您可以通过kill
执行以下操作告诉命令稍微(或者,您知道,很多)执行此操作:
kill -9 <pid>
或者,等效地, kill -KILL <pid>
这会将SIGKILL
信号发送到进程,其效果(通常)是OS立即将进程从运行队列中取出并停止运行.一般来说,这可能有点危险,因为它不会给程序带来"清理"或以任何合理方式完成运行的变化.它只是立即停止它.
您可以kill
在Wikipedia或手册页(man kill
在本地计算机上)上找到有关Wikipedia的更多信息.该命令在Linux,UNIX,BSD和OS X中是相当标准的,因此文档应该或多或少地适用于任何这些.
此外,您还可以找到有关维基百科上不同信号的更多信息.
作为一个额外的好处,我发现这首歌让我无法忘记这个命令是如何工作的.
编辑:有时,有些进程无法被杀死.发生这种情况的最常见情况之一是进程处于D
状态时(请参阅STAT
输出中的列ps axu
).这种状态意味着该进程是不可中断的,通常是因为它等待一些I/O操作完成,因为各种原因永远不会.更多信息在这里.
另一个注意事项:有时候杀死一个进程是行不通的,因为你需要杀掉一个父进程,而不是某个工作进程被它fork
编写.您可以使用该命令查看进程"heirarchy"(即父/子关系)ps axjf
.您可以ps
在手册页(man ps
在本地计算机上)中查看有关该命令的更多信息.与此一样kill
,该ps
命令非常标准,因此文档应该主要适用于所有类似UNIX的操作系统.