2013-05-25 5 views
16

मैं अपने सवाल का जवाब नहीं मिल सकता है: यह एंड्रॉयड busybox का उपयोग कर (या अन्य साधनों)Android में crontab का उपयोग कैसे करें?

crontab भागने की कोशिश की रिबूट करने crontab को चलाने के लिए संभव है, और यह अज्ञात uid के बारे में शिकायत 0.

की कोशिश की रीबूट चलाने के लिए, और यह कुछ भी नहीं करता है।

या मैं अभी असंभव पूछ रहा हूं?

+0

http://stackoverflow.com/questions/13063106/how-to-install-busybox-on-android-emulator-android-2-3-3 – Sam

उत्तर

19

आवश्यकताओं

  1. रूट पहुँच: रिबूट, या init.d config की तरह सुपर उपयोगकर्ता commads के लिए। क्रॉन्ड अभी भी सामान्य उपयोगकर्ता निजी के तहत चलाया जा सकता है।

  2. बिजीबॉक्स: 'crond' सेवा

  3. (वैकल्पिक) init.d समर्थन के लिए: बूट

बनाना cronjob पर 'crond' सेवा शुरू करने के लिए

बनाएं फ़ाइल नाम 'रूट' के साथ निर्देशिका/डेटा/crontab/(यह एसडीकार्ड में भी किसी भी सुलभ निर्देशिका हो सकता है) में cronjob फ़ाइल। फ़ाइल 'रूट' के अंदर अपना cronjob लिखें। रिबूट

अब डिवाइस में किसी भी टर्मिनल एमुलेटर को खोलने के बिना

गूंज '

53 * * * * रिबूट' >>/डेटा/crontab/जड़

टेस्ट और निम्न आदेश चलाएं ..

su-

crond बी -c/डेटा/crontab

अब crond सेवा, शुरू कर देंगे प्रकार की जांच करने के लिए ...

pgrep -l crond या, ps | ग्रेप

प्रारंभ Crond Crond बूट

निष्पादन योग्य अनुमति के साथ /system/etc/init.d पर एक फ़ाइल बनाने में:

गूंज '

crond बी - सी/डेटा/क्रोंटैब '> /system/etc/init.d/crond

chmod + x/system/etc/init।घ/crond

उदाहरण cronjobs

53 * * * * रिबूट

हर घंटे का 53 वें मिनट पर अपने उपकरण को रीबूट होगा।

नोट: 1. आप, crontab संशोधित मौजूदा एक की हत्या के बाद crond डेमॉन को पुनः आरंभ करने के लिए याद करते हैं।

  1. कभी-कभी, क्रॉन्ड एंड्रॉइड टाइमज़ोन पर रिले नहीं हो सकता है, यह इसके बजाय यूटीसी का उपयोग कर सकता है।
+0

अनुभाग में 'बूट पर प्रारंभ क्रॉन्ड' कमांड ' क्रॉन्ड-बी-सी/डेटा/क्रॉन्ड 'लेकिन' क्रॉन्ड-बी-सी/डेटा/क्रोनबॉज ' – zen

0

यदि आप त्रुटि मिलती है "केवल फाइल सिस्टम पढ़ने", आप पढ़ने-लिखने के रूप में/प्रणाली को पुन: माउंट की जरूरत है:

mount -o rw,remount /dev/stl12 /system 

पूर्ण होने पर, यह के रूप में केवल पढ़ने के लिए पुन: माउंट:

mount -o ro,remount /dev/stl12 /system 
0

आपको अपने टाइमज़ोन को सेट करने और रूट उपयोगकर्ता जोड़ने की आवश्यकता होगी। रूट उपयोगकर्ता जोड़ना इस प्रकार किया जा सकता है:

echo "root:x:0:0::/system/etc/crontabs:/system/bin/sh" > /system/etc/passwd 

सही टाइमज़ोन स्ट्रिंग प्राप्त करना विषम है। TZ पर्यावरण चर को टाइमज़ोन स्ट्रिंग पर सेट करें और सुनिश्चित करें कि क्रॉन्ड इसे प्राप्त करता है। मेरे पास यह एक जीयूआई पर्यावरण के नियंत्रण में है, और टाइमज़ोन प्राप्त करने के लिए निम्न का उपयोग करें (सही नहीं हो सकता है क्योंकि मैंने अभी तक अन्य टाइमज़ोन पर इसका परीक्षण नहीं किया है)।

public static String findTZS() { 
    String date = ZooGate.readShellCommand("date"); 
    String[] elements = date.split(" "); 
    String label = elements[4]; 
    TimeZone tz = Calendar.getInstance().getTimeZone(); 
    boolean dlt = tz.useDaylightTime(); 
    int offset = tz.getDSTSavings()/600000; 
    DateFormatSymbols dfs = DateFormatSymbols.getInstance(); 
    String[][] z = dfs.getZoneStrings(); 
    for (String[] za: z) { 
     if (dlt) { 
      if (za[4].equals(label)) { 
       return za[2] + offset + za[4]; 
      } else if (za[2].equals(label)) { 
       return za[2] + offset + za[4]; 
      } 
     } 
    } 
    return "UTC"; 
} 

यह भी सुनिश्चित करें अपने crontab उपयोगकर्ता (रूट) के लिए नामित किया गया है और यह भी कि उपयोगकर्ता के स्वामित्व हो। यदि आप अपने आंतरिक स्टोरेज पर क्रॉन्टाब सेट करते हैं ताकि आप इसे एंड्रॉइड टेक्स्ट एडिटर्स के साथ संपादित कर सकें, तो आप इसे/डेटा/मीडिया/0 पर सिमलिंक बना सकते हैं। मैं/सिस्टम/आदि/crontabs/root ->/डेटा/मीडिया/0/क्रोन/मास्टर

आप/डेटा/मीडिया और/स्टोरेज या/एसडीकार्ड का उपयोग करते हैं क्योंकि बाद वाला एक FUSE फाइल सिस्टम है जो अंतर्निहित यूनिक्स को छुपाता है फ़ाइल सिस्टम अनुमतियां और स्वामित्व, इसलिए आपको वास्तविक फाइल सिस्टम/स्वामित्व पर स्वामित्व सेट करने की आवश्यकता है।

आप किसी पुराने Android फैट या YAFFS या आंतरिक भंडारण के लिए तो आप हो सकता है जो कुछ भी उपयोग करता है में अपने crontabs रखने के लिए/प्रणाली

कि क्रॉन खबरदार हमेशा यह बाद से एंड्रॉयड के तहत समय पर नहीं चलता है है, तो सोना पसंद है।

संबंधित मुद्दे