Interaktywna powłoka ze środowiskiem identycznym jak cron

10

Zdaję sobie sprawę z wielu pułapek w magicznym świecie crontabs, ale czasami pomocne byłoby rozwiązywanie problemów, gdy masz jakiś sprytny sposób na wejście do interaktywnej powłoki (bash) z dokładnie identycznym środowiskiem, jak podczas uruchamiania skryptu powłoki z crontab.

Teraz myślałem o sobie /bin/openvt -c8 -- /bin/bash --noprofile -l, ale wymaga to uprawnień roota, ustawia zbyt wiele zmiennych, a prosty su myusernameustawia wiele dodatkowych środowisk.

Czy ktoś zna sposób na uruchomienie interaktywnej powłoki bash z środowiskiem identycznym do crona i niewymagającym uprawnień roota na Kubuntu?

Bonus, gdy działa w sesji ssh, w graficznym interfejsie użytkownika oraz w jednym lub więcej z następujących systemów operacyjnych: HP-UX, Solaris i AIX

jippie
źródło

Odpowiedzi:

14

Uruchom crontab -ei dodaj wpis za pomocą

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

(jeśli w systemie Solaris lub systemie, który nie używa powłoki POSIX do interpretacji tego wiersza poleceń, użyj /usr/xpg4/bin/sh -c 'export -p > ~/cron-env'lub innej ścieżki do standardu shw tym systemie).

Poczekaj minutę i usuń tę linię.

Powinieneś teraz mieć cron-envplik w swoim katalogu domowym.

Następnie możesz uruchomić:

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

Aby uruchomić powłokę w tym samym środowisku, w którym znajduje się zadanie cron.

Stéphane Chazelas
źródło
Ciekawe, sprawdzi to, kiedy wrócę za około godzinę.
jippie
Genialne, działa jak sen!
jippie
Najlepsza odpowiedź. Głosowałbym więcej niż raz, gdybym mógł.
Sukima,
2

Cron nie jest interaktywną powłoką, więc to twój pierwszy problem. Jest to jednak w większości nie do zniesienia.

Rzeczywiste jest: zmienne środowiskowe. Spójrz na nagłówki z wiadomości cron, aby je znaleźć, a następnie ustaw zmienne w powłoce, aby je dopasować i odznacz wszystkie pozostałe zmienne.

Teraz jesteś bardzo blisko środowiska, jakie widzi cron.

Dennis Kaarsemaker
źródło
Nigdy nie zauważyłem nagłówków wiadomości zawierających część środowiska, domyślnie Thunderbird ukrywa je przed użytkownikiem. Nagłówki niestety nie reprezentują pełnego środowiska.
jippie