Vérifier les processus par utilisateur
Bonjour,
En bash je souhaite vérifier qu'un utilisateur a bien lancé un processus et si ce n'est pas le cas, je veux le démarrer pour lui.
Pour le moment, j'y arrive en lancant ce script par le crontab de l'utilisateur :
Mais ce n'est pas pratique à maintenir puisque qu'il faut le mettre dans chaque crontab. Je voudrais que le système fasse ce contrôle pour tous les utilisateurs. Pour le moment je me perds un peu dans les boucles et je me demande s'il n'existe pas une recette pour ça ?
Merci pour vos idées
En bash je souhaite vérifier qu'un utilisateur a bien lancé un processus et si ce n'est pas le cas, je veux le démarrer pour lui.
Pour le moment, j'y arrive en lancant ce script par le crontab de l'utilisateur :
#!/bin/sh #/usr/local/bin/check_processus PROC_NOM=processus-daemon PROC_COMMANDE='/usr/local/bin/processus-daemon' ps auwx | grep -v grep | grep $PROC_NOM > /dev/null || $PROC_COMMANDE
Mais ce n'est pas pratique à maintenir puisque qu'il faut le mettre dans chaque crontab. Je voudrais que le système fasse ce contrôle pour tous les utilisateurs. Pour le moment je me perds un peu dans les boucles et je me demande s'il n'existe pas une recette pour ça ?
Merci pour vos idées
A voir également:
- Vérifier les processus par utilisateur
- Verifier compatibilite windows 11 - Guide
- Verifier un lien - Guide
- Vérifier si mot de passe piraté - Guide
- Verifier les appareils connectés facebook - Guide
- Vérifier si une phrase est correcte - Accueil - Google
1 réponse
Supposons que le programme à lancer soit tvtime par l'utilisateur mando. Alors cette commande (que tu peux mettre dans ta crontab) (sur une ligne) :
... va lancer tvtime si et seulement si ce programme n'est pas déjà lancé.
Petites précisions :
- $(...) évalue le résultat de la commande "..."
- || est un OU logique. Si la première opérande est vraie, alors selon le principe du "OU paresseux", la seconde ne sera pas évaluée (ce qui signifie que la commande tvtime ne sera pas lancée).
- Pour comprendre ce qui est dans $(...) lance successivement :
... et si tu veux plus de précisions :
- Enfin, le "grep -q" permet de renvoyer "vrai" ou "faux" en si le motif (ici tvtime) a été trouvé ou non dans le flux passé à grep (ici les processus lancés par mando).
Bonne chance
$(ps -eocommand,user | grep mando | cut -d" " -f1 | grep -q tvtime) || tvtime
... va lancer tvtime si et seulement si ce programme n'est pas déjà lancé.
Petites précisions :
- $(...) évalue le résultat de la commande "..."
- || est un OU logique. Si la première opérande est vraie, alors selon le principe du "OU paresseux", la seconde ne sera pas évaluée (ce qui signifie que la commande tvtime ne sera pas lancée).
- Pour comprendre ce qui est dans $(...) lance successivement :
ps -eocommand,user ps -eocommand,user | grep mando ps -eocommand,user | grep mando | cut -d" " -f1
... et si tu veux plus de précisions :
man ps man grep man cut
- Enfin, le "grep -q" permet de renvoyer "vrai" ou "faux" en si le motif (ici tvtime) a été trouvé ou non dans le flux passé à grep (ici les processus lancés par mando).
Bonne chance