Shell interactif avec environnement identique à cron

10

Je connais de nombreux pièges dans le monde magique des crontabs, mais parfois cela aiderait beaucoup à dépanner lorsque vous avez un moyen intelligent d'entrer dans un shell interactif (bash) avec un environnement identique identique à celui d'un script shell exécuté à partir d'un crontab.

Maintenant, je pensais à moi-même /bin/openvt -c8 -- /bin/bash --noprofile -l, mais cela nécessite des privilèges root, définit trop de variables et un simple su myusernamedéfinit beaucoup d'environnement supplémentaire.

Quelqu'un connaît un moyen de démarrer un shell bash interactif avec un environnement identique à cron et ne nécessitant pas de privilèges root sur Kubuntu?

Bonus lorsqu'il fonctionne dans une session ssh, dans l'interface graphique et sur un ou plusieurs des systèmes d'exploitation suivants également: HP-UX, Solaris et AIX

jippie
la source

Réponses:

14

Exécutez crontab -eet ajoutez une entrée avec

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

(si sur Solaris ou un système qui n'utilise pas de shell POSIX pour interpréter cette ligne de commande, utilisez /usr/xpg4/bin/sh -c 'export -p > ~/cron-env'ou quel que soit le chemin d'accès à la normesh sur ce système).

Attendez une minute et supprimez cette ligne.

Vous devriez maintenant avoir un cron-envfichier dans votre répertoire personnel.

Vous pouvez ensuite exécuter:

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

Pour démarrer un shell avec le même environnement que votre travail cron.

Stéphane Chazelas
la source
Intéressant, le vérifiera à mon retour dans environ une heure.
jippie
Brillant, fonctionne comme un rêve!
jippie
Excellente réponse. Je voterais plus d'une fois si je le pouvais.
Sukima
2

Cron n'est pas un shell interactif, c'est donc votre premier problème. C'est surtout ignorable.

La vraie chose est: les variables d'environnement. Regardez les en-têtes d'un mail cron pour les trouver, puis définissez les variables dans votre shell pour les faire correspondre et désactivez toutes les variables restantes.

Maintenant, vous êtes assez proche d'un environnement tel que Cron le voit.

Dennis Kaarsemaker
la source
Jamais remarqué les en-têtes de courrier contenant une partie de l'environnement, par défaut Thunderbird les cache à l'utilisateur. Malheureusement, les en-têtes ne représentent pas l'environnement complet.
jippie