سؤال

لدي ملف escript يعمل بشكل جيد من سطر الأوامر ، أي:

./escript_file

من المفترض أن تكون صديقة للكرون وجميع المسارات صريحة ، لكن عندما أقوم بتشغيله ، فإنه يفشل في التجميع قائلاً إن هناك هناك bad attributes.

السمات السيئة المعنية هي التعاريف الكلية:

-define(COOKIE, 'somecookie').

الاجابة

بفضل اقتراح Geoff Ready ، قمت بالتحقيق في إصدار Erlang الذي كان يعمل من خلال الطباعة init:script_id() الذي يطبع سلسلة مثل {"OPT APN 181 O1", "R13B"} وبالتأكيد كانت إصدارات سطر الأوامر و CRON تلتقط إصدارات مختلفة.

كان للنص خطًا أوليًا:

#!/usr/bin/env escript

وكان نظام التشغيل "إيجاد" إرلانج بالنسبة لي. تعني متغيرات البيئة المختلفة في كرون أن إرلانج مختلف تم التقاطه (إجابة جيف الأولى ، وأحدهما عرفته ولكن لم أستطع أن أرى كيف سيؤثر ذلك على الأشياء).

الحل بعد ذلك هو فرض الإصدار من خلال خط انطلاق:

#!/usr/local/lib/erlang/erts-5.7.3/bin/escript

PostScript

كان هناك أيضا أوبونتو مختلف apt-get تثبيت إصدار سابق من Erlang (في موقع مختلف لتثبيت المصدر) وتثبيت 64 بت خاطئ ...

استمرت بيئة كرون فقط في العودة إلى عمليات التثبيت القديمة والأكثر غموضًا ، وفشلت طوال الوقت :(

هل كانت مفيدة؟

المحلول

ربما يلتقط كرون نسخة مختلفة من إرلانج في المسار. Erlang R12B الوثائق يقول أن Escript يتجاهل توجيهات المعالج المسبق إلى جانب تشمل _lib. Erlang R13B الوثائق يقول أن المعالج المسبق يتم تشغيله على الملف. من شأنه أن يفسر بالتأكيد الفرق في السلوك.

نصائح أخرى

إذا كان يعمل بشكل جيد من سطر الأوامر ، فإن السبب المحتمل هو اختلاف في متغيرات البيئة لقذيفة التفاعلية الخاصة بك عند تشغيل CRON البرنامج النصي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top