首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Bash脚本(使用java命令)不退出(脚本2)

Bash脚本(使用java命令)不退出(脚本2)
EN

Unix & Linux用户
提问于 2015-08-06 07:46:47
回答 1查看 1.9K关注 0票数 1

我启动一个bash脚本(作为glassfish用户同步地从java启动),它触发另一个bash脚本:

脚本1从java执行:

代码语言:javascript
运行
复制
#!/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

脚本2从脚本1执行

代码语言:javascript
运行
复制
#!/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命令行),则不会出现此问题。

我正在运行:- GNU,版本4.2.53(1)-release ( X86_64 -redhat-linux-gnu),在CentOS6.4- java 1.6.45 X86_64和Glassfish 3.1.2.2上运行。

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2015-08-07 14:54:08

最后我找到了解决办法。

据我所知,这是将两个进程都放在脚本2中的方法。看起来& apply只适用于awk (这将解释为什么它不使用awk部分)。

使用大括号,我可以将两个部分(java和awk)都放在背景中:

从脚本1执行的脚本2:

代码语言:javascript
运行
复制
#!/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 &

谢谢大家!

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/220497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档