1 votes

Tasker : vérifie continuellement le résultat de la commande shell et lance la tâche lorsqu'elle correspond.

J'ai la commande shell suivante qui vérifie si un processus particulier est en cours d'exécution :

pgrep -x com.package.name

Il renvoie un identifiant de processus si le processus est en cours d'exécution, ou il renvoie une valeur vide s'il ne l'est pas. Comment puis-je intégrer cela dans un profil de tasker qui vérifie toutes les quelques secondes et exécute une tâche lorsqu'il voit que le résultat est vide ?

L'objectif ultime est de maintenir un temps de fonctionnement proche de 100 % sur un processus qui a tendance à tomber en panne plusieurs fois par jour.

2voto

Firelord Points 23064

Je vois deux façons de faire ce que vous voulez.

Exécutez un profil basé sur le temps et configurez-le pour qu'il se répète à chaque fois qu'il y a un problème. n minutes. Ensuite, suivez vos actions logiques dans la tâche de ce qu'il faut faire quand il se plante.

L'autre option (puisque la première ne donne pas le contrôle sur les secondes mais sur les minutes et les heures) est d'exécuter la tâche manuellement ou à un moment donné automatiquement (disons à 10:00 AM) mais de faire une tâche en boucle infinie.

Par exemple, considérez les actions suivantes :

Note : Tout ce qui est avec et entre <> doit être remplacé par vos valeurs personnalisées.

  1. Code → Exécuter le shell

    • Commandement : <YOUR_COMMAND>
    • Store Output In : %Grep
  2. Créez cette action en fonction de ce qu'il faut faire lorsque la commande ci-dessus ne renvoie rien, c'est-à-dire lorsque le processus n'est pas en cours d'exécution.

    Ce faisant, définissez une condition "Si" sous cette action. Par exemple, sous l'action App → Lancer l'application El If La condition serait %Grep Isn't Set .

    Notez que je ne parle pas de l'utilisation d'un système séparé de If action.

  3. Ajoutez une attente de la quantité de secondes/minutes/heures que vous souhaitez en utilisant Tâche → Attente.

  4. C'est le moment de faire une boucle infinie. Utilisez l'action Task → Goto

    • Type : Numéro d'action
    • Numéro : 1

Tout ce que nous avons fait ici est d'exécuter une commande, puis d'exécuter une action si la première commande n'a rien donné, puis d'attendre un certain temps et de répéter toute la procédure.

À un moment donné, vous voudrez vous débarrasser de cette boucle infinie. Vous pouvez soit envisager de désactiver et de réactiver Tasker, soit effectuer une action d'arrêt dans une autre tâche en utilisant Tâche → Arrêt, et l'exécuter manuellement.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X