Оказывается, в /etc/init.d/gunicorn был сценарий, который создавал и давал права доступа к каталогу каждый раз при запуске gunicorn. Я просто изменил разрешения в этом файле, и все работает нормально. Это было действительно сложно найти
Как я вижу в этом сценарии. Он просто проверяет, включен ли sudo, вот и все..
true просто возвращает true.
Таким образом, в этом случае, если им нужно запустить какую-либо команду с помощью sudo, он сначала проверяет при запуске, запрашивая пароль только один раз.
Условие работает следующим образом :Если sudo правильно выполняет команду true, она вернет true для условия if,тогда sudo включен и пользователь ввел пароль правильно, иначе вы ввели неправильный пароль или sudo не включен, сценарий не должен продолжаться.
Другим командам не нужно спрашивать пароль sudo, потому что ваша аутентификация прошла успешно с первого раза (но это зависит от конфигурации sudo, поэтому эти скрипты сильно зависят от конфигурации среды)
Это также демонстрирует эхо-пароль. сценарий оболочки больше не будет запрашивать пароль.
true
в bash — это не ключевое слово, это программа, которая мгновенно завершает работу с успешным кодом выхода. Точно так же false
— это программа, которая завершается с неудачным кодом выхода.
Вы можете попробовать это, запустив обе программы с вашего терминала, а затем прочитав переменную $?
, которая содержит код выхода последней программы;
true
echo $? # 0
false
echo $? #1
if sudo true
не эквивалентно if sudo == true
. if sudo true
запускает программу true
, используя sudo
, и проверяет код выхода.
Поэтому:
if sudo false; then
запускает программу false
как sudo. Возврат всегда будет ложным.
if sudo true == false
запустит программу true
с аргументами ==
и false
, используя sudo
. Это явно не то, чего вы хотели.
if [!(sudo true)]
недопустимый синтаксис.
Вероятно, вы ищете
if ! sudo true;
Я чувствую, что принятый ответ на самом деле не отвечает на ваш вопрос?
Целью этого является проверка того, sudo
что вы действительно можете sudo
.
Как эта проверка выполняется с помощью программы true
, как объяснено в принятом ответе.