Postgresql 如何杀死赢得';你不会死吗?
我按照ps aux | grep postgres 博士后8720 0.0 0.0 2492848 5652??SN下午2:33Postgresql 如何杀死赢得';你不会死吗?,postgresql,Postgresql,我按照ps aux | grep postgres 博士后8720 0.0 0.0 2492848 5652??SN下午2:33 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
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 4950.0 0.0 2514428 1776??新加坡时间下午1:57 0:00.07 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Versions/A/Support/mdflagwriter 博士后491 0.0 1.0 2669764 166180??下午1点57分
0:10.31 com.apple.IconServicesAgent postgres 490 0.0 0.0 2505832 2884 ?? SS1:57pm0:00.07/usr/libexec/xpcd postgres 485 0.0 0.0 2514284 1284 ?? 新加坡时间下午1:57 0:00.07 /usr/sbin/cfprefsd代理postgres 4840.0 0.0 2536788
1708 ?? S下午1:57 0:00.06/usr/sbin/distnoted agent postgres
479 0.0 0.0 2508256 1100 ?? Ss下午1:57 0:00.06 /sbin/launchd postgres 427 0.0 0 0.0 2493792 608?? Ss 1:55PM 0:00.02 postgres:stats收集器处理postgres 426 0.0 0.0 2654624 2208 ?? Ss下午1:55 0:00.02 postgres: 自动真空发射器工艺postgres 425 0.0 0.0 2646300 764 ?? Ss下午1:55 0:00.03 postgres:wal writer 过程postgres 4240.0 0.0 2638108 1608??党卫军 下午1:55 0:00.07发帖:作者处理发帖423
0.0 0.0 2638108 836 ?? SS1:55PM 0:00.00 postgres:checkpointer进程postgres 419 0.0 0.0 2493792
500 ?? Ss 1:55PM 0:00.00 postgres:记录器进程postgres 85 0.0 0.1 2638108 13844 ?? Ss下午1:55 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下午
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`
但我不明白这个命令
感谢您的指导。漫长而沮丧的早晨 通常,您可以使用
kill
命令停止运行进程。更具体地说,kill
向进程发送信号。最基本的kill命令如下:
kill
这会向进程发送SIGTERM
信号,告诉它们停止
有时,您会遇到一个流程被卡住了,并且似乎对SIGTERM没有响应。在这种情况下,您可以告诉kill
命令通过执行以下操作来更有力地执行一点(或更多):
kill-9
或等效的kill-kill
这将向进程发送SIGKILL
信号,其效果(通常)是操作系统立即将进程从运行队列中取出并停止它一般来说,这可能有点危险,因为它不会让程序更改为“清理”或以任何合理的方式完成运行。它会立即停止运行。
您可以在上或(mankill
本地机器上)中找到有关kill
的更多信息。该命令在Linux、UNIX、BSD和OSX中是相当标准的,因此文档应该或多或少地适用于其中任何一个
此外,您还可以找到关于不同信号在上的作用的更多信息
作为额外的好处,我发现这使我永远不会忘记这个命令是如何工作的
编辑:有时,有些进程无法终止。发生这种情况的最常见情况之一是当进程处于D
状态时(请参阅ps axu
输出中的STAT
列)。此状态意味着进程是不可中断的,通常是因为它正在等待某些I/O操作完成,而由于各种原因,这些操作永远不会完成。更多信息
另一个注意事项:有时杀死一个进程不起作用,因为你需要杀死父进程,而不是某个工作进程。你可以使用命令
ps axjf
看到进程的“继承权”(即父/子关系)。您可以在(man ps
本地计算机上)中查看有关ps
命令的更多信息。与使用kill
一样,ps
命令是非常标准的,因此文档应该主要适用于所有各种类似UNIX的操作系统。或者,我发现这为我解决了问题
杀死所有名为“postgres”的进程
pkill postgres
您是否尝试过
kill-9 8720
(其中8720
是PID)?请注意,这可能会导致数据丢失,因为操作系统将以非常不友好的方式终止进程。酷。我会发布一个更详细的答案。@CmdrMoozy,现在它不起作用了。太奇怪了。我在我的答案中添加了一些额外的注释,这也许可以解释为什么它有时不起作用。看看他们是否有帮助。不起作用jim 9813 0.0 0.0 22564 944 pts/1 S+15:09 0:00 grep--color=auto postgres
@mLstudent33-从您的评论打印输出中,您已经运行了命令ps | grep postgres
。正如您在打印输出中看到的那样,grep
和postgres
都在那里,这是因为您返回了刚刚运行的流程。最好使用ps | pgrep postgres
。tl;博士-它确实有效!