Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
E
etl-ruoshui-bigdata-server
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
etl-ruoshui
etl-ruoshui-bigdata-server
Commits
5ccb8ad6
提交
5ccb8ad6
authored
12月 03, 2025
作者:
吕本才
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
修改获取pid方法引用
上级
3ad56ca2
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
1 行增加
和
97 行删除
+1
-97
ProcessUtil.java
...rc/main/java/com/ruoshui/core/enums/util/ProcessUtil.java
+0
-97
ScriptUtil.java
...src/main/java/com/ruoshui/core/enums/util/ScriptUtil.java
+1
-0
没有找到文件。
ruoshui-core/src/main/java/com/ruoshui/core/enums/util/ProcessUtil.java
deleted
100644 → 0
浏览文件 @
3ad56ca2
package
com
.
ruoshui
.
core
.
enums
.
util
;
import
com.ruoshui.core.enums.log.JobLogger
;
import
com.ruoshui.core.enums.thread.JobThread
;
import
com.sun.jna.Platform
;
import
org.apache.commons.lang3.StringUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
java.io.BufferedReader
;
import
java.io.IOException
;
import
java.io.InputStreamReader
;
import
java.lang.reflect.Field
;
import
java.nio.charset.StandardCharsets
;
/**
* ProcessUtil
*
* @author jingwk
* @version 1.0
* @since 2019/11/09
*/
public
class
ProcessUtil
{
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
JobThread
.
class
);
public
static
String
getProcessId
(
Process
process
)
{
long
pid
=
-
1
;
Field
field
;
if
(
Platform
.
isWindows
())
{
try
{
field
=
process
.
getClass
().
getDeclaredField
(
"handle"
);
field
.
setAccessible
(
true
);
pid
=
Kernel32
.
INSTANCE
.
GetProcessId
((
Long
)
field
.
get
(
process
));
}
catch
(
Exception
ex
)
{
logger
.
error
(
"get process id for windows error {0}"
,
ex
);
}
}
else
if
(
Platform
.
isLinux
()
||
Platform
.
isAIX
())
{
try
{
Class
<?>
clazz
=
Class
.
forName
(
"java.lang.UNIXProcess"
);
field
=
clazz
.
getDeclaredField
(
"pid"
);
field
.
setAccessible
(
true
);
pid
=
(
Integer
)
field
.
get
(
process
);
}
catch
(
Throwable
e
)
{
logger
.
error
(
"get process id for unix error {0}"
,
e
);
}
}
return
String
.
valueOf
(
pid
);
}
/**
* 关闭Linux进程
*
* @param pid 进程的PID
*/
public
static
boolean
killProcessByPid
(
String
pid
)
{
if
(
StringUtils
.
isEmpty
(
pid
)
||
"-1"
.
equals
(
pid
))
{
throw
new
RuntimeException
(
"Pid =="
+
pid
);
}
Process
process
=
null
;
BufferedReader
reader
=
null
;
String
command
=
""
;
boolean
result
;
if
(
Platform
.
isWindows
())
{
command
=
"cmd.exe /c taskkill /PID "
+
pid
+
" /F /T "
;
}
else
if
(
Platform
.
isLinux
()
||
Platform
.
isAIX
())
{
command
=
"kill "
+
pid
;
}
try
{
//杀掉进程
process
=
Runtime
.
getRuntime
().
exec
(
command
);
reader
=
new
BufferedReader
(
new
InputStreamReader
(
process
.
getInputStream
(),
StandardCharsets
.
UTF_8
));
String
line
;
while
((
line
=
reader
.
readLine
())
!=
null
)
{
JobLogger
.
log
(
line
);
}
result
=
true
;
}
catch
(
Exception
e
)
{
logger
.
error
(
"kill pid error {0}"
,
e
);
result
=
false
;
}
finally
{
if
(
process
!=
null
)
{
process
.
destroy
();
}
if
(
reader
!=
null
)
{
try
{
reader
.
close
();
}
catch
(
IOException
e
)
{
logger
.
error
(
"reader close error {0}"
,
e
);
}
}
}
return
result
;
}
}
ruoshui-core/src/main/java/com/ruoshui/core/enums/util/ScriptUtil.java
浏览文件 @
5ccb8ad6
...
@@ -4,6 +4,7 @@ package com.ruoshui.core.enums.util;
...
@@ -4,6 +4,7 @@ package com.ruoshui.core.enums.util;
import
com.ruoshui.core.enums.biz.model.HandleProcessCallbackParam
;
import
com.ruoshui.core.enums.biz.model.HandleProcessCallbackParam
;
import
com.ruoshui.core.enums.log.JobLogger
;
import
com.ruoshui.core.enums.log.JobLogger
;
import
com.ruoshui.core.enums.thread.ProcessCallbackThread
;
import
com.ruoshui.core.enums.thread.ProcessCallbackThread
;
import
com.ruoshui.core.util.ProcessUtil
;
import
java.io.FileOutputStream
;
import
java.io.FileOutputStream
;
import
java.io.IOException
;
import
java.io.IOException
;
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论