#!bin/sh\nexit 0“> /usr/sbin/policy-rc.d‘做什么?
在对一个失败的Docker部署进行故障排除时,我注意到这一行位于Dockerfile中。下面这一行到底是做什么的?#!/bin/sh\nexit 0" > /usr/sbin/policy-rc.d
这段代码有四个组件:
1)。#!/bin/sh是一个"shebang“,指向运行后续代码的特定解释器。在本例中,shebang之后的代码被发送到Sh,这很可能是Bash (可能是最常见的Linux )。
2)。\n是定义换行符的一个特殊字符。
3)。exit 0在脚本中用于定义它的结束方式。通常,退出代码为零意味着程序成功完成(并不总是正确的,所以请记住这一点)。
4)。>是一个Linux重定向。有几个操作符可以操作Stdin、Stdout和Stderr。在这种情况下,Stdin (操作符左边)的结果被发送到一个文件(由操作符右侧的文件名定义)。这就是更新特定文件的方式。
假设这是Debian/Ubuntu发行版,如果守护进程刚刚安装/升级,policy-rc.d将确定它是否启动/重新启动。它通过读取退出代码来做到这一点,因此在本例中,"0“意味着自动启动是可以的。
通常,在着色环境中,此退出代码设置为101,以防止启动守护进程。
如果你一定要启动/停止服务,可以将 /usr/sbin/policy-rc.d 文件中的返回值改为0。
0 - action allowed
1 - unknown action (therefore, undefined policy)
100 - unknown initscript id
101 - action forbidden by policy
102 - subsystem error
103 - syntax error
104 -
105 - behaviour uncertain, policy undefined.
106 - action not allowed. Use the returned fallback actions
(which are implied to be “allowed”) instead.
页:
[1]