Shell interactivo con entorno idéntico al cron

10

Soy consciente de muchas trampas en el mundo mágico de los crontabs, pero a veces ayudaría mucho a solucionar problemas cuando tienes una forma inteligente de ingresar a un shell interactivo (bash) con un entorno idéntico como cuando se ejecuta un script de shell desde un crontab.

Ahora pensaba en mí /bin/openvt -c8 -- /bin/bash --noprofile -l, pero requiere privilegios de root, establece demasiadas variables y un simple su myusernameestablece un montón de entorno adicional.

¿Alguien sabe de una manera de iniciar un shell bash interactivo con un entorno idéntico a cron y que no requiera privilegios de root en Kubuntu?

Bonificación cuando funciona en una sesión ssh, en la GUI y también en uno o más de los siguientes sistemas operativos: HP-UX, Solaris y AIX

jippie
fuente

Respuestas:

14

Ejecute crontab -ey agregue una entrada con

* * * * * export -p > ~/cron-env

(si está en Solaris o en un sistema que no usa un shell POSIX para interpretar esa línea de comando, use /usr/xpg4/bin/sh -c 'export -p > ~/cron-env'o lo que sea la ruta al estándar shen ese sistema).

Espera un minuto y elimina esa línea.

Ahora debería tener un cron-envarchivo en su directorio de inicio.

Luego puedes ejecutar:

cd && env -i sh -c '. ./cron-env; exec sh'

Para iniciar un shell con el mismo entorno que obtuvo su trabajo cron.

Stéphane Chazelas
fuente
Interesante, lo comprobaré cuando regrese en aproximadamente una hora.
jippie
¡Brillante, funciona como un sueño!
jippie
La respuesta más excelente. Votaría más de una vez si pudiera.
Sukima
2

Cron no es un shell interactivo, así que ese es tu primer problema. Sin embargo, es en su mayoría ignorable.

Lo real es: variables de entorno. Mire los encabezados de un correo cron para encontrarlos, luego configure las variables en su shell para que coincidan y desarme todas las variables restantes.

Ahora estás bastante cerca de un entorno como lo ve cron.

Dennis Kaarsemaker
fuente
Nunca noté los encabezados de correo que contienen parte del entorno, de forma predeterminada Thunderbird los oculta al usuario. Los encabezados lamentablemente, no representan completar el entorno completo.
jippie