需要用到Jsch
public static String getProcessPid(String processFilter,boolean isJavaProcess, HostEntity hostEntity){
Session connect = null;
String res = null;
try {
String cmd;
if(isJavaProcess){
cmd = "/home/bigdata/bin/get_pid.py java "+processFilter;
}else {
cmd = "/home/bigdata/bin/get_pid.py "+processFilter;
}
connect = RemoteLinuxUtil.connect(hostEntity.getIp(), hostEntity.getUsername(), hostEntity.getPassword(), hostEntity.getSshPort());
List<String> strings = RemoteLinuxUtil.execCmd(connect, cmd, "utf-8");
if(strings.size() > 0){
res = strings.get(0);
}
} catch (JSchException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
if(connect!=null){
RemoteLinuxUtil.close(connect);
}
}
return res;
}
简单的脚本
#!/usr/bin/python2
# _*_coding:UTF-8_*_
import os
import sys
def get_pid():
res = os.popen("ps -ef|grep {}|{}".format(process_name, "awk '{print $2}'")).readlines()
result(res)
def get_java_pid():
res = os.popen("jps|grep {}|{}".format(process_name, "awk '{print $1}'")).readlines()
result(res)
def result(res):
if res.__len__() > 0:
print res[0].replace("\n", "")
else:
print 'unknow'
if __name__ == '__main__':
if sys.argv.__len__() >= 3:
process_name = sys.argv[2]
get_java_pid()
else:
process_name = sys.argv[1]
get_pid()