Incluindo crons de aplicativo

3

Eu tenho 5 aplicativos da web. A estrutura de diretórios é semelhante à seguinte:

/var
   '-  /www
            '- /domains
                      '-  /domain1
                                 '- /public_html
                                               '- /crontabs
                                                        '- /crons
                      '-  /domain2
                                 '- /public_html
                                               '- /crontabs
                                                        '- /crons
                      '-  /domain3
                                 '- /public_html
                                               '- /crontabs
                                                        '- /crons
                               .
                               .
                               .
                               .
                               .

Cada aplicativo tem sua própria lista de crons [e esses arquivos contêm sintaxe válida, como crontab -e,]. No momento, como este é um servidor de teste e isolado, todos os aplicativos são executados sob o mesmo usuário. Eu sei sobre crons, /etc/cron.d, /etc/cron.interval (intervalo = por hora | diariamente | semanal), / var / spool / crontabs /.

Minha pergunta: existe uma alternativa para /etc/cron.d mas o usuário específico onde eu poderia apenas ligar simbolicamente esses crons e eles seriam executados? Eu preferiria essa solução, porque esses crons são atualizados às vezes dos desenvolvedores.

No #ubuntu ikonia sugeriu ao Google como poderia incluir crons, eu fiz e não consegui encontrar essa solução. Se pudesse haver um lugar onde eu pudesse fazer:

include /var/www/domains/*/public_html/crontabs/crons

isso seria totalmente incrível.

[EDITAR] Estou aberto a mudar um pouco os arquivos crons.

    
por Shoaibi 03.10.2011 / 17:49

2 respostas

4

Crontabs

nível de raiz podem ser ligados por links simbólicos ao /etc/cron.d/. Tudo nessa pasta é executado como root. É possível que uma entrada crontab no nível raiz seja executada como nível de usuário, mas isso é uma solução alternativa e além do escopo da questão. Um exemplo de tal link simbólico:

# ln -s /path/to/crontab /etc/cron.d/
Crontabs

User-level não podem ser criados por symlink ou qualquer tipo de gerenciamento direto de arquivos - o crontab management é especificamente projetado para evitar que usuários façam isso. Todos os crontabs em nível de usuário devem ser criados usando o comando 'crontab', para que todos os crontabs em nível de usuário sejam verificados quanto à sintaxe e colocados em spool no mesmo lugar.

Feliz , o 'crontab' faz mais do que simplesmente abrir um editor. O comando aceitará arquivos inteiros. Por exemplo, para o usuário que possui $ DomainName,

$ crontab /var/www/$DomainName/public_html

Portanto, deve ser fácil adicionar um crontab no nível do usuário ao script de inicialização do webapp.

No Ubuntu 16.04 e mais recentes , os trabalhos cron estão sendo lentamente substituídos pelos timers do sistema, mas isso também está além do escopo da questão.

    
por user535733 17.01.2012 / 20:51
1

No meu servidor web, dou a cada servidor virtual um usuário linux próprio. Todo usuário linux tem seu próprio crontab.

    
por guettli 17.01.2012 / 22:01

Tags