Por que o anacron não chama os arquivos do usuário crontab?

3

Eu quero que um comando especial seja lançado todos os dias, mas não quero colocá-lo no /etc/cron.d/ porque é um usuário específico do usuário!

pg@pipoTower: ~$ crontab -l
# m h  dom mon dow   command
0 0 * * * updatedb -l 0 -o ~/.externalharddisk.db -U /var/autofs/removable/usbData

O comando crontab -e , que coloca o arquivo em /var/spool/cron/crontabs/userName

mas não sei porque não é chamado por anacron ....

usr@Tower: ~/$ cat /etc/anacrontab 
# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
HOME=/root
LOGNAME=root

# These replace cron's entries
1       5       cron.daily      run-parts --report /etc/cron.daily
7       10      cron.weekly     run-parts --report /etc/cron.weekly
@monthly        15      cron.monthly    run-parts --report /etc/cron.monthly
    
por Philippe Gachoud 02.06.2013 / 14:12

1 resposta

9

Eu encontrei duas soluções alternativas para isso ...

Opção 1: executar o script cron.daily como usuário não raiz

Os scripts em /etc/cron.daily serão executados como root, mas a raiz não precisa de uma senha para ser executada como outra pessoa. Então coloque um script lá que faça algo assim:

su myuser -c "/home/myuser/dostuff.sh"

A principal desvantagem se você precisar ser root para configurar isso.

Opção 2: configurar um anacron pessoal

Crie seus próprios diretórios de script anacron, por exemplo, ~/.anacron/daily , ~/.anacron/weekly e ~/.anacron/monthly . Coloque seus scripts diários no diretório diário.

Em seguida, crie seu próprio arquivo anacrontab, por exemplo, ~/.anacron/anacrontab . E diga isso:

1   5   cron.daily  run-parts --report /home/myuser/.anacron/daily
7   10  cron.weekly run-parts --report /home/myuser/.anacron/weekly
@monthly    15  cron.monthly    run-parts --report /home/myuser/.anacron/monthly

Também crie um diretório de spool para sua tarefa anacron, por exemplo, ~/.anacron/spool .

Finalmente, você precisa fazer uma corrida anacron. Use um cron job frequente para isso. Execute crontab -e e adicione

* * * * * /usr/sbin/anacron -t /home/myuser/.anacron/anacrontab -S /home/myuser/.anacron/spool

Isto irá executar um anacron com sua configuração a cada minuto e se um trabalho for devido, o anacron irá executá-lo. Você pode torná-lo menos freqüente, se quiser, a cada hora pode ser bom o suficiente para a maioria dos usuários.

    
por ge32 22.12.2013 / 13:06