V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hello826
V2EX  ›  程序员

Linux 如何恢复误 kill 的进程

  •  
  •   hello826 · 2020-06-18 12:55:23 +08:00 · 4772 次点击
    这是一个创建于 1618 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近遇到一个问题,在服务器上要 kill 一个进程,用 ps 查出进程 Id 后,手动输入 kill -9 进程 id 。

    本来进程 ID 是 12349 结果手一抖输入了个 12340,正好有个进程的 ID 是 12340,然后就被误杀了。

    我想请教各位,如何能知道我误杀的 ID 12340 对应的进程,这样我也好重启。

    问了几个运维有的说看 /var/log/syslog 的 message 的,有的说让我一个一个检查服务的。。。。关键测试服务器上部署了 2~30 个服务。

    感觉手动检查可行性不高,各位有没有遇到过这个问题

    20 条回复    2020-06-19 21:35:22 +08:00
    klesh
        1
    klesh  
       2020-06-18 13:01:21 +08:00 via Android
    往回滚看看之前的 ps 输出?
    lp10
        2
    lp10  
       2020-06-18 13:21:14 +08:00
    应该只能翻日志找有没有这个 PID 了……

    https://serverfault.com/questions/386956/pid-history-of-a-process
    oneisall8955
        3
    oneisall8955  
       2020-06-18 13:35:42 +08:00 via Android
    因为这个每次 kill 之前都是复制粘贴,不相信自己手打 pid,而且复制也要检查一边😂
    hello826
        4
    hello826  
    OP
       2020-06-18 13:46:26 +08:00
    @oneisall8955 看来得改习惯,不能手动输入了。万一在生产环境输错了,那可就凉透了
    jimmyismagic
        5
    jimmyismagic  
       2020-06-18 14:42:02 +08:00
    又不是删库,怕什么,服务监控做好,啥都不要怕
    d0m2o08
        6
    d0m2o08  
       2020-06-18 14:58:52 +08:00
    别慌,谁都有尿鞋上的时候,淡定
    Latin
        7
    Latin  
       2020-06-18 15:00:25 +08:00
    ps -ef | grep `Search` | awk '{print $2}'|xargs kill -9
    bkmi
        8
    bkmi  
       2020-06-18 15:01:16 +08:00 via Android
    重启大法好
    no1xsyzy
        9
    no1xsyzy  
       2020-06-18 15:48:21 +08:00
    如果是 systemd
    # systemctl start $(systemctl get-default)
    如果你的系统重启之后可以自动开启所有需要的服务,这个就行。
    其他 init 也有类似的操作。
    no1xsyzy
        10
    no1xsyzy  
       2020-06-18 15:49:17 +08:00
    而且我觉得你可以去水一发 unix.stackexchange (
    yanqiyu
        11
    yanqiyu  
       2020-06-18 15:52:13 +08:00 via Android
    systemctl list-units --failed
    看看谁挂了,要是都没挂就不是问题
    githubhaoliu
        12
    githubhaoliu  
       2020-06-18 16:14:03 +08:00
    这时候就提现出了 supervisor 的重要性
    takemeaway
        13
    takemeaway  
       2020-06-18 16:14:15 +08:00
    日志应该可以的,有记录每次程序启动的 pid
    guanhui07
        14
    guanhui07  
       2020-06-18 17:07:58 +08:00
    supervisor 拉起来
    nightwitch
        15
    nightwitch  
       2020-06-18 17:27:58 +08:00
    别怂,杀到了重要的服务 systemed 配置了 restart 项的话会自动拉起来的
    hello826
        16
    hello826  
    OP
       2020-06-18 18:03:43 +08:00 via iPhone
    那像我这种极端环境,没有部署监控的话,只能一个一个去检查进程了吧
    peachpeach
        17
    peachpeach  
       2020-06-18 18:04:36 +08:00 via iPhone
    以上。
    lpts007
        18
    lpts007  
       2020-06-19 10:44:52 +08:00
    @githubhaoliu 你好,kill -9 杀掉的 也会拉起来吗? 我自己刚刚使用 supervisor,发现通过 kill -9 杀死的不会拉起( kill 可以拉起),是不是需要配置什么参数才行?
    githubhaoliu
        19
    githubhaoliu  
       2020-06-19 19:03:41 +08:00   ❤️ 1
    @lpts007 supervisor 是监听进程,不太关注你用什么命令 kill,只要进程退出就会拉起,只要你的 supervisor 在运行。
    lpts007
        20
    lpts007  
       2020-06-19 21:35:22 +08:00
    @githubhaoliu 好的 谢谢 看见你说的我又去检查了一下,我的描述确实不对---我没配 autorestart--都起不来。已经改了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2483 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 15:33 · PVG 23:33 · LAX 07:33 · JFK 10:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.