Root crontab no se guardará

6

Estoy intentando agregar una entrada crontab a crontab de mi usuario raíz. Puedo agregar una entrada sin problema al crontab de mi usuario regular, pero cuando su para el usuario root e intento agregar una entrada de crontab, no guarda la entrada.

El proceso por el que estoy pasando es:

$sudo su
$crontab -e
# write out my crontab entry and then :wq to write and quit vi
$crontab -l
crontab: no crontab for root

También he intentado salir de vi usando wq! y todavía no se guardará la entrada.

La entrada que estoy ingresando es:

* * * * * /sayhi.sh

sayhi.sh es un script de shell simple que estoy usando para intentar verificar que el trabajo cron se está ejecutando.

¿Hay algo diferente que deba hacer si intento crear una entrada crontab para root? He estado buscando y no he visto nada sobre crontab que sea particular para el usuario root.

Cualquier ayuda sería apreciada!

    
pregunta Chris Schmitz 10.02.2014 - 02:27

2 respuestas

4

Sus comandos realmente deberían funcionar, sin embargo, no es como lo haría yo.

En su lugar, intente: -

sudo crontab -e -u root

luego a la lista: -

sudo crontab -l -u root

Como regla general, me tomo muchas molestias para nunca ejecutar un shell de root. Cuando lo hago, uso sudo -s en lugar de sudo su .

Cuando salga de vi debería ver dos líneas: -

crontab: no crontab for root - using an empty one
crontab: installing new crontab

Si no obtiene esas dos líneas, tiene serios problemas. Si lo haces y luego el comando list no muestra nada, sospecho que hay problemas con los permisos.

Tampoco usaría su línea de ejemplo, ya que está pidiendo al sistema que ejecute "sayhi.sh" una vez por minuto, todo el día, todos los días. También me pregunto acerca de la ruta "/sayhi.sh". ¿Realmente tiene el script en la parte superior de su unidad de arranque? Tampoco es una buena idea o quizás te refieres a "~ / sayhi.sh", que en este caso estaría en el directorio de inicio de root (generalmente / var / root) o te refieres a tu directorio de inicio. En los archivos crontab es mejor codificar explícitamente la ruta completa, independientemente.

También te das cuenta de que la salida tany del trabajo cron no irá a ningún terminal, sino que se enviará por correo electrónico a la raíz (de forma predeterminada).

Si desea comprobar que cron está ejecutando tareas de forma sencilla

*/5 * * * *   echo "CRON" > /Users/myname/.cronout

hará eso (el primer campo ejecuta la tarea mucho más razonable cada 5 minutos).

Los propios crontabs se almacenan en / usr / lib / cron / tabs. /usr/lib/cron es en realidad un enlace a /var/at y si va allí encontrará el directorio tabs y también el archivo cron.deny . Comprueba que nadie haya agregado root a eso y si aún no tienes alegría, puedes intentar:

echo > /var/at/tabs/root

que debería crear un archivo vacío que luego podrás editar.

    
respondido por el Tony Williams 10.02.2014 - 02:58
0

Estaba teniendo el mismo problema. Esto es lo que funcionó para mí (y por "trabajado" quiero decir que pude obtener un trabajo cron para ejecutarlo como root):

sudo bash -login            # su always tries to force me to change my password >:[
vi /usr/lib/cron/tabs/root  # Just edit it directly

chmod 600 /usr/lib/cron/tabs/root

Los trabajos que ponga allí se ejecutarán, pero crontab -e aún no funciona, incluso después de crear el crontab.

    
respondido por el Jeremy Phelps 30.09.2017 - 22:37

Lea otras preguntas en las etiquetas