Shell interativo com ambiente idêntico ao cron

10

Estou ciente de muitas armadilhas no mundo mágico dos crontabs, mas às vezes isso ajuda bastante na solução de problemas quando você tem uma maneira inteligente de inserir um shell interativo (bash) com um ambiente exatamente idêntico ao de um script de shell ser executado a partir de um crontab.

Agora eu pensei /bin/openvt -c8 -- /bin/bash --noprofile -l, mas requer privilégios de root, define muitas variáveis ​​e um simples su myusernamedefine muito ambiente extra.

Alguém conhece uma maneira de iniciar um shell bash interativo com ambiente idêntico ao cron e sem exigir privilégios de root no Kubuntu?

Bônus quando funciona em uma sessão ssh, na GUI e em um ou mais dos seguintes SOs: HP-UX, Solaris e AIX

jippie
fonte

Respostas:

14

Execute crontab -ee adicione uma entrada com

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

(se estiver no Solaris ou em um sistema que não use um shell POSIX para interpretar essa linha de comando, use /usr/xpg4/bin/sh -c 'export -p > ~/cron-env'ou qualquer que seja o caminho para o padrão shnesse sistema).

Aguarde um minuto e remova essa linha.

Agora você deve ter um cron-envarquivo em seu diretório pessoal.

Você pode então executar:

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

Para iniciar um shell com o mesmo ambiente que seu trabalho cron.

Stéphane Chazelas
fonte
Interessante, verificará quando eu voltar dentro de uma hora.
jippie
Brilhante, funciona como um sonho!
jippie
Excelente resposta. Eu votaria mais de uma vez, se pudesse.
Sukima 19/08/19
2

Cron não é um shell interativo, então esse é seu primeiro problema. É principalmente ignorável embora.

O verdadeiro é: variáveis ​​de ambiente. Olhe os cabeçalhos de um cron mail para encontrá-los, depois defina variáveis ​​no shell para combiná-los e desmarque todas as variáveis ​​restantes.

Agora você está bem próximo de um ambiente como o cron o vê.

Dennis Kaarsemaker
fonte
Nunca percebeu os cabeçalhos de email que continham parte do ambiente; por padrão, o Thunderbird os oculta do usuário. Infelizmente, os cabeçalhos não representam o ambiente completo.
jippie