служба launchd выполнить команду bash на Mac - PullRequest
0 голосов
/ 17 октября 2019

Я пытаюсь запустить службу на моем Mac. Эта служба должна выполнить сценарий bash.

У меня есть следующее:

watcher.service

[Unit]
Description=Watcher service - used to copy error logs

[Service]
Type=simple
ExecStart=watcher.sh

В той же директории у меня есть:

watcher.sh

# File to output to
ErrorLogFile="./error.log"
# File to read from
ExampleLogFile="./example.log"


if [ ! -e "$ErrorLogFile" ]; then   # check if file exists
    echo "Creating error file $ErrorLogFile"
    touch $ErrorLogFile
fi

echo "copying error messages from $ExampleLogFile to $ErrorLogFile"
# copy from one file to the other
while :; do grep ERROR $ExampleLogFile > $ErrorLogFile; sleep 2; done

echo "done"

Из терминала я иду в тот же каталог и запускаю:

sudo launchctl start watcher

Ничего не происходит.

Если я запускаю из терминала следующее:

sudo watcher.sh

Он работает как положено (то есть echo выводится на терминал, а строки копируются в файл.

Я думаю, что проблема в том, что ExecStart в службе не выполняет сценарий watcher.sh.

Вопрос

Как я могу получитьслужба для выполнения сценария bash?

...