Назад | Перейти на главную страницу

Что делает #! / 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» будет означать, что автоматический запуск разрешен.

Обычно в chrooted средах этот код выхода установлен на 101, чтобы предотвратить запуск демонов. Вот полезная ссылка для получения дополнительной информации: https://people.debian.org/~hmh/invokerc.d-policyrc.d-specification.txt