OSX Cron causando o seguinte erro: Não foi possível configurar a porta especial da tarefa Mach 9: (os / kern) sem acesso

3

Alguma idéia de como resolver o erro exibido no arquivo system.log do Mac OSX? Ou até mesmo o que significa o erro?

Eu tenho o seguinte trabalho cron executado a cada minuto:

* * * * * cd /Library/[...]/report/ && nice -n 15 /usr/local/php5/bin/php -f report_generator.php > /dev/null 2>&1

Pesquisas pela Internet mencionando comentar o trabalho do cron, mas na minha causa eu não posso fazer isso. A maioria dos Google os resultados da pesquisa também não têm uma menção conclusiva sobre o que o erro realmente significa.

O erro completo é:

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

    
por Darryl Hein 02.07.2009 / 22:51

3 respostas

2

Estou ciente de que isso não corrigirá o problema original, mas esperamos que ele nos diga se o problema é um bug em launchd ou qualquer outra coisa.

Já tentou remover o trabalho cron e reinstitui-lo como um trabalho launchd adequado? launchd deve executar os trabalhos cron , mas parece que você pode estar com problemas.

Você pode criar um trabalho launchd usando uma GUI, como o Lingon , se preferir, em vez de fazer o .plist você mesmo .

Sample .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>

Do meu Google, parece que é um erro em launchd executando cron jobs. Fonte: 1

StartInterval simplesmente executará esse intervalo de segundos a partir da última execução do trabalho. StartCalendarInterval permitirá que você o execute em horários definidos e, em vez do <key>StartInterval</key> no exemplo acima, use o seguinte:

Executar apenas às 3:15

 <key>StartCalendarInterval</key>
 <dict>  
     <key>Hour</key>
     <integer>3</integer>
     <key>Minute</key>
     <integer>15</integer>
</dict>

Execute a cada 5 minutos - StartCalendarInterval com uma matriz. (Eu não sei de uma maneira melhor de escrever isso, então eu adoraria alguém para elaborar sobre isso)

 <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>

Para obter mais informações, consulte a seção Migrando do cron na documentação de launchd e página man

    
por 03.07.2009 / 07:28
1

A entrada no log do sistema parece ser feita pelo próprio aplicativo launchd, com o subprocesso (filho) da tarefa cron em colchetes. A entrada não está vinculada a nenhuma tarefa cron em particular, mas acontece em todas as ocasiões em que qualquer tarefa cron é executada: tenho tarefas executadas uma vez por dia e uma tarefa a cada 5 minutos, com entradas de log ( Não foi possível configurar a porta especial 9 da tarefa Mach: (os / kern) sem acesso ) em todas as ocasiões. O problema deve fazer parte do procedimento de execução de uma tarefa cron (externa a essa tarefa cron) e, provavelmente, deve ser encontrado em um dos arquivos lib que fazem parte do processo cron, como '/ System / Library / Frameworks / CoreFoundation.framework / Versions / A / CoreFoundation ', por exemplo. É improvável que o problema faça parte do launchd, pois ele ocorre apenas quando o cron é invocado.

Embora seja complicado, a melhor maneira de parar as entradas de log, enquanto permite que os jobs sejam executados, é cortar o intermediário (cron) e executar o job diretamente a partir do launchd. Exemplos de como conseguir isso são numerosos (veja acima, para começar)!

    
por 09.10.2009 / 09:05
0

Darryl,

Sem saber o que esse script faz (ou quem é o crontab), sugiro que você primeiro tente executá-lo a partir da linha de comando como esse usuário.

De improviso, parece que é uma coisa de permissão. Você pode fornecer mais informações?

Mais pesquisas revelaram dois tópicos no fórum sobre o assunto:

link

link

Espero que ajude!

    
por 02.07.2009 / 23:10