| OSX 10.10.5] Выполнение скрипта останавливается при заблокированном экране?

9

Я запустил скрипт, который занимает много времени в терминале.

Я хотел запустить его без присмотра, пока работал вне моего MacBook, поэтому я выбрал в меню (вверху справа) имя пользователя > Окно входа в систему ... , которое НЕ выходит из системы, а является экраном блокировки.

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

Ожидаемое поведение (известное из других производных UNIX) должно было выполняться, пока пользовательский интерфейс был заблокирован и защищен.

Как мне этого добиться?

СЗ
источник

Ответы:

1

Вы правы в том, что быстрое переключение пользователей (активируется путем нажатия « Имя пользователя» → « Окно входа в систему»… не выводит вас из системы. Однако оно приостанавливает активно запущенные приложения, предотвращая тем самым интенсивные задачи (или даже воспроизведение мультимедиа), мешающие использованию вашей системы другим пользователем).

Вместо этого вы хотите заблокировать экран с помощью Keychain Access .

Нажмите ⌘ cmd space, а затем, Keychain Accessчтобы запустить приложение. Затем в строке меню нажмите Доступ к цепочке для ключейНастройкиОбщие и проверьте Show keychain status in menu bar .

Значок замка появится в системной области панели меню. Просто нажмите Lock Screen, чтобы заблокировать экран.

Экран блокировки

Что касается @MJK , вам также может понадобиться запретить вашему Mac спать перед уходом.


источник
7

РЕДАКТИРОВАТЬ: С MacOS High Sierra ( начиная с бета-версии 5) вы можете добиться того же поведения «экрана блокировки», о котором упоминал @Phong, просто через меню строки состояния::


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

Чтобы предотвратить спящий режим вашей системы во время работы сценария, вы можете запустить его caffeinate -sв терминале (примечание: работает только на MacBook, если подключено питание переменного тока) или включить его в свой сценарий. Чтобы остановить команду, нажмите CTRL + C.

Чтобы защитить свою учетную запись, когда я все еще вошел в систему, я должен включить опцию «требовать пароль» в системных настройках:

запрашивать пароль

Затем, как только дисплей (не система) переходит в спящий режим (также настраивается в настройках), вам необходимо ввести пароль для доступа к учетной записи.

Вы также можете вручную запустить спящий режим дисплея, нажав сочетание клавиш CTRL + SHIFT + EJECT (если на клавиатуре есть кнопка извлечения) или запустившись pmset displaysleepnow.

МЖК
источник
В меню Apple также есть кнопка режима сна, если это поможет.
DonielF
1
@DonielF Действительно, но это приводит систему в спящий режим, в результате чего выполнение сценария останавливается. Это также может быть вызвана через CMD + Option + EJECT
МЖК
Эта кнопка не переводит дисплей в спящий режим? Хорошо знать.
DonielF
2
@DonielF Кроме того , чтобы поставить систему , чтобы спать также ставит дисплей спать
МЖК