Имеется навороченный bash+python скрипт, который запускается из-под крона. Запуск скрипта настроен от пользователя (назовем его user).
Если запускать скрипт в консоли просто от user, он нормально выполняется. Запуск того же скрипта из крона, судя по результату, происходит неудачно.
Экспериментально было выяснено, что запуск из-под крона действительно происходит от пользователя user, но переменные окружения совсем не те, что видны через команду export при логине в систему под пользователем user. Вообще, отличий много:
1. Похоже, что крон вызывает шелл /bin/sh, а обычный логин пользователя происходит в шелл /bin/bash.
2. Разный набор переменных окружения при запуске из Cron и обычном логине пользователя. В запуске из крона переменных всего 8, а при логине как пользователь - 25.
3. Разные значения переменных окружения. Например, сильно отличается переменаая PATH (при запуске из крона она содержит всего лишь «/usr/bin:/bin»)
Видимо, есть еще какие-то отличия, мне неведомые.
Из-за этого, используемые в скрипте программы не работают так как нужно.
Проблема осложняется тем, что невозможно получить полный лог скрипта, так как скрипт специальным образом вызывает подпроцессы, которые могут отвалиться на опрациях I/O. И получить вывод этих подпроцессов невозможно. А в этих подпроцессах запускаются программы, которые, видимо, нормально не выполняются в окружении, созданном Cron.
Вопрос. Как можно отладить скрипт, вызываемый из Cron? Как увидеть в консоли работу скрипта в окружении, созданным для него Cron?