J'ai écrit un su.d
pour sauvegarder périodiquement (toutes les 4 heures) les données d'une application à l'aide d'un script en boucle. sleep
commandement :
#!/system/bin/sh
(
# Wait for boot to complete
until [ "$(getprop sys.boot_completed)" ]
do
sleep 300
done
while true
do
(
new_dir="/storage/emulated/0/temp/AppData/$(date '+%Y%m%d-%H%M')"
mkdir -p $new_dir
cp /data/data/com.example.app/files/*.json $new_dir
echo "$(date '+%F %T') | app data backup OK!" >> /storage/emulated/0/su.d.log
) &
sleep 14400 # 4 hours
done
) &
En pratique, le script ne sauvegarde les données qu'après le démarrage, et non pas toutes les 4 heures.
Cependant, si j'entre dans un shell distant via adb
et de ne pas y toucher, les données sont sauvegardées toutes les 4 heures.
Comment puis-je forcer la sauvegarde périodique sans être connecté en permanence à un PC (et pourquoi cela ne fonctionne-t-il pas comme prévu) ?
EDITS
-
Le commentaire de @Irfan Latif m'a donné l'idée d'essayer un autre interpréteur (busybox ash) -
#!/system/xbin/sh
), mais le résultat est le même. Je vais essayer la suggestion daemonise de @mirabilos (sh -T- -c '...'
) suivant. -
J'ai essayé la suggestion daemonise de @mirabilos avec le même résultat : sauvegarde des données seulement après le démarrage.
-
Essayé
nohup
:nohup /system/bin/sh -T- -c '...' >/dev/null 2>&1 &
Même résultat.