Что значит #! / Bin / sh \ nexit 0 "> /usr/sbin/policy-rc.d 'do?

При устранении неполадок при неудачном развертывании Docker я заметил, что эта строка была в Dockerfile. Что именно делает следующая строка?

#!/bin/sh\nexit 0" > /usr/sbin/policy-rc.d
1
задан 3 November 2016 в 02:16
1 ответ

Этот бит кода состоит из четырех компонентов:

1). #! / Bin / sh - это «шебанг», который указывает на конкретный интерпретатор, в котором выполняется последующий код. В этом случае код, который идет после 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

2
ответ дан 3 December 2019 в 20:32

Теги

Похожие вопросы