k8s java 启动参数 ENTRYPOINT 然而加了 exec 的绝妙之处在于: shell 的内建命令 exec 将并不启动新的…

k8s java 启动参数 ENTRYPOINT [“/bin/sh”, “-c” “exec java $JAVA_OPTS -jar /app.jar”] 或者 CMD [“sh”,”-c”,”exec java $JAVA_OPTS -jar /app.jar”] 然而加了 exec 的绝妙之处在于: shell 的内建命令 exec 将并不启动新的shell,而是用要被执行命令替换当前的 shell 进程,并且将老进程的环境清理掉,exec 后的命令不再是 shell 的子进程序,而且 exec 命令后的其它命令将不再执行。从执行效果上可以看到 exec 会把当前的 shell 关闭掉,直接启动它后面的命令。 虽然它与之后的命令(如上 exec java $JAVA_OPTS -jar /app.jar)还是作为 “/bin/sh” 的第二个参数,但 exec 来了个金蝉脱壳,让这里的 java 进程得已作为一个 PID 1 的超级进程,进行使得这个 java 进程可以收到 SIGTERM 信号。或者理解 exec 为 “/bin/sh” 的子进程,但是借助于 exec 让它后面的进程启动在最顶端。 另外,由于通过 “/bin/sh” 的搭桥,命令中的变量(如 $JAVA_OPTS) 也会被正确解析,因此 ENTRYPOINT exec command param1 param2 … 是被推荐的格式。 注意:exec 只会启动后面的第一个命令,exec ls; top 或 exec ls && top 只会执行 ls 命令。

圈主 管理员

热门评论
:
该帖子评论已关闭
图片审查中...
编辑答案: 我的回答: 最多上传一张图片和一个附件
x
x
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索