Shell interativo com ambiente idêntico ao cron

10
Estou ciente de muitas armadilhas no mundo mágico dos crontabs, mas algumas vezes isso ajudaria muito na solução de problemas quando você tem uma maneira inteligente de inserir um shell interativo com ambiente idêntico ao de um script de shell. correr de um crontab.

Agora eu pensei em /bin/openvt -c8 -- /bin/bash --noprofile -l , mas ele exige privilégios de root, define muitas variáveis e um simples su myusername define muito mais ambiente.

Alguém sabe de uma maneira de iniciar um shell bash interativo com ambiente idêntico ao cron e não requer privilégios de root no Kubuntu?

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

    
por jippie 23.11.2012 / 19:55

2 respostas

13

Execute crontab -e e adicione uma entrada com

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

(se estiver no Solaris ou em um sistema que não usa 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 sh no sistema).

Espere um minuto e remova essa linha.

Agora você deve ter um arquivo cron-env 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 o trabalho do cron.

    
por 23.11.2012 / 21:09
2

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

O real é: variáveis de ambiente. Veja os cabeçalhos de um cron mail para encontrá-los, depois defina as variáveis no seu shell para combiná-las e anule todas as variáveis restantes.

Agora você está muito perto de um ambiente como o cron o vê.

    
por 23.11.2012 / 20:09