温馨提示×

Linux Informix怎么杀进程

小樊
35
2026-07-05 16:08:55
栏目: 智能运维

Linux 上的 Informix 中,“杀进程”通常分几种情况,不同场景要用不同方式,不建议直接 kill -9,否则容易造成数据库不一致。下面按常见场景说明。


一、杀 Informix 会话(最常用、最安全 ✅)

一般不是直接杀操作系统进程,而是 杀 Informix 会话(session)

1️⃣ 查看当前会话

SELECT sid, username, pid, hostname, tty
FROM sysmaster:syssessions;

或:

onstat -g ses

会看到类似:

sid  pid      user   hostname
101  12345    informix  dbserver

2️⃣ 杀会话(推荐方式 ✅)

ONMODE -z <session_id>

示例:

onmode -z 101

✅ 优点:

  • Informix 会做回滚、释放锁
  • 不会损坏数据库

二、杀长时间运行的 SQL(事务)

1️⃣ 查看正在执行的 SQL

onstat -g sql

或:

SELECT sid, sql_statement
FROM sysmaster:syssqlstat;

2️⃣ 找到 session id 后

onmode -z <sid>

三、杀操作系统进程(不推荐 ⚠️)

只有在 数据库已经异常、无法登录 时才考虑。

1️⃣ 查看 Informix 进程

onstat -g glo
ps -ef | grep oninit

典型进程:

oninit
oninit -p
oninit -s

⚠️ 不要 kill oninit 主进程


2️⃣ 杀单个会话对应的 OS 进程

kill -15 12345

如果无效:

kill -9 12345

⚠️ 风险

  • 可能留下锁
  • 可能损坏事务
  • 需要重启实例才能恢复

四、杀死锁(Lock Wait)

查看锁

onstat -k

查看等待锁的会话

onstat -u

杀掉阻塞源会话

onmode -z <sid>

五、强制关闭整个 Informix 实例(最后手段 ❌)

onmode -k

或强制:

onmode -ky

⚠️ 会中断所有连接


六、总结(推荐顺序 ✅)

场景 正确做法
杀用户会话 onmode -z sid
杀慢 SQL 查 sid → onmode -z
杀死锁 查阻塞会话 → onmode -z
数据库异常 最后才 kill -9
正常维护 不要直接 kill

如果你愿意,可以告诉我:

  • Informix 版本
  • 杀某个用户 / 某条 SQL / 死锁 / 整个实例
  • onstat -g ses 输出

我可以帮你精确判断该杀哪个 ✅

0