البدء مع cronjobs على ماك
سؤال
أحاول التعرف على وظائف كرون، وأعتقد أنني أحصل على الفكرة الأساسية (الجدولة، بناء الجملة، إلخ)، ولكن، لا يبدو لي أن أحصل عليه مباشرة على جهاز Mac الخاص بي مع محطة - حيث أجد بالضبط crontab؟ كيف يمكنني الرجوع إلى المسارات إلى البرامج النصية؟
ما أحاول القيام به هو ضرب برنامج نصي PHP على جهاز بعيد (http: // ...) - هل هذا ممكن على الإطلاق؟
المحلول
للبدء مع LaunchD (بدلا من Cron)، ستحتاج إلى أولا إنشاء فارغة .plist
ملف، على سبيل المثال local.mytask.plist
ووضعها في مكان ما. ~/Library/LaunchAgents
ربما مكان جيد. افتح ذلك في محرر النصوص ونسخه في التعليمات البرمجية أدناه
<?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>KeepAlive</key>
<false/>
<key>Label</key>
<string>local.mytask</string>
<key>ProgramArguments</key>
<array>
<string>/opt/local/bin/wget</string>
<string>http://someserver/somepage.php</string>
</array>
<key>StartInterval</key>
<integer>300</integer>
<key>RunAtLoad</key>
<true />
<key>StandardErrorPath</key>
<string>/dev/null</string>
<key>StandardOutPath</key>
<string>/dev/null</string>
</dict>
</plist>
ثم "تنشيط" الملف من سطر الأوامر:
sudo launchctl load /Users/my_username/Library/LaunchAgents/local.mytask.plist
لجعلها تحميل تلقائيا، قم بإنشاء ~/.launchd.conf
ملف مع نفس السطر (ناقص sudo launch
)
load /Users/my_username/Library/LaunchAgents/local.mytask.plist
تم نسخ الإرشادات المذكورة أعلاه من www.davidlanier.com. وإعادة إرسالها هنا للرجوع اليها.
نصائح أخرى
اكتب crontab -e
لتعديل جدول Cron الخاص بك و crontab -l
لسرد المحتويات الحالية .. النوع man 1 crontab
لمزيد من المعلومات حول هذا الأمر و man 5 crontab
لمزيد من المعلومات حول تنسيق ملف جدول Cron.
على سبيل المثال، لتنزيل صفحة Stackoverflow كل يوم في الساعة 10: 00A، تشغيل crontab -e
, ، أدخل هذا السطر، ثم احفظ / استقال. سيتم كتابة الإخراج إلى ملف في الدليل الرئيسي الخاص بك.
0 10 * * * /usr/bin/curl -s http://stackoverflow.com > ~/stackoverflow.html
على فرصة قبالة أن شخصا آخر يقاتل مع كرون على نمر الثلج يتعثر عبر هذا، سأحرج هذا الموضوع القديم.
نعم، من المفترض أن تحل إطلاق Launchd استبدال كرون، ولكن في الواقع، لا يمكن القيام بأشياء معينة من الأشياء التي يمكن cron.
لم يتم دمج كرون جيدا. إذا أرسل رسالة، فهي تنتهي في / var / mail / user_name والتي بالطبع بريد Apple لا يعرف شيئا عنه.
Crontab -e يلقي قائلا "يجب تحرير ملف TEMP في مكانه". على ما يبدو VIM ليس vi متوافق. يمكنك بعد ذلك القيام به Crontab "</tmp/crontab.whathating" (إلقاء نظرة على / TMP وشاهد ما الاسم المستخدم بالفعل) وسوف ينتهي الأمر في المكان المناسب، ويفترض أنك لم تصنع خطأ مطبعي، وسيعمل.
نعم، استغرق الأمر بعض الوقت لفرز هذا كل شيء :(
LaunchD قوية، لكنك حقا لا تريد أن تكتب تخفيف نفسك. احصل على لينغون. وبعد إنه GUI مفتوح المصدر ومصمم بشكل جيد حقا لإنشاء وإدارة مهام إطلاق النظام الخاصة بك.
تم استبدال كرون ب إطلاق منذ 10.4. ربما يجب عليك كتابة مهامك باستخدام هذا إلا إذا كنت تخطط لافتانها لأنظمة Linux / Unix في مرحلة ما.
إذا قررت أن تذهب مع كرون على أي حال، فحاول الكتابة crontab -e
أو sudo crontab -e
. وبعد ستمنحك هذه ملفات Crontab مختلفة، السابق للمستخدم الذي تعمل حاليا كما هو الأخير للمستخدم الجذر.
"ضرب" عنوان URL يمكن أن يتحقق الكثير من الطرق. اعتمادا على البرنامج النصي المحلي الذي تستخدمه "ضرب"، يمكنك استخدام بعض الأساليب / الفئات المدمجة في اللغة. على سبيل المثال، سوف يستخدم البرنامج النصي الروبي صافي / http. ولكن يمكنك تجربة حليقة أيضا إذا كنت تكتب سيناريو باش. يفعل man curl
لمعرفة المزيد، ولكن الأمر الأساسي هو فقط curl http://google.com
.
لم تعد تريد أن تستخدم كرون. كما ذكر آخرون بالفعل، تم استبداله بطلق تطلق ويقوم بوضوح أن يكون مستقبل ماك OS X.
تقوم مجلة MACTECH مؤخرا بقيام سلسلة من المقالات عن إطلاقها وسأوصي بشدة بقراءةها. وأنا أعلم أنني تعلمت بالتأكيد الكثير.
سبتمبر 2009 (المجلد 25، العدد 9) 25.09 Macenterprise: LaunchD للغداء
أكتوبر 2009، (المجلد 25، العدد 10) ليوبارد سنو، إطلاق، وغداء المزيد من وصفات Launchd، وإلقاء نظرة على التغييرات في سنو ليوبارد
كانت هناك مقالات أخرى في mactech وأود أن أقترح البحث في موقعها.