Intereting Posts
Eclipse – отключение компиляции XML-файлов в перспективе Java Не удалось создать интерактивное приложение на Android-устройстве: не удалось найти цель с хэш-строкой 'android-23' Команда терминала для корневого Android для перемонтирования / системы как чтение / запись Пример и объяснение для Android AsyncTask Мгновенный запуск в Android Studio 2.0 (как отключить) Как отладить приложение Google Glass GDK? Изменить размер Drawable в Android Использование поддерживаемого программным обеспечением / аппаратным обеспечением Keystore для Android и возможных недостатков безопасности / удобства использования Как определить, вернулась ли из детской активности? Скользящий один фрагмент над другим в Android Предварительная загрузка нескольких изображений с помощью Glide Ошибка установки: INSTALL_PARSE_FAILED_MANIFEST_MALFORMED? В чем смысл requestCode в startActivityForResult Как обрабатывать код, когда приложение убито путем прокрутки в android? Как показать DatePickerDialog при нажатии кнопки?

Как использовать crontab в Android?

Я не могу найти ответ на свой вопрос: возможно ли запустить crontab для перезагрузки Android с помощью busybox (или других средств)

Пытался запустить crontab, и он жалуется на неизвестный uid 0.

Пытался запустить перезагрузку, и он ничего не делает.

Или я сейчас прошу о невозможности?

Solutions Collecting From Web of "Как использовать crontab в Android?"

Requrements

Доступ 1.Root

2.Busybox: для услуги 'crond'

3.init.d: ​​запустить службу «crond» при загрузке

Создание cronjob

Создайте файл cronjob в каталоге / data / crontab / с корнем имени файла. Напишите свой cronjob внутри файла «root». Установите исполняемые разрешения для файла 'root'

Эхо "

53 * * * * reboot> / dev / null 2> & 1 '>> / data / crontab / root

Chmod + x / data / crontab / root

Тест без перезагрузки

Теперь откройте любой эмулятор терминала в устройстве и запустите следующие команды.

Su –

Crond -b -c / data / crontab

Теперь начнется услуга колла, чтобы проверить тип …

Наверх | Grep crond

Начать ковер при загрузке

Создайте файл на /system/etc/init.d с исполняемым разрешением:

Эхо "

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

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

Пример cronjobs

53 * * * * перезагрузка

Перезагрузите устройство на 53-й минуте каждого часа.

Если вы получите сообщение об ошибке «только для чтения файловой системы», вам необходимо перемонтировать / system как read-write:

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

Когда это будет сделано, перемонтируйте его как только для чтения:

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

Вероятно, вам нужно будет установить TimeZone и добавить пользователя root. Добавление пользователя root может быть выполнено следующим образом:

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

Получение правильной строки TimeZone нечетно. Установите переменную среды TZ в строку часового пояса и убедитесь, что она получена от нее. Я имею это под управлением среды GUI и использую следующее для получения TimeZone (может быть, не так, как я еще не тестировал его в других часовых поясах).

 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 назван для пользователя (root) и также принадлежит этому пользователю. Если вы установили crontab на внутреннюю память, чтобы вы могли редактировать ее с помощью текстовых редакторов Android, вы можете сделать ее символической ссылкой на / data / media / 0. Я использую / system / etc / crontabs / root -> / data / media / 0 / Cron / master

Вы используете / data / media и / storage или / sdcard, потому что последняя представляет собой файловую систему FUSE, которая скрывает основные права и права файловой системы Unix, поэтому вам необходимо установить право собственности на настоящую файловую систему в / data.

Если у вас более старый Android, который использует Fat или YAFFS или что-то другое для внутреннего хранилища, вам, возможно, придется держать ваши crontabs в / system

Остерегайтесь, что cron не всегда работает вовремя под Android, так как ему нравится просыпаться.