كيف يمكنني تعيين مهمة لتشغيل كل ذلك في كثير من الأحيان ؟

StackOverflow https://stackoverflow.com/questions/132955

سؤال

كيف يمكنني الحصول على البرنامج النصي تشغيل كل 30 دقيقة ؟ أفترض هناك طرق مختلفة ل مختلف برمجيات المصدر المفتوح.أنا باستخدام OS X.

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

المحلول

مجرد استخدام launchd.هو قوي جدا قاذفة النظام وفي الوقت نفسه هو معيار قاذفة نظام التشغيل Mac OS X (الحالي OS X الإصدار حتى لا التمهيد من دون ذلك).بالنسبة لأولئك الذين ليسوا على دراية مع launchd (أو مع OS X في العامة) ، هو مثل هجين بين init, cron, at, SysVinit (init.d), inetd, upstart و systemd.الاقتراض المفاهيم من كل هذه المشاريع ، ولكن تقدم أيضا من الأشياء التي قد لا تجد في أي مكان آخر.

كل الخدمات المهمة ملف.موقع الملف يعتمد على الأسئلة:"متى هذه الخدمة من المفترض أن تعمل ؟" و "الامتيازات التي من شأنها خدمة حاجة؟"

نظام المهام الذهاب إلى

/Library/LaunchDaemons/

إذا كان يجب تشغيل, لا يهم إذا كان أي مستخدم بتسجيل الدخول إلى النظام أو لا.أنها سوف تكون بدأت مع "الجذر" امتيازات.

إذا أنها سوف تعمل فقط إذا أي المستخدم هو تسجيل الدخول, يذهبون إلى

/Library/LaunchAgents/

وسيتم تنفيذها مع امتيازات المستخدم فقط تسجيل الدخول.

إذا كان يجب تشغيل إلا إذا لك تسجيل الدخول, يذهبون إلى

~/Library/LaunchAgents/

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

علما بأن هناك أيضا /System/Library/LaunchDaemons و /System/Library/LaunchAgents, ولكن كالعادة كل شيء تحت /System يدار من قبل OS X.يجب عدم وضع أي ملفات أو هناك لن يغير أي الملفات هناك ، إلا إذا كنت تعرف حقا ما تقومون به.العبث في مجلد النظام يمكن أن تجعل النظام الخاص بك غير قابل للاستخدام (في الدولة حيث أنها سوف ترفض حتى الحذاء مرة أخرى).هذه هي الدلائل حيث أبل الأماكن launchd المهام التي تحصل على النظام الخاص بك وتشغيلها أثناء التمهيد تلقائيا بدء تشغيل الخدمات المطلوبة ، وأداء مهام صيانة النظام, وهلم جرا.

كل launchd المهمة هناك ملف plist الشكل.يجب أن يكون عكس اسم المجال التدوين.E. g.يمكنك اسم مهمتك

com.example.my-fancy-task.plist

هذا plist يمكن أن يكون مختلف الخيارات والإعدادات.كتابة واحدة في اليد هو الأمثل ، قد ترغب في الحصول على أداة مجانية Cowberry إنشاء المهام الخاصة بك.هذه الأداة تستخدم ليكون مجانا, الآن يكلف 5 دولار في المتجر و 10 دولار غير المتجر نسخة (غير المتجر الإصدار هو أقوى بكثير إذا كنت تخطط بالفعل على دفع ثمن ذلك بجدية على عدم التطبيق مخزن الإصدار).إذا كان أي شخص يعرف مقارنة أداة مجانية أو مفتوحة المصدر ، قطرة لي خط في التعليقات و سوف بدلا من ذلك يوصي واحد (لا أريد أن أعلن هنا عن البرمجيات التجارية).

فقط وعلى سبيل المثال ، يمكن أن تبدو مثل هذا

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.example.my-fancy-task</string>
    <key>OnDemand</key>
    <true/>
    <key>ProgramArguments</key>
    <array>
        <string>/bin/sh</string>
        <string>/usr/local/bin/my-script.sh</string>
    </array>
    <key>StartInterval</key>
    <integer>1800</integer>
