使用supervisord调用bash脚本启动kerby-kdc报错该如何解决?
配置问题说明
你的配置存在4处明显问题:
command参数格式错误:使用bash -c时,需要将完整的执行命令(含脚本传入的配置目录、运行时目录参数)全部包裹在引号内。你当前的写法仅将脚本路径放入引号,后续两个参数并未传递给start-kdc.sh,脚本因缺少必要启动参数直接退出。JAVA_HOME环境变量配置错误:JAVA_HOME需要指向JDK的根目录,而非其下的bin目录。你当前配置会导致脚本寻找Java程序时路径拼接错误,无法找到可执行文件,启动失败。- 未适配supervisord的前台运行要求:默认的
start-kdc.sh启动后会将Kerby KDC进程放到后台运行,脚本本身执行完成就会退出,supervisord检测到启动的主进程退出,就会判定为启动失败。 - 缺少supervisord侧的日志输出配置:你没有配置进程的标准输出、错误输出日志路径,启动阶段的报错不会输出到Kerby自身的业务日志中,导致你无法排查问题。
修正后的配置参考
[program:kerby-kdc] # 若start-kdc.sh支持前台运行参数(如-f/--foreground),优先使用对应参数替代& wait写法 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 & wait" user=test environment=JAVA_HOME="/usr/lib/jvm/adoptopenjdk-8-hotspot-amd64" autostart=true autorestart=true startsecs=10 startretries=3 stdout_logfile=/var/log/supervisor/kerby-kdc.log stderr_logfile=/var/log/supervisor/kerby-kdc.err.log
内容的提问来源于stack exchange,提问作者James
相关产品推荐
相关产品推荐

