pkill -n java在控制台工作但不在脚本中工作

时间:2014-12-23 14:47:57

标签: bash scripting

我正在尝试编写一个运行java程序“循环”的脚本,然后在5秒后终止该java程序,但是,当我使用“pkill”选项时它不会终止程序,我是抱歉提出这样一个基本问题,我已经浏览了互联网,但我找不到解决方案。这是我的代码:

#!/bin/bash
javac Loop.java
java Loop
sleep 5
pkill -n java

当我从终端运行命令pkill -n java而不是脚本时,它按照我的预期运行,为什么会这样?

2 个答案:

答案 0 :(得分:2)

您的bash脚本正在等待java完成,因此您需要将其作为后台进程运行,后台进程将启动您的Loop代码,然后立即返回,允许您的其余脚本运行:

java Loop &

更多信息:http://tldp.org/LDP/abs/html/x9644.html

答案 1 :(得分:0)

由于您在前台运行java Loop,因此在JVM退出之前不会执行下一行sleep 5(如果Loop实际上是无限循环,则可能永远不会执行)。

所以你需要在后台开始:

java Loop &

此外,为了杀死特定的后台作业(而不是杀死最新的JVM),你可以这样做:

kill $!
相关问题