有什么方法可以将进程名称从 ksh 更改为脚本名称“lx_dequeue”之类的名称。 我们有一个监控应用程序运行在 AIX 服务器上,它的作用是监控进程。 但它无法监控某些进程,因为我们的监控应用程序使用 Java Sigar API,并且无法获取按名称“lx_dequeue”搜索的进程的 PID。 'lx_dequeue' 是一个 shell 脚本,使用 '/oracle/oracle8/bin/lx_dequeue' 启动。
Sigar API 可以通过搜索关键字“ksh”而不是“lx_dequeue”来检测进程的 PID。 我们不能使用“ksh”作为搜索关键字,因为许多其他进程具有相同的进程名称“ksh”,我需要仅针对此特定进程将其更改为“lx_dequeue”。 我该怎么办,有什么办法吗?
进程运行时,ps -e 显示为,
# ps -e | grep 64356914
64356914 - 0:00 ksh
还有 ps -ef as,
# ps -ef | grep -i "lx_dequeue"
mxuser 64356914 1 0 Jun 04 - 0:00 /bin/ksh /oracle/oracle8/bin/lx_dequeue
更新: 查看 Sigar API 文档后问题得到解决。我更改了流程搜索表达式,如下所示,它起作用了。 来自:State.Name.sw=lx_dequeue TO:State.Name.sw=ksh,Args.-1.ct=lx_dequeue
不。您需要找到一种方法来指示 Sigar API 使用进程名称和参数的组合来可靠地找到 lx_dequeue 进程。
https://unix.stackexchange.com/a/119991/117549 更详细,但是当调用 lx_dequeue 脚本时,系统会找到
#!/bin/ksh
sh-bang 行并使用 lx_dequeue 重新调用 ksh script 作为其参数。这是您看到执行的最后一个进程:ksh shell 执行该文件中的命令。
如果您可以自定义 Sigar API 搜索,这个
awk
语句应该有助于确定该过程:
ps -eo comm,args | awk '$2 == "/bin/ksh" && $3 == "/oracle/oracle8/bin/lx_dequeue"'