最近遇到一个问题,在服务器上要 kill 一个进程,用 ps 查出进程 Id 后,手动输入 kill -9 进程 id 。
本来进程 ID 是 12349 结果手一抖输入了个 12340,正好有个进程的 ID 是 12340,然后就被误杀了。
我想请教各位,如何能知道我误杀的 ID 12340 对应的进程,这样我也好重启。
问了几个运维有的说看 /var/log/syslog 的 message 的,有的说让我一个一个检查服务的。。。。关键测试服务器上部署了 2~30 个服务。
感觉手动检查可行性不高,各位有没有遇到过这个问题
1
klesh 2020-06-18 13:01:21 +08:00 via Android
往回滚看看之前的 ps 输出?
|
2
lp10 2020-06-18 13:21:14 +08:00
|
3
oneisall8955 2020-06-18 13:35:42 +08:00 via Android
因为这个每次 kill 之前都是复制粘贴,不相信自己手打 pid,而且复制也要检查一边😂
|
4
hello826 OP @oneisall8955 看来得改习惯,不能手动输入了。万一在生产环境输错了,那可就凉透了
|
5
jimmyismagic 2020-06-18 14:42:02 +08:00
又不是删库,怕什么,服务监控做好,啥都不要怕
|
6
d0m2o08 2020-06-18 14:58:52 +08:00
别慌,谁都有尿鞋上的时候,淡定
|
7
Latin 2020-06-18 15:00:25 +08:00
ps -ef | grep `Search` | awk '{print $2}'|xargs kill -9
|
8
bkmi 2020-06-18 15:01:16 +08:00 via Android
重启大法好
|
9
no1xsyzy 2020-06-18 15:48:21 +08:00
如果是 systemd
# systemctl start $(systemctl get-default) 如果你的系统重启之后可以自动开启所有需要的服务,这个就行。 其他 init 也有类似的操作。 |
10
no1xsyzy 2020-06-18 15:49:17 +08:00
而且我觉得你可以去水一发 unix.stackexchange (
|
11
yanqiyu 2020-06-18 15:52:13 +08:00 via Android
systemctl list-units --failed
看看谁挂了,要是都没挂就不是问题 |
12
githubhaoliu 2020-06-18 16:14:03 +08:00
这时候就提现出了 supervisor 的重要性
|
13
takemeaway 2020-06-18 16:14:15 +08:00
日志应该可以的,有记录每次程序启动的 pid
|
14
guanhui07 2020-06-18 17:07:58 +08:00
supervisor 拉起来
|
15
nightwitch 2020-06-18 17:27:58 +08:00
别怂,杀到了重要的服务 systemed 配置了 restart 项的话会自动拉起来的
|
16
hello826 OP 那像我这种极端环境,没有部署监控的话,只能一个一个去检查进程了吧
|
17
peachpeach 2020-06-18 18:04:36 +08:00 via iPhone
以上。
|
18
lpts007 2020-06-19 10:44:52 +08:00
@githubhaoliu 你好,kill -9 杀掉的 也会拉起来吗? 我自己刚刚使用 supervisor,发现通过 kill -9 杀死的不会拉起( kill 可以拉起),是不是需要配置什么参数才行?
|
19
githubhaoliu 2020-06-19 19:03:41 +08:00 1
@lpts007 supervisor 是监听进程,不太关注你用什么命令 kill,只要进程退出就会拉起,只要你的 supervisor 在运行。
|
20
lpts007 2020-06-19 21:35:22 +08:00
@githubhaoliu 好的 谢谢 看见你说的我又去检查了一下,我的描述确实不对---我没配 autorestart--都起不来。已经改了。
|