Supposons que je crée deux fichiers crontab.
/tmp/my-crontab
/root/my-alternate-crontab
Chaque fichier crontab est prévu pour exécuter différents scripts.
Lorsque je lance le cronjob, le premier est remplacé par le plus ancien.
crontab -u smarak /tmp/my-crontab
crontab -u smarak /root/my-alternate-crontab
Est-ce que ce qui précède est possible pour un seul utilisateur ?
Réponse acceptée :
Deux façons de contourner le fait d'avoir un seul crontab.
Placez vos entrées crontab dans des fichiers dans un répertoire, comme ~/crontab.d/thisandthat.cron
, puis validez toutes les modifications apportées à la crontab système avec :
cat ~/crontab.d/*.cron | crontab -
L'extension .cron
est d'éviter d'inclure accidentellement des fichiers de sauvegarde provenant d'éditeurs. Notez que puisque tous les fichiers sont concaténés ensemble, toutes les variables définies dans les fichiers s'appliqueront également aux fichiers qui viendront plus tard.
Vous pouvez également faire quelque chose de similaire à la façon dont /etc/cron.hourly
et les amis sont implémentés dans Debian. Le principal /etc/crontab
contient des règles comme celle-ci :
17 * * * * root cd / && run-parts --report /etc/cron.hourly
Vous pouvez faire en sorte qu'une seule entrée crontab exécute plusieurs programmes. Le run-parts dir
de Debian est similaire à for f in dir/* ; do "$f" ; done
sauf qu'il ignore les noms de fichiers impairs, encore une fois pour éviter d'exécuter des fichiers de sauvegarde créés par des éditeurs, etc.