Debian jessie не может больше приостанавливать

Вы, вероятно, вводят в заблуждение о подлинном значении set -e. Тщательное чтение вывода help set шоу:

-e  Exit immediately if a command exits with a non-zero status.

Так -e о статусе выхода команд, являющихся ненулевым, не о синтаксических ошибках в Вашем сценарии.

В целом это считают плохой практикой для использования set -e, потому что все ошибки (т.е. все ненулевые возвраты из команд) должны быть энергично обработаны сценарием (думайте устойчивый сценарий, не те, которые взбесились после ввода имени файла с пространством, или это запускается с дефиса).

В зависимости от типа синтаксической ошибки сценарий даже не мог бы быть выполнен вообще. Я не достаточно хорошо осведомлен в ударе для сообщения точно, что класс синтаксических ошибок (если только они могут быть классифицированы) мог бы привести к непосредственному прерыванию сценария или нет. Возможно, некоторые гуру Bash присоединятся и разъяснят все.

Я только надеюсь, что разъяснился set -e оператор!

О Вашем желании:

Я ожидал такое безопасное поведение от разумного языка программирования..., возможно, это, как должны сообщать, как ошибка/желание колотит разработчиков

Ответ определенно нет! как, что Вы наблюдали (set -e никакой ответ, как Вы ожидаете) на самом деле очень хорошо документируется.

5
01.09.2014, 10:17
2 ответа

Дольше не рекомендуется не подвешивать / резюме. Это сделано в Logind.

Конечно, у меня есть то, что я считаю правильной версией Systemd (которая предоставляет вход в систему) и правильную версию нагрудной версии, и у меня все еще есть проблемы (хотя и не с хрустящим).

В любом случае убедитесь, что у вас есть как минимум Systemd = 215-5 + B1 , Libpam-Systemd = 215-5 + B1 и PolicyKit-1 = 0.105-7

$ qdbus --system org.freedesktop.login1 /org/freedesktop/login1 org.freedesktop.login1.Manager.CanSuspend
yes
$ qdbus --system org.freedesktop.login1 /org/freedesktop/login1 org.freedesktop.login1.Manager.Suspend true

ETA:, по-видимому, вам также нужен SystemD-Sysv, который собирается разбить вверхству, если у вас есть (это может быть достаточно хорошей заменой, но есть некоторые вещи, которые все еще требуют upstart)

6
27.01.2020, 20:35

Лучше и точный (& Конечно, работа) Попробуйте:

dbus-send --print-reply --system --dest=org.freedesktop.login1 /org/freedesktop/login1 org.freedesktop.login1.Manager.Suspend boolean:true
3
27.01.2020, 20:35

Теги

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