فشل البرنامج النصي Bash عند تشغيله عبر 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 بشكل مختلف؟ هل هناك متغير بيئي يجب تحديده؟ هذا هو كرون كجذر ، بقدر ما أعرف.

شكر

0

4 إجابة

تحقق من متغير بيئة LD_LIBRARY_PATH الخاص بك؟

2
وأضاف

كالتعليق العام ، لا تعتمد على وجود المتغيرات البيئية التي لديك عادة خلال جلسة تفاعلية (تسجيل الدخول) عند cron() برنامج نصي. بعض التطبيقات تحدد بيئة الحد الأدنى فقط. ستفعل جيدًا لتضمين كل ما تحتاج إليه داخل النص ، إما عن طريق الإعلان المباشر به أو عن طريق الحصول على ملف للمتغيرات التي تحتاج إليها.

1
وأضاف

حتى لو كان ذلك قديمًا ، أعتقد أن هذه الإجابة قد تساعد الآخرين.

هنا خط عينة من بلدي 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).

استخدم() لتضمين قائمة بالأوامر ، وفاصلة منقوطة (؛) لفصل الأوامر.

على أمل أن هذا يمكن أن يساعد ...

1
وأضاف

حاول تعيين PATH var على Cron script

# /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, مصدر