有没有办法通过只知道名称来停止使用 shell 脚本运行的 java 程序。我正在使用 ksh shell
问问题
10595 次
5 回答
20
跟进Mnementh 的建议:
这应该做的工作
jps -l | grep org.example.MyMain | cut -d ' ' -f 1 | xargs -rn1 kill
jps -l
: 使用“应用程序主类的完整包名或应用程序 JAR 文件的完整路径名”列出 java 进程。grep
: 选择你喜欢的过程cut -d -' ' -f 1
:使用分隔符''将输出拆分为列并仅打印第一个(pid)xargs -rn1 kill
: 对每个 PID 执行 kill (如果有的话)
请注意,您必须在运行进程时使用相同的用户(或 root)运行 jps 和 xargs
于 2010-01-25T11:43:55.023 回答
6
向 JVM 添加一个唯一属性以轻松识别它,例如 test.class
java -Duniquename=1 test
杀死它:
ps ax | grep uniquename | grep -v grep | awk '{print $1}' | xargs kill
于 2010-01-25T11:33:28.543 回答
3
您可以使用 jps 标识与已启动的 java-program 的名称相关联的 process-id(jps 是 java-programs 的 process-manager)。使用此 ID,您可以正常终止该进程。
于 2010-01-25T11:30:01.187 回答
1
您可以使用 pkill:
pkill your_java_program_name
如果您只运行正在运行的程序的一个实例,这将起作用。
于 2010-01-25T11:28:15.043 回答
1
您可以使用 ps 的 -o 选项来格式化输出,
ps -eo cmd,pid | awk '!/awk/&&/mycommand/{cmd="kill -9 "$2;system(cmd)}'
于 2010-01-25T14:32:43.887 回答