在 Linux 上的 Informix 中,“杀进程”通常分几种情况,不同场景要用不同方式,不建议直接 kill -9,否则容易造成数据库不一致。下面按常见场景说明。
一般不是直接杀操作系统进程,而是 杀 Informix 会话(session)。
SELECT sid, username, pid, hostname, tty
FROM sysmaster:syssessions;
或:
onstat -g ses
会看到类似:
sid pid user hostname
101 12345 informix dbserver
ONMODE -z <session_id>
示例:
onmode -z 101
✅ 优点:
onstat -g sql
或:
SELECT sid, sql_statement
FROM sysmaster:syssqlstat;
onmode -z <sid>
只有在 数据库已经异常、无法登录 时才考虑。
onstat -g glo
ps -ef | grep oninit
典型进程:
oninit
oninit -p
oninit -s
⚠️ 不要 kill oninit 主进程
kill -15 12345
如果无效:
kill -9 12345
⚠️ 风险
onstat -k
onstat -u
onmode -z <sid>
onmode -k
或强制:
onmode -ky
⚠️ 会中断所有连接
| 场景 | 正确做法 |
|---|---|
| 杀用户会话 | onmode -z sid |
| 杀慢 SQL | 查 sid → onmode -z |
| 杀死锁 | 查阻塞会话 → onmode -z |
| 数据库异常 | 最后才 kill -9 |
| 正常维护 | 不要直接 kill |
如果你愿意,可以告诉我:
onstat -g ses 输出我可以帮你精确判断该杀哪个 ✅