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

 淡月如水夜宿雨 发布于 2022-12-31 09:21

我运行以下进程 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`

但我不明白这个命令.

指导表示赞赏.令人沮丧的早晨!

2 个回答
  • 或者,我发现这个答案为我解决了问题.

    杀死名为'postgres'的所有进程

    pkill postgres
    

    2022-12-31 09:26 回答
  • 通常,您可以使用该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的操作系统.

    2022-12-31 09:28 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有