-
Alias nom d'un processus
Voilà je souhaiterai donner un alias (forcer un nom) à l'exécution d'un binaire agissant comme un processus. Par exemple le nom du binaire est mon_programme.out et le nom actuel du processus est mon_programme.
Ensuite je souhaiterai pouvoir contrôler le statu de ce programme afin de savoir si il tourne encore, et dans certains cas le tuer.
L'utilisation du PID m'est impossible car si mon processus est planté et que le PID a été réattribué, je risque de tuer le mauvais processus.
Donc pour résumé :
- Donner un nom unique à mon processus (sachant que le binaire va etre lancé plusieurs fois avec des paramètres différents donc j'aurais 4 nom de processus identiques)
- Pouvoir tuer le bon processus par rapport au nom unique trouvé
- Dans le pire des cas pouvoir récupéré la date de lancement d'un PID (celle affichée par le top) car je connais la date de lancement de mon processus qui est stockée dans un fichier de journal.
Merci.
-
Si j'étais toi, je resterai au PID... déjà, un PID ne sera réattribué que si tu es allé au bout des 32768 valeurs possibles (par défaut), donc ça laisse un peu de marge sur un système. Au pire, tu dois pouvoir la changer (voir /proc/sys/kernel/pid_max) si ton système est très gros.
Après, si tu veux être sur, pourquoi ne pas vérifier que ton PID exécute bien le bon process avant de le tuer ?!
-
C'est bien ce que je souhaiterai faire, associé la vérification du PID à celle du nom du processus mais je ne sais pas comment faire, si tu as des indications je suis toutes ouïes =)
-
ben je sais pas moi, tu lances ton process au départ, donc tu dois savoir ce que tu lances ;) après, tu compares le résultat d'un ps -fp <pid> avec ce que tu as lancé, et si c'est pas ce qu'il faut, tu ne killes pas :p
Par exemple, tu lances 4 scripts:
- toto.ksh 1
- toto.ksh 2
- toto.ksh 3
- toto.ksh 4
Si le premier a pour PID 1234, quand tu fais ps -o args 1234, tu dois avoir pareil :)
-
Il faut que je soit sur que le PID est bien celui de mon processus, car il s'agit sera contrôlé par un processus de contrôle qui le redémarrera en cas de plantage, ou bien le killera en cas de problème, et c'est pour killer ce processus que je doit etre sur que le PID que je vais utilisé à partir du journal de lancement de mon processus est bien encore le sien.
-
ben si tu fais un ps, tu vas avoir le nom du process... donc c'est c'est apache au lieu de toto.ksh, tu ne killes pas ?!
-
C'est j'ai utilisé la commande ps -a args pid, je stock le résultat dans un fichier texte, puis mon programme C analyse la chaine de caractère qui doit contenir le nom du binaire du programme si le pid correspond toujours à ce programme.
C'est parfait merci.
-