Linux 如何恢复误 kill 的进程

hello826

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

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

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

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

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

17 条回复  •  2020-06-18 18:04:36 +08:00
klesh
klesh7 小时 11 分钟前 via Android
往回滚看看之前的 ps 输出?
1
lp10
lp106 小时 51 分钟前
应该只能翻日志找有没有这个 PID 了……

https://serverfault.com/questions/386956/pid-history-of-a-process
2
oneisall8955
oneisall89556 小时 37 分钟前 via Android
因为这个每次 kill 之前都是复制粘贴,不相信自己手打 pid,而且复制也要检查一边😂
3
hello826
hello8266 小时 26 分钟前
@oneisall8955 看来得改习惯,不能手动输入了。万一在生产环境输错了,那可就凉透了
4
jimmyismagic
jimmyismagic5 小时 30 分钟前
又不是删库,怕什么,服务监控做好,啥都不要怕
5
d0m2o08
d0m2o085 小时 14 分钟前
别慌,谁都有尿鞋上的时候,淡定
6
Latin
Latin5 小时 12 分钟前
ps -ef | grep `Search` | awk '{print $2}'|xargs kill -9
7
bkmi
bkmi5 小时 11 分钟前 via Android
重启大法好
8
no1xsyzy
no1xsyzy4 小时 24 分钟前
如果是 systemd
# systemctl start $(systemctl get-default)
如果你的系统重启之后可以自动开启所有需要的服务,这个就行。
其他 init 也有类似的操作。
9
no1xsyzy
no1xsyzy4 小时 23 分钟前
而且我觉得你可以去水一发 unix.stackexchange (
10
yanqiyu
yanqiyu4 小时 20 分钟前 via Android
systemctl list-units --failed
看看谁挂了,要是都没挂就不是问题
11
githubhaoliu
githubhaoliu3 小时 58 分钟前
这时候就提现出了 supervisor 的重要性
12
takemeaway
takemeaway3 小时 58 分钟前
日志应该可以的,有记录每次程序启动的 pid
13
guanhui07
guanhui073 小时 5 分钟前
supervisor 拉起来
14
nightwitch
nightwitch2 小时 45 分钟前
别怂,杀到了重要的服务 systemed 配置了 restart 项的话会自动拉起来的
15
hello826
hello8262 小时 9 分钟前 via iPhone
那像我这种极端环境,没有部署监控的话,只能一个一个去检查进程了吧
16
peachpeach
peachpeach2 小时 8 分钟前 via iPhone
以上。
17