Интерактивная оболочка со средой, идентичной cron

10

Я знаю о многих подводных камнях в волшебном мире crontabs, но иногда это может помочь в устранении неполадок, когда у вас есть какой-нибудь умный способ ввести интерактивную (bash) оболочку с точно такой же средой, как когда сценарий оболочки запускается из кронтаб.

Теперь я сам о себе подумал /bin/openvt -c8 -- /bin/bash --noprofile -l, но для этого требуются привилегии суперпользователя, задается слишком много переменных, а в простом su myusername- множество дополнительных сред.

Кто-нибудь знает, как запустить интерактивную оболочку bash с идентичной средой cron и не требовать привилегий root в Kubuntu?

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

jippie
источник

Ответы:

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.

Стефан Шазелас
источник
Интересно, проверим это, когда вернусь примерно через час.
Джиппи
Блестящий, работает как мечта!
Джиппи
Самый отличный ответ. Я бы проголосовал несколько раз, если бы мог.
Sukima
2

Cron не интерактивная оболочка, так что это ваша первая проблема. Это в основном игнорируется, хотя.

Реальная вещь: переменные среды. Посмотрите на заголовки из почты cron, чтобы найти их, затем установите переменные в вашей оболочке, чтобы соответствовать им, и удалите все оставшиеся переменные.

Теперь вы достаточно близки к окружающей среде, как видит ее cron.

Деннис Каарсемакер
источник
Никогда не замечал почтовые заголовки, содержащие некоторую среду, по умолчанию Thunderbird скрывает их от пользователя. К сожалению, заголовки не представляют полную среду.
Джиппи