Cómo usar nano o vim como editor de crontab

Cuando ejecutás crontab -e, el sistema abre el archivo de tareas programadas con un editor de texto. Según la configuración de la cuenta puede aparecer nano, Vim u otro editor. Elegir uno que conozcas reduce el riesgo de guardar una línea incompleta, salir sin conservar los cambios o borrar accidentalmente una tarea existente.

Antes de editar: revisar y respaldar el crontab

Primero listá las tareas actuales:

crontab -l

Si ya existen tareas importantes, guardá una copia antes de modificarlas:

crontab -l > crontab-backup.txt

El respaldo queda en el directorio actual. Revisá dónde estás con pwd y protegé el archivo si contiene rutas, nombres de usuario u otros datos internos. La orden crontab -r elimina el crontab del usuario: no la uses como método de edición.

Abrir crontab con nano

nano suele resultar más sencillo si no trabajás habitualmente en la terminal. Para utilizarlo solo en esa edición, ejecutá:

EDITOR=nano crontab -e

En nano, los atajos principales aparecen en la parte inferior. El símbolo ^ representa la tecla Ctrl:

  • Ctrl + O: guardar el archivo.
  • Enter: confirmar el nombre propuesto al guardar.
  • Ctrl + X: salir del editor.
  • Ctrl + W: buscar texto.
  • Alt + U: deshacer el último cambio, cuando la versión instalada lo admite.

Después de guardar y salir, crontab valida el formato básico e instala la nueva versión. Si informa un error, corregí la línea indicada antes de abandonar el editor.

Abrir crontab con Vim

Vim es potente, pero distingue entre modos. Para seleccionarlo en una única edición:

EDITOR=vim crontab -e

Al abrirse, presioná i para entrar en modo inserción y editar. Cuando termines, presioná Esc y usá uno de estos comandos:

  • :wq y Enter para guardar y salir.
  • :q! y Enter para salir descartando los cambios.
  • :w y Enter para guardar sin cerrar.

Si al escribir aparecen letras como comandos o el cursor no se comporta como esperabas, probablemente seguís en modo normal. Presioná i antes de introducir texto.

Definir el editor para la sesión

También podés definir las variables EDITOR y VISUAL para todas las órdenes posteriores de la sesión:

export EDITOR=nano
export VISUAL=nano
crontab -e

Para Vim, reemplazá nano por vim. En algunos entornos se consulta primero VISUAL y luego EDITOR, por lo que conviene definir ambas.

Hacer permanente la elección

Si utilizás Bash y querés conservar la preferencia al iniciar futuras sesiones, agregá estas líneas a ~/.bashrc:

export EDITOR=nano
export VISUAL=nano

Luego cerrá y volvé a abrir la sesión SSH, o recargá la configuración con source ~/.bashrc. Antes de elegir un editor verificá que esté instalado:

command -v nano
command -v vim

En un hosting administrado quizá no tengas permisos para instalar paquetes. Si el comando no devuelve una ruta, utilizá el editor disponible o consultá al soporte.

Cómo se escribe una tarea cron

Cada línea de una tarea de usuario tiene cinco campos de tiempo y un comando:

MINUTO HORA DIA-DEL-MES MES DIA-DE-LA-SEMANA COMANDO

Por ejemplo, esta tarea se ejecuta todos los días a las 03:15:

15 3 * * * /ruta/al/comando

Los asteriscos significan “todos los valores” del campo. No copies una expresión sin comprobar su horario, zona horaria y efecto. En cPanel también podés crear tareas desde la interfaz; nuestra guía de Cron Jobs en cPanel explica ese procedimiento.

Usar rutas absolutas y un entorno predecible

cron se ejecuta con un entorno más limitado que una terminal interactiva. Por eso un comando que funciona al escribirlo por SSH puede fallar como tarea programada. Utilizá rutas completas para intérpretes, scripts y archivos, y definí explícitamente el directorio de trabajo cuando sea necesario.

15 3 * * * cd /home/usuario/aplicacion && /usr/bin/php tarea.php

Confirmá las rutas reales con command -v php o el selector de PHP de tu cuenta. No des por sentado que PATH, variables de la aplicación o versiones de PHP coinciden con las de tu sesión SSH.

Evitar tareas superpuestas

Si una tarea tarda más que su intervalo, pueden quedar varias ejecuciones simultáneas consumiendo CPU, memoria o conexiones. Antes de programarla medí su duración, elegí una frecuencia razonable y, cuando corresponda, implementá un bloqueo seguro dentro del script o con una herramienta disponible en el servidor.

No programes procesos pesados en el mismo minuto. Distribuir copias de seguridad, importaciones, reportes y mantenimiento reduce picos de uso y facilita identificar cuál tarea generó un problema.

Registrar la salida y los errores

Una tarea silenciosa puede fallar durante días sin que lo notes. Durante las pruebas, enviá su salida a un archivo controlado o configurá una dirección de notificación válida. Un ejemplo sencillo es:

15 3 * * * /ruta/al/comando >> /home/usuario/logs/tarea.log 2>&1

Revisá el tamaño de los registros y aplicá rotación o limpieza. Evitá escribir contraseñas, tokens o datos personales en la salida. Una vez estabilizada la tarea, conservá solamente el nivel de registro necesario.

Diferencia entre el crontab del usuario y el del sistema

crontab -e edita las tareas del usuario conectado. El crontab del sistema y archivos como /etc/crontab pueden incluir un campo adicional para indicar el usuario de ejecución y normalmente requieren privilegios administrativos. En hosting compartido debés trabajar con el crontab de tu cuenta o con la función Cron Jobs de cPanel.

No edites directamente los archivos internos donde cron almacena los crontabs. La orden crontab -e crea una copia temporal, valida el resultado y lo instala de la forma prevista por el sistema.

Verificar que la edición quedó aplicada

Después de cerrar el editor, ejecutá nuevamente:

crontab -l

Comprobá que la nueva línea aparece una sola vez, que no se alteraron tareas anteriores y que los comentarios siguen siendo claros. Luego ejecutá manualmente el comando —sin la expresión de tiempo— con datos de prueba, revisá su salida y confirmá la primera ejecución programada.

Problemas frecuentes

  • El editor no abre: verificá que nano o Vim exista y que EDITOR contenga solo el nombre o la ruta del ejecutable.
  • “No modification made”: saliste sin guardar o no hubo cambios efectivos.
  • La tarea no se ejecuta: revisá la expresión, zona horaria, permisos, rutas absolutas y registros.
  • Funciona por SSH pero no en cron: compará variables de entorno, directorio de trabajo e intérprete utilizado.
  • Permiso denegado: verificá permisos del script y acceso del usuario a cada directorio de la ruta.

Si necesitás conectarte para realizar estas comprobaciones, consultá primero cómo acceder por SSH a una cuenta de hosting. Con un respaldo, rutas absolutas y una verificación posterior, cambiar el editor de crontab es una operación segura y reversible.