Назад | Перейти на главную страницу

OSX Cron вызывает следующую ошибку: не удалось настроить специальный порт 9 задачи Mach: (os / kern) нет доступа

Есть идеи, как исправить ошибку, которая появляется в файле 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>&amp;&amp;</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>&gt;</string>
        <string>/dev/null</string>
        <string>2&gt;&amp;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&#5666826

Надеюсь, это поможет!