为何以下K8s的command与args语法存在错误?
Kubernetes中command与args的错误用法解释
错误示例
command: - sh - -c args: - sleep - '36000'
正确示例
command: - sh - -c args: - sleep 36000
错误原因
当使用sh -c作为command时,sh的-c选项要求接收一个完整的命令字符串作为第一个参数,后续的参数会被当作该shell进程的位置变量(如$0、$1),而非传递给要执行的命令。
错误示例中,args被拆分为两个独立元素,相当于执行系统命令:
sh -c sleep 36000
此时sh会把sleep当作要执行的完整命令(无参数),36000会成为该shell进程的$0变量,实际执行的是不带参数的sleep(会立即退出),完全达不到预期的休眠效果。
正确示例中,args是一个完整的字符串,相当于执行:
sh -c "sleep 36000"
sh会解析整个字符串为要执行的命令,正确将36000作为参数传递给sleep,实现预期的休眠功能。
内容的提问来源于stack exchange,提问作者fu7100
相关产品推荐
相关产品推荐

