0 votos

"crontab -e" fallando en Monterey con "$EDITOR: No existe el archivo o directorio"

Estaba esperando un poco de orientación con un problema que me tiene vencido.

Quiero usar cronjobs en un Mac Mini con macOS Monterey, pero no se comporta como lo hace en otras máquinas que tengo con Debian.

Cuando ejecuto crontab -l, obtengo lo que esperaría, en este caso;

# m  h  dom mon dow   command

que es como lo dejé hace algunas versiones de macOS atrás.

Sin embargo, cuando ejecuto crontab -e, obtengo algo bastante más inesperado;

crontab: $EDITOR: No such file or directory
crontab: "$EDITOR" exited with status 1

La variable EDITOR está configurada como /usr/local/bin/nvim, y nvim funciona perfectamente ya que lo estoy usando ahora para redactar este mensaje.

Lo único que una amplia búsqueda en Google me ha mostrado son:

  1. Necesitaba asegurarme de que cron tuviera Acceso Total al Disco en la configuración de seguridad de macOS

y:

  1. que este no parece ser un problema normal que la gente haya encontrado.

¿Podría alguien señalarme hacia una solución, por favor?

1 votos

Prueba otro editor tal vez por ejemplo export EDITOR=/usr/bin/vi

0 votos

Intenté vim y vi y el resultado fue el mismo

2 votos

¿Qué comando exacto estás ejecutando para crear EDITOR?

3voto

El mensaje de error que recibes indica que la variable EDITOR está configurada con el valor literal $EDITOR:

$ EDITOR='$EDITOR' crontab -e
crontab: $EDITOR: No such file or directory
crontab: "$EDITOR" exited with status 1

Para corregirlo, ejecuta:

export EDITOR=/usr/local/bin/nvim
export VISUAL="$EDITOR"
/usr/bin/crontab -e

y verifica los archivos de inicialización de tu shell en busca de la definición incorrecta.

0 votos

Lamentablemente, estás equivocado. Esa es la definición de EDITOR tal como aparece en mi .bashrc.

0 votos

... sin embargo, ejecuté ambas líneas en tu sugerencia, pero el problema persiste. ¡Gracias de todos modos por intentarlo!

0 votos

Sin embargo, acabo de editar las líneas que hacen referencia a export EDITOR y export VISUAL y ahora todo funciona. ¿Si estas variables están en blanco entonces funciona? Es extraño que esto no sea un problema en Linux. De todos modos, reflexionaré sobre los hechos, pero tu solución resultó funcionar, así que muchas gracias. Estoy muy agradecido.

1voto

TL;DR;

configurar $VISUAL a /usr/bin/nano hace que el crontab -e funcione para mí!

Detalles

Me encontré con un problema similar en Monterey en zsh pero fue debido a que SublimeText estaba configurado como editor por defecto:

echo $EDITOR
# output:
subl -w

Cuando intentaba editar el crontab de cualquier usuario o root obtenía:

crontab -e # o
sudo crontab -e

# output
crontab: subl -w: No such file or directory
crontab: "subl -w" exited with status 1

Ninguna de las soluciones de otras sugerencias funcionó:

  • cambiar la variable del editor $VISUAL a subl -w
  • omitir el -w

o

  • editar el archivo sudoers mediante visudo no ayudó (para hacer que visudo funcione, tuve que asignar tanto $EDITOR como $VISUAL a nada)

    export EDITOR="" export VISUAL=""

¡de hecho, la línea sugerida ya estaba presente!

Defaults env_keep += "EDITOR VISUAL"

Posible problema de ruta de acceso de bajo nivel en shell

Al final resultó estar relacionado con que el $PATH regular no era accesible por el comando crontab. Incluso los enlaces simbólicos parecían no funcionar hasta que configuré el ajuste $VISUAL diferente de $EDITOR a /usr/bin/nano. Entonces comenzó a funcionar usando nano con una ruta absoluta explícita.

export VISUAL=/usr/bin/nano 

La configuración estándar de $EDITOR se puede preservar

Para el uso de crontab es irrelevante si $EDITOR está configurado como nada o subl -w, ¡ambos son adecuados!

IMPORTANTE:

Para que estos cambios sean permanentes, tienes que poner las líneas de exportación en el archivo de inicio de tu terminal ( ~/.zshrc o ``~/.profile dependiendo de tu configuración)

Asegúrate de haber otorgado Acceso completo al disco a crontab y cron en ``Preferencias del Sistema```

  • Dar acceso completo al disco a cron

    Si estás utilizando [[macOS]] [[Catalina]] (o superior) también necesitarás darle al servicio cron Acceso completo al disco.

    • Ve a Preferencias del Sistema y selecciona Seguridad y Privacidad.
    • En la columna de la izquierda, selecciona Acceso completo al disco, haz clic en el icono de candado, introduce tu contraseña y haz clic en el icono de suma para que aparezca un navegador de archivos.
    • Cuando aparezca el navegador de archivos, presiona ⌘ ⇧ G para abrir el diálogo ir a la carpeta y escribe: /usr/sbin/cron
    • Pulsa Ir para cerrar el diálogo y confirma que cron aparece en la lista de aplicaciones que tienen acceso completo al disco en la ventana de Seguridad y Privacidad.
    • Repite con /usr/bin/crontab

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X