java 获取指定的进程id

java 获取指定的进程id,第1张

package test;

import javaioBufferedReader;

import javaioFile;

import javaioFileWriter;

import javaioIOException;

import javaioInputStream;

import javaioInputStreamReader;

import javaioPrintWriter;

public class GetPid {

private static final String PNAME = "QQ";

public static void main(String[] args)

throws IOException {

Systemoutprintln("包含关键字 "+PNAME+" 的进程有:");

Systemoutprintln();

String path = SystemgetProperty("userdir");

final File createFileName = new File(path + "\\mytempscriptvbe");

if(createFileNameexists()createFileNamedelete():createFileNamecreateNewFile()){}

final PrintWriter pw = new PrintWriter(new FileWriter(createFileName,

true), true);

pwprintln("for each ps in getobject(\"winmgmts:\\\\\\root\\cimv2:win32_process\")instances_");

pwprintln("wscriptecho pshandle&vbtab&psname");

pwprintln("next");

pwclose();

final InputStream ii = RuntimegetRuntime()exec(

"cscript " + path + "\\mytempscriptvbe")getInputStream();

final InputStreamReader ir = new InputStreamReader(ii);

final BufferedReader br = new BufferedReader(ir);

String str = null;

String[] ss = null;

while ((str = brreadLine()) != null) {

if (strindexOf(PNAME)>0&&strendsWith("exe")) {

ss = strsplit("\\s");

for(int i=0;i<sslength;i+=2){

Systemoutprintln("");

Systemoutprintln("进程名:"+ss[i+1]+"\n进程ID:"+ss[i]);

}

}

}

Systemoutprintln("");

irclose();

iiclose();

brclose();

}

}

运行结果如下

包含关键字 QQ 的进程有:

进程名:QQexe

进程ID:3956

执行下列命令语句

sqlplus / as sysdba <<EOF

create tablespace test datafile '/data/test01dbf' size 10240M;

quit;

EOF

通过ps -ef|grep sqlplus命令得到上面所执行的命令的进程id为:12345

(1)关于v$process

执行下面的SQL是查不到相关的信息:

select from v$process where spid='12345';

因为这个spid字段对应的并不是我们用ps命令从系统中查询到的进程id,而是这个进程执行的当前SQL的进程id,

也就是上面命令中的“create tablespace test datafile '/data/test01dbf' size 10240M;”所对应的进程id,如果想

通过用ps命令从系统中查询到的进程id查看对应的信息,那么必须使用下面语句

select spid,sid,process,sql_address from v$session where process='12345'

上面sql中的process就是通过ps查看的进程id,而spid就是里面的sql语句所对应的进程id。

还可以通过上面的sql_address 查看正在执行的SQL语句内容:

select sql_text from v$sqlarea s,v$session ses where saddress=sessql_address and sesprocess='12345';

man ps可以看到NOTES里有\x0d\If the length of the username is greater than the length of the display column, the numeric user ID is displayed instead\x0d\\x0d\你的用户名长度超过8个字符了\x0d\\x0d\要配置,就定制你的输出格式了,man ps都有详细解释\x0d\要学会用man

以上就是关于java 获取指定的进程id全部的内容,包括:java 获取指定的进程id、oracle 中如何获得一段SQL的进程ID、linux ps查看进程显示的是用户ID而不是用户名是怎么回事等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10152547.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存