是否有可能调用一个bash shell脚本使用监督?



我正在尝试使用监督调用这个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环境变量。