Как я могу преобразовать crontab Linux в MacOS X plist? - PullRequest
0 голосов
/ 26 октября 2019

Я создал файл .plist, который загружает файл .sh, который, в свою очередь, вызывает следующий crontab в стиле Linux:

# REDCap Cron Job (runs every minute) * * * * * /usr/bin/php /Applications/MAMP/htdocs/redcap/cron.php > /dev/null

(5 звездочек)

Я добавил следующую строку в конце crontab-test.sh:date >> /tmp/REDCapTest1.out

Каждую минуту файл Err добавляет эту строку:

/ Users / dhinostroza / bin / crontab-test.sh: строка 2: Приложения: команда не найдена

И каждую минуту файл Out генерирует запрошенную дату и время, например:

Пт 25 октября 09:32:50 -05 2019

Последний / var / logОтчеты /system.log:

25 октября 23:30:15 ssd com.apple.xpc.launchd [1] (com.redcap.crontabtest [679]): не удалось найти и / или выполнить программууказано службой: 2: Нет такого файла или каталога: / usr / bin / php /Applications/MAMP/htdocs/redcap/cron.php

25 октября 23:30:15 ssd com.apple.xpc. launchd [1] (com.redcap.crontabtest [679]): Событие настройки службы для обработки сбоя и не запустится до его запуска.

25 октября 23:30:15 ssd com.apple.xpc.launchd[1] (com.redcap.crontabtest [679]): Служба вышла с ненормальным кодом: 78

Итак, я предполагаю, что старый формат crontab должен быть преобразован в plist XML для запуска, чтобы понять его. Если бы я мог переписать задание crontab в файл plist, мне бы не понадобился .sh, но я не знаю как.

Может кто-нибудь дать мне некоторое представление об этом?

Best,

Daniel

UPDATE: я заменил .sh в plist, чтобы вместо этого напрямую вызывать php. Вот весь список:

<?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.redcap.crontabtest</string>

  <key>ProgramArguments</key>
  <array>
     <string>php</string>
     <string>/usr/bin/php</string>
     <string>/Applications/MAMP/htdocs/redcap/cron.php</string>
  </array>

  <key>Nice</key>
  <integer>1</integer>

  <key>StartInterval</key>
  <integer>60</integer>

  <key>RunAtLoad</key>
  <true/>

  <key>StandardErrorPath</key>
  <string>/tmp/REDCapTest1.err</string>

  <key>StandardOutPath</key>
  <string>/tmp/REDCapTest1.out</string>
</dict>
</plist>

тоже не работает. Возможно, мне все еще нужно включить часть '> dev / null' ... Файл plist основан на этой записи и проверен с использованием Launchcontrol.app .

...