سؤال

لقد حاولت تصدير مساراتي ومتغيراتي ولم تظل Crontab لن يقوم بتشغيل البرنامج النصي الخاص بي. أنا متأكد من أنني أفعل شيئا خطأ.

لدي برنامج نصي شل الذي يدير ملف جرة. هذا لا يعمل بشكل صحيح.

بعد القراءة حولها، لقد قرأت ذلك بشكل شائع بسبب المسارات غير الصحيحة بسبب تشغيل Cron عبر مثيل Shell الخاص به، وبالتالي لا يحتوي على إعداد التفضيلات نفسها كما يفعل ملف التعريف الخاص بي.

هنا هو ما يشبه البرنامج النصي اليوم بعد عدة تعديلات:

#!/bin/bash --

. /root/.bash_profile

/usr/bin/java -jar Pharmagistics_auto.jar -o

...

هذه هي أهم القطع من البرنامج النصي، والباقي قذيفة واضحة على أساس.

هل يمكن لأحد أن يقول لي ما أفعله خطأ؟

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

المحلول

حاول تحديد المسار الكامل إلى ملف JAR:

/usr/bin/java -jar /path/to/Pharmagistics_auto.jar -o

نصائح أخرى

أود فقط أن أخبرك بما استبعدته بالفعل: تحقق من المسار والبيئة الخاصة بك.

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

ليست محددة جدا، آسف.

لن تعمل "تصدير مساراتي ومتغيراتي" لأن Crontab يعمل في قذيفة مختلفة من قبل مستخدم مختلف.

أيضا، لست متأكدا مما إذا كان هذا خطأ مطبعي في كيفية إدخال السؤال، لكنني أرى:

usr/bin/java

... ولا يمكنني المساعدة ولكن لاحظ أنك لا تحدد المسار المؤهل بالكامل. إنه يبحث عن دليل يدعى "USR" في دليل العمل الحالي. أوقاتا ل Crontab، CWD غير محددة، ومن ثم مرجعك في أي مكان.

حاول تحديد المسار الكامل من الجذر، مثل ذلك:

/usr/bin/java

أو، إذا كنت ترغب في رؤية مثال على المسار النسبي في العمل، فيمكنك أيضا تجربة:

cd /

usr/bin/java

بعض الأفكار.

  1. مسح ال -- بعد #!/bin/bash
  2. تأكد من إخراج البرنامج النصي المباشر من قبل Cron إلى البريد أو في مكان آخر حيث يمكنك مشاهدته (مثل Mailto = DeRirectuser)
  3. تأكد من تشغيل البرنامج النصي الخاص بك وليس حظره من خلال برنامج نصي طويل الأمد (على سبيل المثال في السطر الثاني، أضف touch /tmp/MY_SCRIPT_RAN && exit)
  4. تصحيح البرنامج النصي باستخدام set -x و set -v بمجرد أن تعرف أنه يعمل بالفعل

هل تحدد المسارات اللازمة و ENV Vars في الشخصية الخاصة بك الشخصية (أو النصي الآخر)؟ هل جربت مصادر هذا الملف المعين (أو هو أن ما تفعله بالفعل مع /root/.bash_profile؟)

طريقة أخرى لسؤال هذا: هل أنت متأكد من أن أي مسارات ضرورية و ENV HARS تتوقع فعلا؟

إذا لم يكن هناك شيء آخر، هل حاولت صدى القيم الفردية أو مجرد استخدام الأمر "ENV" في البرنامج النصي الخاص بك، ثم مراجعة Stdout؟

توفير مسارات كاملة إلى ملف جرة الخاص بك، وما المستخدم الذي تقوم بتشغيل Crontab في؟ إذا قمت بإعداده للمستخدم العادي، فهل تعتقد أن المستخدم لديه إذن بمصدر ملف تعريف الجذر؟

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