aix ksh 在没有 nohup.out 的情况下启动 weblogic 服务器并返回底层脚本

aix ksh 在没有 nohup.out 的情况下启动 weblogic 服务器并返回底层脚本

我正在编写一个ksh脚本,其中我想在后台启动weblogic服务器并立即返回到底层脚本(继续执行脚本),如下所示:

nohup path_to_domain_bin/startWebLogic.sh>/dev/null < /dev/null 2>&1

但我的脚本在 nohup 命令后挂起,执行我想要的操作的正确方法是什么?

请注意,我想摆脱 nohup.out。

我在 AIX 7.1 上运行它

答案1

将命令作为后台任务启动,&最后:

nohup path_to_domain_bin/startWebLogic.sh>/dev/null < /dev/null 2>&1 &

正如您所注意到的,输出重定向并没有多大帮助,因为nohup无论如何都会重定向输出。要摆脱这个问题,请跳过nohup并在脚本中执行它所做的事情(而不是它的基本部分):

trap "" 1                            # catch hangup signal
path_to_domain_bin/startWebLogic.sh>/dev/null < /dev/null 2>&1 &

但我对完全丢弃调用程序可能给你的信息有一种不安的感觉。这样,如果调用的路径名错误,您甚至不会收到错误!

我通常将此类输出附加到日志文件中,包括一些附加信息,如下所示:

(
 LOGFILE=/var/log/weblogic_start.log
 trap "" 1                            # catch hangup signal
 exec 1>> $LOGFILE                    # redirect output a bit more readably
 exec 2>> $LOGFILE
 exec < /dev/null

 path_to_domain_bin/startWebLogic.sh &
 date "+%Y%m%d:%H%M%S weblogic started with PID $!"
)

重定向exec更具可读性,这在 IMO 脚本中得到了回报;此外,date呼叫也会被重定向。在子 shell 中运行此命令(...)可确保重定向的效果保留在脚本的这一部分。

相关内容