¿Hay alguna manera de agregar líneas al cron de un usuario a través de un script?
Normalmente lo hago usando crontab -e, pero me gustaría automatizar esta tarea con un script de shell.
¿Hay alguna manera de agregar líneas al cron de un usuario a través de un script?
Normalmente lo hago usando crontab -e, pero me gustaría automatizar esta tarea con un script de shell.
Respuestas:
Puede hacer eco de la línea en la parte inferior del crontab de usuarios actuales de esta manera:
#!/bin/bash
line="* * * * * /path/to/command"
(crontab -u userhere -l; echo "$line" ) | crontab -u userhere -
cronse modificó.
crontabese usuario aún no existe (?)
Si desea editar un valor en su crontab, puede hacer algo como:
$ crontab -l | sed -e 's/foo/bar/' | crontab -
Obviamente, debe tener cuidado con su sustitución para asegurarse de que solo coincida con la (s) línea (s) que desea cambiar; de lo contrario, todos foosse cambian a bars(en este ejemplo).
La ventaja de este método es que no está reemplazando todo el crontab. (Una pinza metafórica en lugar de un mazo).
Puede usar cualquier comando de edición en lugar de sed . Por ejemplo, si desea utilizar ed para retocar una línea que comienza así:
2 * * * * /sbin/flitch --days 3,4 > /var/log/flitch.out 2>&1
Digamos que esta línea se encuentra entre muchas líneas o tiene muchas crontabs diferentes para actualizar en diferentes sistemas y solo sabe que su línea será la única línea con el término flitchen ella.
Podría verse así:
$ 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
...
Ahora debo admitir que casi el 100% del tiempo sed hará lo que hará Ed , pero siempre es bueno tener una herramienta adicional en la navaja suiza. ^. ^