48 votes

Ajouter des lignes à cron à partir de script.

Existe-t-il un moyen d'ajouter des lignes au cron d'un utilisateur via script ?

Je le fais généralement en utilisant crontab -e mais j'aimerais automatiser cette tâche avec un Shell Shell.

63voto

Brett Veenstra Points 1447

Vous pouvez ajouter la ligne au bas de la crontab de l'utilisateur actuel comme ceci :

#!/bin/bash

line="* * * * * /path/to/command"
(crontab -u $(whoami) -l; echo "$line" ) | crontab -u $(whoami) -

5voto

fbicknel Points 289

Si vous voulez modifier une valeur dans votre crontab, vous pouvez faire quelque chose du genre :

$ crontab -l | sed -e 's/foo/bar/' | crontab -

Il est évident que vous devez faire attention à votre substitution pour vous assurer qu'elle ne correspond qu'à la ligne ou aux lignes que vous voulez modifier ; sinon, tous les foos sont remplacés par bars (dans cet exemple).

L'avantage de cette méthode est que vous ne remplacez pas toute la crontab. (Une pince métaphorique plutôt qu'un marteau de forgeron).

Vous pouvez utiliser n'importe quelle commande d'édition à la place de sédimentaire . Par exemple, si vous voulez utiliser ed pour retoucher une ligne qui commence par ressembler à ceci :

2 * * * * /sbin/flitch --days 3,4 > /var/log/flitch.out 2>&1

Disons que cette ligne se trouve parmi plusieurs lignes ou que vous avez plusieurs crontabs différentes à mettre à jour sur différents systèmes et que vous savez que votre ligne sera la seule à contenir le terme flitch en elle.

Cela pourrait ressembler à ce qui suit :

$ cat /tmp/edscript
/flitch
s/3/9/
w
q
$ crontab -l > /tmp/out && ed /tmp/out < /tmp/edscript && crontab - < /tmp/out
$ crontab -l
...
2 * * 1 * /sbin/flitch --days 9,4 > /var/log/flitch.out 2>&1
...

Je dois admettre que près de 100 % du temps sédimentaire fera ce que ed Le projet sera réalisé, mais il est toujours bon d'avoir un outil supplémentaire sur le couteau suisse. ^.^

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X