Скрипт для выключения Mac

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

Спасибо

Ok,

Это код приложения, который я использую для выключения Mac. Я добавил его как мероприятие iCal, которое проводится каждую ночь.

tell application "System Events" to set the visible of every process to true

set white_list to {"Finder"}

try
    tell application "Finder"
        set process_list to the name of every process whose visible is true
    end tell
    repeat with i from 1 to (number of items in process_list)
        set this_process to item i of the process_list
        if this_process is not in white_list then
            do shell script "killall \"" & this_process & "\""
        end if
    end repeat
on error
    tell the current application to display dialog "An error has occurred!" & return & "This script will now quit" buttons {"Quit"} default button 1 with icon 0
end try



tell application "System Events"
    shut down
end tell

person blue-sky    schedule 06.04.2011    source источник
comment
возможный дубликат Как безопасно принудительно завершить работу Mac   -  person bummi    schedule 13.09.2014


Ответы (4)


Не могли бы вы попробовать простой яблочный скрипт, который выглядит примерно так ...

tell application "System Events"
shut down
end tell

Посмотрите, работает ли он, а затем вы можете запустить его через Automator в определенное время и т. Д.

person notthetup    schedule 06.04.2011
comment
Или подождите ... проблема в том, что такой вызов отменяется из-за всех других программ, которые отменяют сон? - person notthetup; 06.04.2011
comment
Да, вот в чем проблема. Похоже, что вызов отменяется из-за запуска других программ, в результате чего завершение работы отменяется. Ничего из вышеперечисленного не помогло. Спасибо за ваши комментарии. - person blue-sky; 07.04.2011
comment
В ПОРЯДКЕ. Можете ли вы попробовать проверить, помогает ли запуск этого сценария перед завершением работы обойти проблему с приложениями, отменяющими завершение работы .. stackoverflow.com/questions/495323/ - person notthetup; 07.04.2011

мое решение (немного поздно). Просто сценарий bash с яблоком в нем:


#!/bin/bash
# OK, just shutdown all ... applications after n minutes
sudo shutdown -h +2 &
# Try normal shutdown in the meantime
osascript -e 'tell application "System Events" to shut down'

Я также отредактировал файлы / etc / sudoers (и / private / etc / sudoers) и добавил строку: ALL = NOPASSWD: / sbin / shutdown

Всегда работал у меня для гарантированного выключения (тук-тук ;-))

person job    schedule 21.11.2012

Это должно делать:

do shell script "shutdown" with administrator privileges

Если вы хотите передать пароль администратора из цепочки ключей без запроса:

do shell script "shutdown" with administrator privileges password "password here"

Но не храните пароль администратора в открытом виде. Вместо этого используйте доступ к связке ключей.


В качестве альтернативы вы можете убить все пользовательские процессы с помощью:

do shell script "kill -9 -1"

Однако это также убьет ваш собственный процесс Applescript, не позволяя ему впоследствии запрашивать выключение / перезапуск.

В любом случае вы играете с огнем, используя sudo или kill.

person Regexident    schedule 06.04.2011
comment
sudo reboot - это не перезапускает Mac? - person blue-sky; 06.04.2011
comment
Фиксированный. Используйте sudo halt для сна, sudo restart для перезапуска или sudo shutdown для завершения работы. - person Regexident; 06.04.2011
comment
... вам не нужен sudo с правами администратора, вы уже root. Также reboot для перезапуска. halt - менее осторожный shutdown, а не сон, который pmset sleepnow. - person Nicholas Riley; 06.04.2011
comment
Спасибо исправлено. Мои путешествия по миру Applescript были давними. На самом деле я доволен этим. :П - person Regexident; 06.04.2011

делайте то, что делают пользователи Linux. используйте сценарий bash. если вы не знаете, как его создать, просто скачайте ЛЮБОЙ сценарий bash, который вы найдете с помощью поиска в Интернете, откройте его с помощью приложения для редактирования текста и вставьте следующее:
(будьте осторожны, если многие люди используют компьютер, то этот метод не рекомендуется, потому что они могут узнать ваш пароль для входа в этот скрипт)

#!/bin/bash

echo -n "Enter a number > "
read x
echo [your password] | sudo -S shutdown -h +$x

он будет работать так же, как и в Linux. на терминале появится сообщение с просьбой ввести номер. если мы выберем exaple 50, то компьютер (niresh) или Mac отключится через 50 минут.

person Pavlos Theodorou    schedule 15.11.2014