我正在尝试编写一个运行java程序“循环”的脚本,然后在5秒后终止该java程序,但是,当我使用“pkill”选项时它不会终止程序,我是抱歉提出这样一个基本问题,我已经浏览了互联网,但我找不到解决方案。这是我的代码:
#!/bin/bash
javac Loop.java
java Loop
sleep 5
pkill -n java
当我从终端运行命令pkill -n java而不是脚本时,它按照我的预期运行,为什么会这样?
答案 0 :(得分:2)
您的bash脚本正在等待java
完成,因此您需要将其作为后台进程运行,后台进程将启动您的Loop代码,然后立即返回,允许您的其余脚本运行:
java Loop &
答案 1 :(得分:0)
由于您在前台运行java Loop
,因此在JVM退出之前不会执行下一行sleep 5
(如果Loop
实际上是无限循环,则可能永远不会执行)。
所以你需要在后台开始:
java Loop &
此外,为了杀死特定的后台作业(而不是杀死最新的JVM),你可以这样做:
kill $!