我正在尝试使用监督调用这个shell脚本。当尝试启动进程时,superorctl报告以下错误:
kerby-kdc FATAL退出太快(进程日志可能有详细信息)
我检查了kerby日志,但没有错误报告。
我在/etc/supervisor/supervisord.conf
中配置的进程如下:
[program:kerby-kdc]
command=bash -c "/home/test/kerberos/server/kdc-dist/bin/start-kdc.sh" /home/test/kerberos/server/kdc-dist/conf /home/test/kerberos/server/kdc-dist/runtime
user=test
environment=JAVA_HOME="/usr/lib/jvm/adoptopenjdk-8-hotspot-amd64/bin"
autostart=true
autorestart=true
startsecs=10
startretries=3
这个配置有问题吗?
OP中引用的shell脚本包含以下内容:
java $DEBUG
-classpath target/lib/*:.
-DKERBY_LOGFILE=kdc
org.apache.kerby.kerberos.kdc.KerbyKdcServer -start $args
注意类路径是相对的。当superord尝试执行java命令时,JVM将无法找到类org.apache.kerby.kerberos.kdc.KerbyKdcServer
。这是因为相对于监督执行路径,target/lib
不存在。
类路径必须是绝对的,或者需要在supervisor .conf文件中添加一个classpath环境变量。