热搜词
发表于 2024-2-19 19:32:44 | 显示全部楼层 |阅读模式
在对一个失败的Docker部署进行故障排除时,我注意到这一行位于Dockerfile中。下面这一行到底是做什么的?
  1. #!/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 - [reserved]
105 - behaviour uncertain, policy undefined.
106 - action not allowed. Use the returned fallback actions
(which are implied to be “allowed”) instead.


全部评论0
回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|管理员之家 ( 苏ICP备2023053177号-2 )

GMT+8, 2024-11-24 21:45 , Processed in 0.157263 second(s), 22 queries .

Powered by Discuz! X3.5

Cpoyright © 2001-2024 Discuz! Team