gpt4 book ai didi

postgresql - 如何杀死不会死的postgres进程?

转载 作者:行者123 更新时间:2023-11-29 11:26:20 26 4
gpt4 key购买 nike

根据ps aux | 我有以下进程在运行grep postgres

postgres 8720 0.0 0.0 2492848 5652 ?? SN 2:33PM
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:57PM 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:57PM
0:10.31 com.apple.IconServicesAgent postgres 490 0.0 0.0 2505832 2884 ?? Ss 1:57PM 0:00.07 /usr/libexec/xpcd postgres 485 0.0 0.0 2514284 1284 ?? S 1:57PM 0:00.07 /usr/sbin/cfprefsd agent postgres 484 0.0 0.0 2536788
1708 ?? S 1:57PM 0:00.06 /usr/sbin/distnoted agent postgres
479 0.0 0.0 2508256 1100 ?? Ss 1:57PM 0:00.06 /sbin/launchd postgres 427 0.0 0.0 2493792 608 ?? Ss 1:55PM 0:00.02 postgres: stats collector process postgres 426 0.0 0.0 2654624 2208 ?? Ss 1:55PM 0:00.02 postgres: autovacuum launcher process postgres 425 0.0 0.0 2646300 764 ?? Ss 1:55PM 0:00.03 postgres: wal writer process postgres 424 0.0 0.0 2638108 1608 ?? Ss 1:55PM 0:00.07 postgres: writer process postgres 423
0.0 0.0 2638108 836 ?? Ss 1:55PM 0:00.00 postgres: checkpointer process postgres 419 0.0 0.0 2493792
500 ?? Ss 1:55PM 0:00.00 postgres: logger process postgres 85 0.0 0.1 2638108 13844 ?? Ss 1:55PM 0:00.04 /Library/PostgreSQL/9.3/bin/postmaster -D/Library/PostgreSQL/9.3/data Username 8910 0.0 0.0 2432784 612 s003 R+ 2:35PM
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 <pid>

这会发送 SIGTERM向进程发出信号,告诉他们停止。

有时,您会遇到一个真正卡住的进程,并且似乎没有响应 SIGTERM。在这种情况下,您可以告诉 kill命令通过执行以下操作更有效地执行一点(或者,你知道,很多):

kill -9 <pid>或者,等效地,kill -KILL <pid>

这会发送 SIGKILL向进程发出信号,其效果(通常)是操作系统立即将进程从运行队列中取出,并停止它。 一般来说,这可能有些危险,因为它不会让程序更改为“清理”或以任何合理的方式结束运行。它只是立即停止它。

您可以找到有关 kill 的更多信息在 Wikipedia ,或在 man pages (在您的本地计算机上为 man kill)。该命令在 Linux、UNIX、BSD 和 OS X 中是相当标准的,因此文档应该或多或少适用于其中任何一个。

此外,您可以在 Wikipedia 上找到有关不同信号的用途的更多信息。

作为额外的奖励,我发现 this song让我永远不会忘记这个命令是如何工作的。

编辑:有时,有些进程无法终止。发生这种情况的最常见情况之一是进程在 D 中。状态(参见 STAT 输出中的 ps axu 列)。这种状态意味着进程是不可中断的,通常是因为它正在等待一些 I/O 操作完成,而由于各种原因永远不会完成。更多信息 here .

另一个注意事项:有时终止进程不起作用,因为您需要终止父进程,而不是某些工作进程它是fork '编辑。您可以使用命令 ps axjf 查看进程“层次结构”(即父/子关系) .您可以查看有关 ps 的更多信息命令在 man page (在您的本地计算机上为 man ps)。与 kill 一样, ps命令是非常标准的,因此文档应该主要适用于所有各种类 UNIX 操作系统。

关于postgresql - 如何杀死不会死的postgres进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25086725/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com