Для запуска скриптов/команд вы можете использовать launchd
.
У вас должно быть 2 файла.
1) Сценарии оболочки.
2) plist файл.
Образец изображения: Сохраните его как: com.example.exampld.plist
. Названия меток и 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>Label</key>
<string>com.example.exampled</string>
<key>LaunchOnlyOnce</key>
<true/>
<key>ProgramArguments</key>
<array>
<string>/bin/sh</string>
<string>absolute_path_to_script</string>
</array>
</dict>
</plist>
И поместите его в соответствии с вашими потребностями.
Вот папки:
|------------------|-----------------------------------|---------------------------------------------------|
| User Agents | ~/Library/LaunchAgents | Currently logged in user
|------------------|-----------------------------------|---------------------------------------------------|
| Global Agents | /Library/LaunchAgents | Currently logged in user
|------------------|-----------------------------------|---------------------------------------------------|
| Global Daemons | /Library/LaunchDaemons | root or the user specified with the key UserName
|------------------|-----------------------------------|---------------------------------------------------|
| System Agents | /System/Library/LaunchAgents | Currently logged in user
|------------------|-----------------------------------|---------------------------------------------------|
| System Daemons | /System/Library/LaunchDaemons | root or the user specified with the key UserName
|------------------|-----------------------------------|---------------------------------------------------|
В соответствии с вашими потребностями поместить его либо в 1-й или 2-й папки из списка выше.
Чтобы запустить сценарий, загрузите его с помощью launchctl
или перезапустите mac.
Загрузка и выгрузка сценария:
Заканчивать apple website для ключей, которые могут быть использованы в PLIST.
Надеюсь, это поможет.
Что такое 'keepAlive'? Этот ключ бесполезен для сценариев оболочки. – vadian
@vadian почему? любая причина? – SkrewEverything
Сценарии оболочки не имеют runloop. 'keepAlive' полезен только для процессов с runloop для возобновления процесса, если это необходимо. Кроме того, 'LaunchOnlyOnce' и' keepAlive' противоречивы. – vadian