utiliser ps + pipes à rallonges pour ce genre d'info je trouve cela bancale
c'est un poil tordu (quoique...), mais les infos fiables sont dans /proc :
* /proc/stat, ligne btime = date du boot du système, en secondes depuis 1970 ...
-> date -d @$( awk '/btime/ {print $2}' /proc/stat)
* /proc/<pid>/stat : champs 22 : nombre de ticks passés le boottime. ca se complique, il faut diviser cette valeur par le CLK_TCK du système, avant de l'ajouter au btime précédent pour avoir la date du lancement du process <pid>...
boot_time=$( grep -Po '^btime \K(.*)' /proc/stat )
shell_time=$(( boot_time + ( $( awk '{print $22}' /proc/$$/stat ) / $(getconf CLK_TCK) ) ))
date -d @${shell_time} me donne la date de lancement de mon shell ($$)
reste à comparer $shell_time avec un $( date -d '24 hours ago' +%s ) pour savoir s'il tourne depuis plus de 24 heures.
sinon en (beaucoup) moins tordu ...
ps -o etimes= -p <PID> : te donne le nombre de secondes depuis le lancement du process <PID>.
dans les 2 cas il reste quand meme à chopper ton PID d'une manière fiable.. ton app java te génèrerait pas un fichier /var/run/crap.pid par hasard ?
oops, après relecture, c'est le filtrage sur le bon process ton problème ?
déjà tu utilises ps proprement en filtrant ce qui t'interesse :
genre 'ps --no-header -o user,pid,etimes,command -C java'
ensuite à voir ce que ca te retourne dans ton cas précis et affiner ... (plusieurs process java, users etc ...)
---------------
I'm too old for this shit.