É possível adicionar diretórios em cron.d?

1

Eu queria particionar um único arquivo cron em unidades lógicas separadas e colocá-las em subdiretórios. Uma pasta em cron.d teria todos os crons associados, digamos, removendo certos tipos de diretórios. Outro subdiretório conteria um cron que lidaria com a verificação do tamanho de determinados diretórios, etc.

É possível ter subdiretórios em cron.d? Por exemplo:

/etc/cron.d/monitoring/cronshere

e

/etc/cron.d/removals/cronshere
    
por mark 22.07.2012 / 13:26

1 resposta

2

Não. Pelo menos esse é o caso do Debian, que usa o Vixie cron. cron(8) tem isto a dizer sobre o diretório cron.d:

The intended purpose of this feature is to allow packages that require finer control of their scheduling than the /etc/cron.{daily,weekly,monthly} directories to add a crontab file to /etc/cron.d. Such files should be named after the package that supplies them. Files must conform to the same naming convention as used by run-parts(8): they must consist solely of upper- and lower-case letters, digits, underscores, and hyphens.

Isso claramente não suporta recursão em subdiretórios. Outros daemons cron podem suportar isso, suponho.

Se você estiver usando um daemon cron que não suporta isso, como provavelmente está fazendo na maioria dos sistemas Linux, eu acho que sua melhor opção pode ser um script simples que usa uma árvore de arquivos de configuração, digamos, /usr/local/etc/local-crons/ e concatena-os juntos em arquivos únicos em /etc/cron.d .

Por exemplo, digamos que você tenha os seguintes arquivos:

  • /usr/local/etc/local-crons/monitoring/foo.cron
  • /usr/local/etc/local-crons/monitoring/bar.cron
  • /usr/local/etc/local-crons/removals/baz.cron
  • /usr/local/etc/local-crons/removals/quux.cron

Seu script, em seguida, processa a árvore de diretórios /usr/local/etc/local-crons/ e cria os seguintes arquivos:

  • /etc/cron.d/local-crons-monitoring
  • /etc/cron.d/local-crons-removals

local-crons-monitoring conteria o conteúdo de foo.cron e bar.cron ; local-crons-removals conteria o conteúdo de baz.cron e quux.cron .

Se você quisesse se interessar, seu script poderia facilmente verificar a hora da última modificação dos arquivos .cron e compará-lo com a hora da última modificação do arquivo relevante em /etc/cron.d/ para ver se ele tem algum trabalho para fazer. Então, isso também pode ser feito.

Acho que é assim que eu faria de qualquer maneira.

    
por 23.07.2012 / 01:54

Tags