У меня есть сценарий bash, который отслеживает задания в кластере на основе вывода команды системы очередей LSF «bqueues». Скрипт работает нормально. Теперь я хотел создать запись в crontab, которая вызывает этот скрипт. Проблема в том, что все, что связано с bqueues, вообще не выводит, в чем может быть причина?
Вывод очереди LSF в задаче crontab
Ответы (1)
- Задания Cron не наследуют среду входа пользователя. В частности, переменные среды, установленные в .login или .profile и т. д., будут просто недоступны. Абсолютная единственная наиболее распространенная причина сбоя заданий cron заключается в том, что параметр PATH не соответствует тому, что предполагал автор сценария.
- Задания Cron не имеют связанного с ними стандартного ввода. Хотя cron не будет выполнять .login/.profile пользователя, он запустит оболочку в обычном режиме, что приведет к выполнению файла запуска оболочки (.cshrc, .bashrc и т. д.). Также некоторые команды, используемые в cronjob, могут полагаться на наличие терминала. Например, если вы пытаетесь запустить vi в пакетном режиме, не делайте этого. Вместо этого замените его на ed или sed.
- Выходные данные задания Cron будут отправлены по почте Unix владельцу crontab.
- Разрешения на самом crontab. Многие реализации cron даже не будут просматривать crontab, если права доступа к файлу установлены неправильно. Как правило, разрешения должны быть очень жесткими - только чтение/запись для владельца и НЕТ разрешений для группы или других лиц.
- сравните среды, выдав
env
из оболочки и crontab. - ...
Дополнительные советы по отладке см. в разделе Как отладить проблему, из-за которой cron не выполняет данный скрипт или что-то другое?
person
Fredrik Pihl
schedule
16.06.2011
да, вывод из env отличается как в bash, так и в cron. в любом случае, чтобы я передал все переменные среды bash в cron?
- person Open the way; 17.06.2011