0

我一直在尝试制作自己的“守护程序”Java 线程。

我不能完全得到我想要的东西,所以我很好奇即使在我断开 ssh 连接后 Tomcat 是如何保持活力的。

所以我决定浏览一下 Tomcat 源文件,看看我是否能找到“魔法”。
在 startup.sh 中,我试图在 Internet 上找到一些看起来很奇怪的东西,但没有运气。

在启动.sh

    # resolve links - $0 may be a softlink
PRG="$0"

while [ -h "$PRG" ] ; do
  ls=`ls -ld "$PRG"`
  link=`expr "$ls" : '.*-> \(.*\)$'`
  if expr "$link" : '/.*' > /dev/null; then
    PRG="$link"
  else
    PRG=`dirname "$PRG"`/"$link"
  fi
done

PRGDIR=`dirname "$PRG"`
EXECUTABLE=catalina.sh

# Check that target executable exists
if $os400; then
  # -x will Only work on the os400 if the files are: 
  # 1. owned by the user
  # 2. owned by the PRIMARY group of the user
  # this will not work if the user belongs in secondary groups
  eval
else
  if [ ! -x "$PRGDIR"/"$EXECUTABLE" ]; then
    echo "Cannot find $PRGDIR/$EXECUTABLE"
    echo "The file is absent or does not have execute permission"
    echo "This file is needed to run this program"
    exit 1
  fi
fi 

exec "$PRGDIR"/"$EXECUTABLE" start "$@"
  1. 什么是'$0'?
  2. '$@' 是什么?

他们在做什么 ?
编辑
也许这真的与 OQ 没有太大关系,但我只是想分享我的发现。
分析了 Apache Tomcat 的源代码后,我想通了。我不确定这是否是 Tomcat 实际运行的方式。
我想要的是类似于守护进程的东西。
首先,您需要一个用 java 编写的启动器。在启动器中,创建一个进程并 exec("java yourDaemonToBe");
希望这可以帮助。

4

1 回答 1

0

您正在运行的 shell 脚本的名称是$0argv 在数组中找到$@,即脚本的命令行参数。

于 2013-04-19T07:53:21.760 回答