web-dev-qa-db-fra.com

Pourquoi anacron n'appelle-t-il pas les fichiers utilisateur crontab?

Je veux qu'une commande spéciale soit lancée tous les jours, mais je ne veux pas la mettre dans le fichier /etc/cron.d/ car c'est un utilisateur spécifique!

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

La commande crontab -e qui place le fichier dans /var/spool/cron/crontabs/userName

mais je ne sais pas pourquoi ce n'est pas appelé par l'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
3
Philippe Gachoud

J'ai trouvé deux solutions pour cela ...

Option 1: Exécuter le script cron.daily en tant qu'utilisateur non root

Les scripts dans /etc/cron.daily seront exécutés en tant que root, mais ce dernier n'a pas besoin d'un mot de passe pour s'exécuter en tant que quelqu'un d'autre. Alors mettez un script qui fait quelque chose comme ça:

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

Le principal inconvénient si vous devez être root pour le configurer.

Option 2: Configurer un anacron personnel

Créez vos propres répertoires de script anacron, par exemple ~/.anacron/daily, ~/.anacron/weekly et ~/.anacron/monthly. Mettez vos scripts quotidiens dans le répertoire quotidien.

Créez ensuite votre propre fichier anacrontab, par exemple, ~/.anacron/anacrontab. Et faites le dire ceci:

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

Créez également un répertoire de spool pour votre tâche anacron, par exemple ~/.anacron/spool.

Enfin, vous devez faire exécuter Anacron. Utilisez un travail cron fréquent pour cela. Exécutez crontab -e et ajoutez

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

Anacron s’exécutera avec votre configuration toutes les minutes et si un travail est dû, Anacron l’exécutera. Vous pouvez le rendre moins fréquent si vous le souhaitez, chaque heure peut être suffisante pour la plupart des utilisateurs.

9
ge32