De qual usuário devo criar e executar tarefas agendadas como? Apache? Raiz? Eu?

0

Estou configurando um novo servidor Web e tendo problemas para fazer com que o cron seja executado como esperado. Eu estou usando um script para criar tarefas cron em .tmp/crontab.txt , que é então movido para /var/spool/cron sob o usuário "Apache". Essas entradas do Apache não são executadas até onde eu sei.

/var/spool/cron : tem 3 arquivos de usuário:

  • Root 0 bytes

  • Apache 344 bytes (parece ser bom, não é executado).

  • JLee 3514 bytes (é para onde todas as minhas entradas manuais foram)

Os trabalhos manuais que eu programo estão sendo executados normalmente. No entanto, os trabalhos manuais criam um "sub-cron" e esse é o que vai para o Apache. O que estou fazendo errado?

Eu preferiria que todos os trabalhos cron sejam criados sob um usuário, pois eu sou o administrador e o único usuário deste servidor.

    
por Jack Lee 17.09.2015 / 02:57

2 respostas

2

O daemon do cron não lê os novos arquivos se você simplesmente copiá-los. Você deve usar o comando crontab para instalar o novo arquivo crontab. Também sinaliza ao daemon do cron para ler os arquivos.

Na página do manual crontab:

...and though these are files in /var, they are not  intended  to  be
   edited directly.
    
por 17.09.2015 / 07:07
1

Como já foi apontado na resposta de Keith , você não deve colocar arquivos diretamente em /var/spool/cron , pois eles não serão vistos por crond .

Você deve manter sua própria instância do arquivo crontab de um usuário e usar o comando crontab para sinalizar as alterações para crond :

echo '* * * * * date >>/tmp/output' | crontab

Se você puder criar várias entradas, poderá gravar cada uma em seu próprio arquivo e, em seguida, cat os resultados em uma única crontab .

mkdir .crondir
...
echo '* * * * * echo job1 >> /tmp/output.1' > .crondir/job1
echo '* * * * * echo job2 >> /tmp/output.2' > .crondir/job2
echo '* * * * * echo job3 >> /tmp/output.3' > .crondir/job3
cat .crondir/job* | crontab

Obviamente, é necessário que o usuário que está executando o comando crontab tenha direitos para usá-lo. Dependendo de como você configurou seu esquema de permissões para seu aplicativo, pode ser sua própria conta de usuário. Caso contrário, talvez seja necessário ser o usuário do servidor da Web ( apache ) ou possivelmente root .

    
por 17.09.2015 / 08:17