Bash脚本(使用Java命令)不会退出(脚本2)

昆汀·莫里尔

我启动了一个bash脚本(以glassfish用户身份从Java同步启动),该脚本触发了另一个bash脚本:

从Java执行的脚本1:

#!/bin/bash

#Start script2 as myUser on myUser desktop
echo myPassword | su -c "export DISPLAY=:0.0;xhost +localhost;script2.sh;" myUser &
echo "After subscript"
#---------------
#... other tasks
#---------------
echo "Before exit"
exit 0

从脚本1执行的脚本2

#!/bin/bash

# Start java app with date added by awk at the beginning of every line
java -cp .:./lib/* com.mypackage.MyClass 2>&1 | awk '{print strftime("%D %T",systime())" "$0 }' >> logFile.log &

# Start java app without date added by awk on logs
#java -cp .:./lib/* com.mypackage.MyClass 2>&1 >> logFile.log &

我的问题是,除非我杀死脚本2中启动的Java进程,否则脚本1永远不会退出。如果删除了脚本2中的awk部分(如果使用注释的Java命令行),则不会发生此问题

我正在运行:-Centos 6.4上的GNU bash版本4.2.53(1)-发行版(x86_64-redhat-linux-gnu)-Java 1.6.45 X86_64和Glassfish 3.1.2.2

昆汀·莫里尔

终于我找到了解决方案。

据我了解,这是在脚本2中将两个进程放入后台的方式。它看起来仅适用于awk(这将解释为什么它不使用awk部分就可以工作)。

使用花括号,我可以将两个部分(java和awk)放在后台:

从脚本1执行脚本2:

#!/bin/bash

# Start java app with date added by awk at the beginning of every line
{ java -cp .:./lib/* com.mypackage.MyClass 2>&1 | awk '{print strftime("%D %T",systime())" "$0 }'; } &>> logFile.log &

谢谢大家!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Bash脚本不会在输入命令中退出

来自分类Dev

从使用$()的bash脚本退出

来自分类Dev

确保即使子脚本退出,父bash脚本也不会退出

来自分类Dev

在脚本中退出bash命令而不退出脚本

来自分类Dev

在脚本中退出bash命令而不退出脚本

来自分类Dev

Bash脚本不会循环退出

来自分类Dev

Bash脚本在命令失败时退出(sshpass)

来自分类Dev

可以让 awk 使用`exit 2` 退出 bash 脚本吗?

来自分类Dev

Bash脚本不会在ctrl d上退出

来自分类Dev

执行bash脚本循环而不会错误退出

来自分类Dev

检查bash脚本回显的命令的最后退出代码

来自分类Dev

Bash:在`-e`脚本中保存命令的退出代码

来自分类Dev

检查bash脚本回显的命令的最后退出代码

来自分类Dev

从bash脚本导航/退出命令行配置屏幕

来自分类Dev

在bash脚本中,脚本退出后,在提示符下打印命令(作为建议)

来自分类Dev

在bash脚本中,脚本退出后在提示符下打印命令(作为建议)

来自分类Dev

无法对运行 Python 脚本的 Bash 脚本使用“停止”命令

来自分类Dev

使用killall命令退出脚本是否合乎逻辑?

来自分类Dev

Bash脚本退出清理

来自分类Dev

bash脚本中的退出状态

来自分类Dev

Bash在脚本中退出sudo

来自分类Dev

无法正确退出bash脚本

来自分类Dev

在bash脚本中使用-s命令

来自分类Dev

在执行的命令中使用BASH脚本变量

来自分类Dev

执行bash脚本中使用的命令

来自分类Dev

Shell升级:使用bash的脚本typescript命令

来自分类Dev

bash脚本-执行find命令不会产生任何输出

来自分类Dev

Rar命令的Bash脚本

来自分类Dev

bash脚本的可选命令