在对Docker部署失败进行故障排除时,我注意到这一行在Dockerfile中。 下面的行是做什么的?
#!/bin/sh\nexit 0" > /usr/sbin/policy-rc.d
这个代码有四个组件:
1)。 #!/bin/sh是一个“shebang”,指向后续代码运行的特定解释器。 在这种情况下,shebang之后的代码被发送到Sh,这很可能是Bash(可能是最常见的Linux shell)。
2)。 \n是定义换行符的特殊字符。
3)。 在脚本中使用exit 0来定义它如何结束。 一般来说,退出代码为零意味着程序成功完成(并非总是如此,所以请记住)。
4)。 >是一个Linuxredirect。 有几个操作符可以操纵Stdin,Stdout和Stderr。 在这种情况下,Stdin(在操作员左侧)的结果被发送到一个文件(由操作员右侧的文件名定义)。 这就是如何更新特定的文件。
假设这是一个Debian / Ubuntu发行版, policy-rc.d确定守护进程是否刚刚安装/升级时是否启动/重新启动。 它通过读取退出代码来完成,所以在这个例子中“0”意味着可以自动启动。
通常在chroot环境中,这个退出代码被设置为101,以防止守护进程启动。 以下是更多信息的有用链接: https : //people.debian.org/~hmh/invokerc.d-policyrc.d-specification.txt