Есть идеи, как исправить ошибку, которая появляется в файле Mac OSX system.log? Или еще что означает ошибка?
У меня есть следующее задание cron, которое запускается каждую минуту:
* * * * * cd /Library/[...]/report/ && nice -n 15 /usr/local/php5/bin/php -f report_generator.php > /dev/null 2>&1
Поиск в Интернете с упоминанием комментирования работы cron, но в моем случае я не могу этого сделать. Большинство Результаты поиска Google также нет окончательного упоминания того, что на самом деле означает ошибка.
Полная ошибка:
Jul 2 14:50:00 xserve2 com.apple.launchd[1] (0x10c3f0.cron[46328]): Could not setup Mach task special port 9: (os/kern) no access
Mac OSX 10.5
Я знаю, что это не совсем исправит исходную проблему, но, надеюсь, нам сообщит, является ли проблема ошибкой в launchd
или что-то другое.
Вы пытались удалить cron
работу и восстановить ее как должное launchd
вместо работы? launchd
предполагается запустить cron
jobs, но похоже, что вы столкнулись с ошибкой.
Вы можете создать launchd
задание с помощью графического интерфейса, например Лингон если вы предпочитаете самостоятельно создавать .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>test.dood.123</string>
<key>ProgramArguments</key>
<array>
<string>cd</string>
<string>/Library/REMOVED/DIRS/report/</string>
<string>&&</string>
<string>nice</string>
<string>-n</string>
<string>15</string>
<string>/usr/local/php5/bin/php</string>
<string>-f</string>
<string>report_generator.php</string>
<string>></string>
<string>/dev/null</string>
<string>2>&1</string>
</array>
<key>StartInterval</key>
<integer>60</integer>
</dict>
</plist>
Судя по моему поиску в Google, это похоже на ошибку в launchd
Бег cron
рабочие места. Источник: 1
StartInterval просто запустит его через столько секунд после последнего запуска задания. StartCalendarInterval позволит вам запускать его в установленное время и вместо <key>StartInterval</key>
в приведенном выше примере используйте следующее:
Запускать только в 3:15
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>3</integer>
<key>Minute</key>
<integer>15</integer>
</dict>
Запускать каждые 5 минут - StartCalendarInterval с массивом. (Я не знаю лучшего способа написать это, поэтому я хотел бы, чтобы кто-нибудь подробно рассказал об этом)
<key>StartCalendarInterval</key>
<array>
<dict>
<key>Minute</key>
<integer>0</integer>
</dict>
<dict>
<key>Minute</key>
<integer>5</integer>
</dict>
<dict>
<key>Minute</key>
<integer>10</integer>
</dict>
<dict>
<key>Minute</key>
<integer>15</integer>
</dict>
<dict>
<key>Minute</key>
<integer>20</integer>
</dict>
<dict>
<key>Minute</key>
<integer>25</integer>
</dict>
<dict>
<key>Minute</key>
<integer>30</integer>
</dict>
<dict>
<key>Minute</key>
<integer>35</integer>
</dict>
<dict>
<key>Minute</key>
<integer>40</integer>
</dict>
<dict>
<key>Minute</key>
<integer>45</integer>
</dict>
<dict>
<key>Minute</key>
<integer>50</integer>
</dict>
<dict>
<key>Minute</key>
<integer>55</integer>
</dict>
</array>
Дополнительные сведения см. В разделе «Переход с cron» на странице документация для launchd и страница руководства
Кажется, что запись в системном журнале сделана самим запущенным приложением, при этом (дочерний) подпроцесс задания cron в скобках. Запись не привязана к какому-либо конкретному заданию cron, но происходит каждый случай, когда выполняется любое задание cron: у меня есть задания, которые запускаются один раз в день, и задание, которое запускается каждые 5 минут, с записями журнала (Не удалось настроить специальный порт 9 задачи Mach: (os / kern) нет доступа) в каждом случае. Проблема должна быть частью процедуры запуска задания cron (внешнего по отношению к этому заданию cron) и, вероятно, находится в одном из файлов lib, которые являются частью процесса cron, например '/ System / Library / Frameworks / CoreFoundation.framework / Versions / A / CoreFoundation ', например. Маловероятно, что проблема связана с launchd, поскольку она возникает только при вызове cron.
Каким бы запутанным это ни было, лучший способ остановить записи журнала, разрешив выполнение заданий, - это исключить посредника - cron - и запустить задание прямо из launchd. Примеров того, как этого добиться, очень много (для начала см. Выше)!
Дэррил,
Не зная, что делает этот скрипт (или кто это такой crontab), я предлагаю вам сначала попробовать запустить его из командной строки от имени этого пользователя.
Навскидку, похоже, дело в разрешениях. Вы можете предоставить дополнительную информацию?
Более подробный поиск выявил две темы на форуме по этой теме:
http://discussions.apple.com/thread.jspa?threadID=1224189&start=0&tstart=0
http://discussions.apple.com/thread.jspa?messageID=5666826�
Надеюсь, это поможет!