2013-05-25 6 views
16

Ich kann nicht Antwort auf meine Frage finden: Ist es möglich, crontab neu zu starten Android mit busybox (oder anderen Mitteln)Wie benutze ich crontab in Android?

versucht zu laufen crontab, und es beschwert sie über unbekannten uid 0

versuchte zu laufen um Neustart zu starten, und es tut nichts.

Oder ich frage jetzt nach dem Unmöglichen?

+0

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

Antwort

19

Anforderungen

  1. Root-Zugang: für Superuser commads wie Neustart oder init.d Config. Crond kann immer noch unter normalen Benutzer-Privilegien laufen.

  2. Busybox: für 'crond' Service

  3. (Optional) init.d Unterstützung: Start 'crond' Dienst beim Booten

Erstellen cronjob

das Erstellen Cronjob-Datei im Verzeichnis/data/crontab/(es kann ein beliebiges zugängliches Verzeichnis auch in SD-Karte sein) mit dem Dateinamen 'root'. Schreiben Sie Ihren Cronjob in die Datei 'root'.

echo '

53 * * * * reboot' >>/data/crontab/root

-Test ohne Neustart

nun beliebigen Terminal-Emulator in der Vorrichtung geöffnet und Führen Sie die folgenden Befehle aus.

su -

crond -b -c/data/crontab

Nun ist die crond Dienst startet, geben Sie prüfen ...

pgrep -l crond Oder ps | grep crond

starten beim Booten crond

eine Datei auf /system/etc/init.d mit Ausführbarkeitsberechtigung erstellen:

echo '

crond -b - c/data/crontab '> /system/etc/init.d/krond

chmod + x/system/etc/init.d/crond

Beispiel cronjobs

53 * * * * Neustart

Wird starten Sie Ihr Gerät auf der 53. Minute jeder Stunde.

Hinweis: 1. Wenn Sie crontab ändern, denken Sie daran crond Daemon neu starten, nachdem die vorhandenen töten.

  1. Manchmal kann der CRON nicht auf Android-Zeitzone weitergeleitet werden, stattdessen kann UTC verwendet werden.
+0

In Abschnitt 'Start crond at boot' Befehl sollte nicht' sein crond -b -c/data/crond' aber 'crond -b -c/data/cronjob' – zen

0

wenn Sie Fehler "Nur-Lese-Dateisystem", können Sie die/system als read-write mounten müssen:

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

Wenn Sie fertig sind, wieder montieren sie als schreibgeschützt:

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

Sie müssen Ihre TimeZone wahrscheinlich einstellen und einen Root-Benutzer hinzufügen. Das Hinzufügen eines Root-Benutzers kann folgendermaßen durchgeführt werden:

Die richtige TimeZone-Zeichenfolge ist ungerade. Setzen Sie die TZ-Umgebungsvariable auf den Zeitzonen-String und vergewissern Sie sich, dass crond sie bekommt. Ich habe es unter Kontrolle einer GUI-Umgebung und verwende die folgenden, um die TimeZone zu bekommen (möglicherweise nicht korrekt, da ich es noch nicht in anderen Zeitzonen getestet habe).

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"; 
} 

Auch sollten Sie Ihre crontab für den Benutzer (root) genannt wird und auch von diesem Benutzer gehören. Wenn Sie die Crontab auf Ihrem internen Speicher so einstellen, dass Sie sie mit Android Texteditoren bearbeiten können, können Sie einen Symlink zu/data/media/0 erstellen. Ich benutze/system/etc/crontabs/root ->/data/media/0/Cron/master

Sie verwenden/data/media und/storage oder/sdcard, weil letztere ein FUSE-Dateisystem ist, das den zugrunde liegenden Unix verbirgt Dateisystemberechtigungen und Eigentumsrechte, also müssen Sie die Eigentumsrechte für das echte Dateisystem in/data festlegen.

Wenn Sie eine ältere Android, das Fett oder YAFFS oder was auch immer für den internen Speicher verwendet dann könnten Sie Ihre crontabs in/System

Beachten Sie, dass cron halten müssen nicht immer, da es auf Zeit unter Android laufen verschläft gerne.