Launchd не работает

У меня проблемы с созданием сценария Launchd. Это довольно просто, все, что нужно сделать, это запустить приложение - расположение: /Library/Desktop Pictures/wallpaper

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

Файл plist:

    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>RunAtLoad</key>  
        <true/>
        <key>KeepAlive</key>
        <true/>
        <key>Label</key>
        <string>wallpaper.restart</string>
        <key>ProgramArguments</key>
        <array>
                <string>/Library/Desktop Pictures/wallpaper.wallpaperapp.app</string>
        </array>
        <key>StartCalendarInterval</key>
        <dict>
            <key>Hour</key>
            <integer>1</integer>

       </dict>
</dict>
</plist>

Пожалуйста помоги.

Спасибо, Деванш

РЕДАКТИРОВАТЬ:

Ниже приведена следующая лучшая версия приведенного выше кода, но все равно не очень удачно :(

    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>KeepAlive</key>
    <dict>
        <key>AfterInitialDemand</key>
        <true/>
    </dict>
    <key>Label</key>
    <string>com.plisterine.backgroundchanger</string>
    <key>LowPriorityIO</key>
    <false/>
    <key>Nice</key>
    <integer>0</integer>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/bin/osascript</string>
        <string>/Library/Desktop Pictures/wallpaper/wallpaper.scpt</string>
    </array>
    <key>StartInterval</key>
     <integer>3600</integer>

</dict>
</plist>

person Dev    schedule 24.05.2016    source источник
comment
Это выглядит подозрительно: <string>/Library/Desktop Pictures/wallpaper.wallpaperapp.app</string> Вы уверены, что это правильно?   -  person Craig Smith    schedule 24.05.2016
comment
@CraigSmith Это выглядит очень неправильно. Даже если в этом каталоге каким-то образом есть приложение с именем wallpaper.wallpaperapp.app, это, вероятно, будет пакет приложения, а не двоичный исполняемый файл. Также маловероятно, что он будет работать правильно при запуске из launchd вне сеанса рабочего стола.   -  person    schedule 24.05.2016
comment
@CraigSmith Вы правы, это моя ошибка. Но все равно не работает :(   -  person Dev    schedule 24.05.2016
comment
А как насчет ответа @vadian?   -  person Craig Smith    schedule 24.05.2016
comment
@CraigSmith Лучше, но все еще не работает   -  person Dev    schedule 25.05.2016
comment
Кстати, в моем собственном коде я изменил интервал на 1, чтобы я мог знать, изменился ли он сразу, вместо того, чтобы ждать час.   -  person Dev    schedule 25.05.2016
comment
Какова цель KeepAlive и Nice в этом случае просто для запуска AppleScript? А в какой папке находится файл launchd? Вы также должны учитывать права доступа, поскольку ваш сценарий находится в локальной папке библиотеки.   -  person vadian    schedule 25.05.2016
comment
запустите lanuchctl list, он выдаст вам список всех запущенных процессов. Непосредственно перед процессом вы должны увидеть код состояния (у большинства других будет 0). Найдите этот код и найдите его, вы получите более полное представление о любых проблемах, проверив этот код состояния.   -  person ThrowBackDewd    schedule 02.06.2016


Ответы (1)


StartCalendarInterval запускает скрипт каждый день в определенное время, в вашем случае в 01:00 (1:00).

Чтобы запускать его каждый час, вам нужно написать

<key>StartInterval</key>
<integer>3600</integer>
person vadian    schedule 24.05.2016
comment
Еще дальше ... Ниже приведен обновленный код. По-прежнему не очень везет. - person Dev; 25.05.2016