Баш-скрипт не працює при запуску через cron, не можемо знайти бібліотеку Libboost

Я використовую сценарій 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 як корінь, наскільки я знаю.

Дякую

0

4 Відповіді

Перевірте змінну середовища LD_LIBRARY_PATH ?

2
додано

Як загальний коментар, не варто покладатися на наявність змінних середовища, які зазвичай ви мали під час сеансу інтерактивного (логін), коли ви виконуєте cron() сценарій. Деякі реалізації визначають лише мінімальне середовище. Ви зробите так, щоб включити все, що потрібно, у ваш сценарій, шляхом прямого декларування в ньому або шляхом пошуку файлу змінних, які вам потрібні.

1
додано

Навіть якщо це старе, я думаю, що ця відповідь може допомогти іншим.

Ось приклад лінії мого кронтаба:

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).

Використовуйте() для додавання списку команд, а також розділі коми, (;) для відокремлення команд.

Сподіваюся, що це може допомогти ...

1
додано

Спробуйте встановити параметр PATH var у скрипті Cron

# /etc/cron.d/something
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
0
додано
Надана відповідь @ michael-krelin-hacker є точнішою, вам слід встановити LD_LIBRARY_PATH, але все-таки це слід зробити у вашому сценарії Cron. Ви повинні перевірити ваш поточний LD_LIBRARY_PATH з "env".
додано Автор 0xd, джерело
Вибачте мій недолік знань про це - чи є шлях, який буде специфічним для встановлення CentOS?
додано Автор Russ, джерело