使用&符号(&)在后台运行子进程时,运行bash脚本不会返回到终端

前端之家收集整理的这篇文章主要介绍了使用&符号(&)在后台运行子进程时,运行bash脚本不会返回到终端前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个脚本(让我们称之为parent.sh),它对运行 java进程的第二个脚本(child.sh)进行2次调用. child.sh脚本在后台运行,放置一个&在parent.sh中的行尾.但是,当我运行parent.sh时,我需要按Ctrl C返回终端屏幕.这是什么原因?是否与child.sh进程在parent.sh进程下运行这一事实有关.所以parent.sh不会死,直到孩子们这样做?

parent.sh

#!/bin/bash
child.sh param1a param2a &
child.sh param1b param2b &
exit 0

child.sh

#!/bin/bash
java com.test.Main 
echo "Main Process Stopped" | mail -s "WARNING-Main Process is down." user@email.com

如您所见,我不想在后台运行java进程,因为我想在进程终止时发送邮件.从功能的角度来看,如上所述可以正常工作,但我想知道如何在执行parent.sh后让它返回终端.

我最终做的是将parent.sh更改为以下内容
#!/bin/bash
child.sh param1a param2a > startup.log &
child.sh param1b param2b > startup2.log &
exit 0

如果没有您对该问题的建议和根本原因分析,我不会找到这个解决方案.谢谢!

对我不准确的评论道歉. (没有输入,我从记忆中回答,我记得错了.)

猜你在找的Bash相关文章