¿Es malo editar el archivo cron manualmente?

12

Por lo general, se le indica que introduzca nuevos trabajos cron a través de líneas de comando; pero me resultó más fácil (con un mejor control de las tareas cron actuales) editar manualmente (en el editor de texto) el archivo cron del usuario /var/spool/cron/crontabs/root.

¿Es peligroso editar el archivo en el editor de texto?

Los comentarios en el archivo predeterminado son confusos. La primera línea dice

# DO NOT EDIT THIS FILE - edit the master and reinstall.

Pero la cuarta línea dice

# Edit this file to introduce tasks to be run by cron.
Googlebot
fuente
2
¿Por qué no simplemente poner las cosas en /etc/cron.d?
Zoredache
Puede ser una buena idea; pero no quise decir qué archivo editar, estoy comparando el archivo de edición por editor o ejecutando el comando crontab.
Googlebot
@ Todos supongo que la única diferencia es la verificación de sintaxis realizada por crontab-e. Es solo un búfer de texto con comprobación de sintaxis. También puede cambiar su editor habitual y crontab-e se cargaría en eso. La importancia de la xintaxis es que todo el archivo se ignorará si comete un error. Incluso si usa una herramienta externa, debe usar crontab-e para leer el archivo y enviarlo nuevamente a crontab-e cuando termine. Al hacerlo, ya no tendrá que preocuparse por la sintaxis. Es mejor dividir los archivos de las tareas del usuario y de los sistemas, por lo que debe usar mejor /etc/cron.d para las tareas de usuario / prueba.
m3nda

Respuestas:

22

Si modifica el archivo de usuario en crontabs, debería funcionar. Sin embargo, hay dos cuestiones a tener en cuenta:

  1. Si escribiste mal la entrada cron en el archivo, no se te advertirá en lugar de usar el crontab -ecomando.
  2. No puede editar su archivo de usuario en crontabs directamente sin iniciar sesión como root o usar sudo. Obtendrá permiso denegado error.

Editar

Un punto más para agregar. Cuando edita el archivo directamente, el editor de texto puede advertirle si abre el archivo dos veces (dos usuarios acceden al mismo archivo). Sin embargo, la lista cron se sobrescribirá cuando se use crontab -edesde dos sesiones de shell diferentes del mismo usuario. Esta es otra diferencia.

Khaled
fuente
puntos muy sutiles! Nunca enfrenté (supe) el segundo problema, ya que siempre trabajo como root.
Googlebot
44
Además, el "no editar" en el archivo predeterminado se debe a que una actualización / reinstalación puede sobrescribir ese archivo.
Chris S
No mencionó que un usuario que edita el crontab pierde directamente la comprobación de santax que crontab -eproporciona.
Adam F
1
@AdamF: ¡Esto es de lo que habla el punto 1!
Khaled
8

Si entiendo correctamente, está editando el archivo manualmente con un editor de texto porque no desea usar crontab -e. Supongo que es porque está usando vi como editor y no estás familiarizado con él.

Cambia crontab -e (y otras cosas que necesitan un editor) para usar el nano editor más familiar ejecutando

export EDITOR=nano

antes de

crontab -e

Puede hacer que nano sea el editor predeterminado permanente al editar su archivo ~ / .bash_profile para incluirlo export EDITOR=nanoal final.

Para responder a su pregunta, no debe editar el archivo directamente porque podría sobrescribirse sin que lo sepa. La cuarta línea dice lo que dice porque proviene del crontab que se supone que debe editar manualmente (lo diría como la primera línea).

Jonathan Enmienda
fuente
Gracias por la respuesta descriptiva. Estoy completamente familiarizado con el editor crontab command vi; pero uso gedit (no en la terminal ssh), ya que me conecto directamente al servidor desde mi escritorio de Linux.
Googlebot
También recomiendo agregar el comando EDITOR de exportación en su archivo bashrc para evitar escribirlo cada vez que inicie sesión en ssh.
m3nda
1
export VISUAL=vi

Esta es la forma correcta de cambiar el editor para crontab.

usuario981836
fuente