Trouver processus unix en fonction de la date

Trouver processus unix en fonction de la date - Shell/Batch - Programmation

Marsh Posté le 10-12-2010 à 12:37:55    

Bonjour,
 
Sur un serveur unix, j'ai souvent des processus correspondant à des anciennes connexions de clients qui trainent
Quand l'appli se déconnecte mal (plante...), certains processus restent pour rien
 
Si je fais
 
for proc in $(ps -ef | grep discriminant | grep -v grep | cut -c9- | tr -s ' ' | cut -d' ' -f2)
 do
   kill -9 $proc
 done

 
ils sont tous killés
 
Quelle est la syntaxe à utiliser pour killer uniquement ceux dont la date/heure de début est antérieure à l'instant - x jours (ou x heures) ?
 
Merci de votre aide
 

Reply

Marsh Posté le 10-12-2010 à 12:37:55   

Reply

Marsh Posté le 14-12-2010 à 16:21:05    

avec le ps, tu peux utiliser l'option -o pour spécifier tes formats de sortie.
 
du coup je vois bien une boucle du genre :

Code :
  1. ps -e -o etime,pid,comm | grep discriminant | grep -v grep | awk '{print $1 $2}' | while read AGE PID
  2. do
  3.    [[ $(echo $AGE | grep -c '-') -gt 0 ]] && kill $PID
  4. done


 
Pour le test a toi de voir ton critère déterminant. La syntaxe du temps est la suivante :

Citation :

[dd-]hh:mm:ss


 
Le test que j'ai mis, test si un - est présent donc que le process a plus de 24h.


Message édité par Nukolau le 14-12-2010 à 16:25:53
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed