Я запускаю сценарий bash, который использует libboost для хранения статистической модели в памяти. Когда я запускаю скрипт непосредственно из командной строки (то есть: # /pylda/exec-test.sh), он отлично работает. Однако, когда он запускается на задании cron, я получаю следующую ошибку:
"/root/pylda/src/infer: error while loading shared libraries: libboost_program_options.so.1.46.1: cannot open shared object file: No such file or directory"
Как cron ведет себя по-разному? Должна ли быть установлена переменная среды? Насколько я знаю, это cron как корень.
благодаря
Проверьте переменную среды LD_LIBRARY_PATH
?
Как общий комментарий, не полагайтесь на наличие переменных окружения, которые вы обычно используете во время интерактивного сеанса (входа), когда вы cron () сценарий. Некоторые реализации определяют только минимальную среду. Вам будет полезно включить все, что вам нужно в ваш скрипт, либо путем прямого объявления в нем, либо путем поиска файла необходимых вам переменных.
Даже если это старо, я думаю, что этот ответ может помочь другим.
Вот пример строки моего crontab:
0 3 * * 1,2,4,5,6 (. /home/oracle/.profile; export ORACLE_SID=myDB;. myscript.ksh parm1 parm2; ) 1>/dev/null 2>&1
Which: Execute the profile of my user (oracle), so I am sure I have the good envs:. /home/oracle/.profile Set a local env value: export ORACLE_SID=myDB Executes the script with its params:. myscript.ksh parm1 parm2 (nota: the dot because the script does not have the x flag) Does not send email: 1>/dev/null 2>&1 (My script sends the needed emails with formatting).
Используйте (), чтобы заключить список команд и точку с запятой (;) для разделения команд.
Надеюсь, что это может помочь ...