</dict>
</plist>

وهذا عامل تشغيل shell script /usr/local/bin/my-script.sh كل عام 1800 ثانية (كل 30 دقيقة).يمكنك أيضا تشغيل المهام في تواريخ معينة/مرات (أساسا launchd يمكن أن تفعل كل شيء كرون يمكن أن تفعل) أو حتى يمكنك تعطيل "مشمس" مما تسبب في launchd للحفاظ على العملية بشكل دائم تشغيل (إذا لم توقف أو تعطل ، launchd سيتم فورا إعادة تشغيله).يمكنك حتى الحد كم من الموارد في عملية قد تستخدم (كما قال من قبل Cowberry يظهر كل هذه الإعدادات في واجهة جميلة واجهة).

تحديث: على الرغم من OnDemand لا يزال يؤيد هو إهمال.الإعداد الجديد هو اسمه KeepAlive, والتي المنطقي أكثر بكثير.يمكن أن يكون لها قيمة منطقية في هذه الحالة هو العكس تماما OnDemand (إعداد false يتصرف كما لو OnDemand هو true و العكس).فإن ميزة جديدة رائعة, أنه يمكن أن يكون أيضا قاموس القيمة بدلا من منطقية واحدة.إذا كان لديه قاموس قيمة لديك زوجين من الخيارات الإضافية التي تعطيك المزيد من الحبوب غرامة السيطرة تحت أي ظروف مهمة يجب أن تبقى على قيد الحياة.E. g.هو فقط أبقى على قيد الحياة طالما تم إنهاء البرنامج مع كود الخروج من الصفر, فقط طالما معينة الملف/الدليل على القرص موجود فقط إذا مهمة أخرى هي أيضا على قيد الحياة ، أو فقط إذا كانت الشبكة حاليا.

كما يمكنك يدويا تمكين/تعطيل المهام عن طريق سطر الأوامر:

launchctl <command> <parameter>

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

ترى أبل وثائق plist شكل و من launchctl أداة سطر الأوامر (لاحظ أنه يمكنك اختيار OS X الإصدار الأعلى منذ تنسيق/خيارات تختلف بين مختلف OS X الإصدارات)

نصائح أخرى

هل يمكن استخدام مريحة جدا plist مولد: http://launched.zerowidth.com/ (لا حاجة لشراء أي شيء...)

وسوف تعطيك قذيفة واحدة بطانة لتسجيل الجديدة المقرر العمل مع أوصى بالفعل launchd

على MacOSX لديك على الأقل الخيارات التالية:

  • المتكررة iCal إنذار مع "تشغيل البرنامج النصي" العمل
  • launchd
  • كرون (link1, link2)

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

كما Mecki أشار launchd من شأنه أن يكون وسيلة للذهاب مع هذا.هناك واجهة المستخدم الرسومية واجهة launchd يسمى Cowberry التي قد ترغب في التحقق ، مقابل تحرير launchd الملفات باليد:

Cowberry هو واجهة مستخدم رسومية لإنشاء التحرير launchd ملفات التكوين في نظام التشغيل Mac OS X ليوبارد 10.5.

[قص...]

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

نظام التشغيل MAC OS له اتمتة أداة الذي هو نفسه كما ان من جدولة المهام في نظام التشغيل windows.واستخدام الأوتوماتيكية يمكنك جدولة المهام على أساس يومي الرابط المهمة مع التقويم المتكررة الحدث لتشغيل البرامج النصية في وقت محدد يوميا.راجع الرابط تشغيل البرامج النصية على أساس يومي في نظام التشغيل Mac OS

لابل النصوص ، خاصة iCal التقويم واستخدام أجهزة الإنذار تشغيلها بشكل دوري.بالنسبة أدوات سطر الأوامر, يمكنني استخدام launchd.

لمعلوماتك:حين أشتاق انها siplicity, كرون هو شيء من الماضي على OS X.كان رقيبا على النمر.لأن النمر قد launchd.حتى إذا كنت تقوم بتشغيل ليوبارد كرون ليس خيارا.

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