Onde está o cron desta receita do Chef?

1

Eu adicionei e configurei e implementei com êxito uma instância com esta receita:

cron "haproxy_log" do command "logrotate /etc/logrotate.d/haproxy" minute '15' end

Mas quando eu olho para /etc/crontab eu não vejo isso lá. Onde o cron chef coloca seus trabalhos agendados?

Quando eu faço sudo crontab -u root -l vejo meu trabalho. Mas como é que não consigo ver em /etc/crontab ?

O cron não é executado, mas eu posso executar o comando manualmente fazendo: sudo logrotate /etc/logrotate.d/haproxy - Por que isso está acontecendo?

    
por Hommer Smith 19.05.2017 / 09:38

2 respostas

2

O crontab que você vê com sudo crontab -u root -l é um usuário normal crontab para o usuário root , localizado em:

  • /var/spool/cron/crontabs/root (Debian, Ubuntu, HP-UX e SGI IRIX)
  • /var/spool/cron/root (CentOS, RedHat, RHEL, Fedora, IBM AIX e empresa)
  • /var/cron/tabs/root (FreeBSD, OpenBSD, NetBSD)
  • /usr/lib/cron/tabs/root (Mac OS X)

Esses arquivos não devem ser editados diretamente, mas sempre com o comando crontab .

Os comandos do crontab root também são sempre executados como root , ou seja,

  • eles têm a sintaxe normal m h dom mon dow command
  • enquanto no todo o sistema /etc/crontab e em /etc/cron.d/* você também deve especificar o usuário:

    # /etc/crontab: system-wide crontab
    # Unlike any other crontab you don't have to run the 'crontab'
    # command to install the new version when you edit this file
    # and files in /etc/cron.d. These files also have username fields,
    # that none of the other crontabs do.
    
    # m h dom mon dow user  command
    

Uma dica para isso também está oculta na Referência do Cookbook do Chef, Recurso cron :

The cron resource requires access to a crontab program, typically cron.

Warning: The cron resource should only be used to modify an entry in a crontab file. Use the cookbook_file or template resources to add a crontab file to the cron.d directory. The cron_d lightweight resource (found in the cron cookbook) is another option for managing crontab files.

    
por 19.05.2017 / 10:31
1

Em plataformas Unix, excluindo AIX e Solaris, o Chef cria um arquivo temporário usando a sintaxe típica do crontab e, em seguida, o alimenta ao comando /usr/bin/crontab ( Origem ).

Dependendo do sistema operacional / distribuição, o local varia de acordo com a implementação cron . No Debian / Ubuntu por exemplo ( man 8 cron ):

cron searches its spool area (/var/spool/cron/crontabs) for crontab files (which are named after accounts in /etc/passwd); crontabs found are loaded into memory. Note that crontabs in this directory should not be accessed directly - the crontab command should be used to access and update them.

cron also reads /etc/crontab, which is in a slightly different format (see crontab(5)). In Debian, the content of /etc/crontab is predefined to run programs under /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly and /etc/cron.monthly. This configuration is spe‐ cific to Debian, see the note under DEBIAN SPECIFIC below.

Additionally, in Debian, cron reads the files in the /etc/cron.d directory. cron treats the files in /etc/cron.d as in the same way as the /etc/crontab file (they follow the special format of that file, i.e. they include the user field). However, they are independent of /etc/crontab: they do not, for example, inherit environment variable settings from it. This change is specific to Debian see the note under DEBIAN SPECIFIC below.

Like /etc/crontab, the files in the /etc/cron.d directory are monitored for changes. In general, the system administrator should not use /etc/cron.d/, but use the standard system crontab /etc/crontab.

Longa história curta:

  1. O destino é gerenciado por crontab chef
  2. padrões típicos para versões recentes do Debian / Ubuntu em 2017 são /etc/cron.d/<filename>
por 19.05.2017 / 12:31