Інтерактивна оболонка з середовищем, ідентичним крону


10

Мені відомо про безліч підводних каменів у чарівному світі Crontabs, але іноді це допоможе усунути неполадки, коли у вас є розумний спосіб ввести інтерактивну (bash) оболонку з точно однаковим середовищем, як, коли сценарій оболонки запускається з кронтаб.

Тепер я подумав про себе /bin/openvt -c8 -- /bin/bash --noprofile -l, але це вимагає привілеїв root, встановлює занадто багато змінних і простий su myusernameнабір багато додаткового середовища.

Хтось знає про спосіб запустити інтерактивну оболонку bash з оточенням однакового крона та не вимагає привілеїв root на Kubuntu?

Бонус, коли він працює в сеансі ssh, в графічному інтерфейсі та на одній або декількох із таких ОС: HP-UX, Solaris та AIX

Відповіді:


14

Запустіть crontab -eі додайте запис за допомогою

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

(якщо в Solaris або в системі, яка не використовує оболонку POSIX для інтерпретації цього командного рядка, використовуйте /usr/xpg4/bin/sh -c 'export -p > ~/cron-env'або будь-який інший шлях до стандарту shв цій системі).

Зачекайте одну хвилину і видаліть цей рядок.

Тепер у вас має бути cron-envфайл у вашому домашньому каталозі.

Потім можна запустити:

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

Щоб запустити оболонку з тим самим середовищем, що і ваша робота з Cron.


Цікаво, перевіряю, коли повернусь приблизно за годину.
jippie

Блискуче, працює як мрія!
jippie

Найкраща відповідь. Я б голосував не раз, якби міг.
Сукіма

2

Cron - це не інтерактивна оболонка, тому це ваша перша проблема. Хоча це переважно невідомо.

Справжня річ: змінні середовища. Подивіться на заголовки з електронної пошти, щоб знайти їх, а потім встановіть змінні у своїй оболонці, щоб вони відповідали їм, і скиньте всі інші змінні.

Тепер ви досить близькі до оточення, як це бачить cron.


Ніколи не помічав заголовків пошти, що містять частину середовища, за замовчуванням Thunderbird приховує їх від користувача. На жаль, заголовки не представляють собою повне середовище.
jippie
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.