Je ne suis pas certain qu'il soit possible de construire une solution automatisée qui ne repose pas sur l'heuristique et l'observation/parsage de divers morceaux de /proc et /sys.
Je/nous utilisons RealVNC (Xvnc) sur RHEL4 et la version gratuite de RealVNC a tendance à faire ce que vous décrivez (je n'ai pas encore vu la version commerciale/payante de RealVNC faire cela). Il semble (je n'ai rien de mieux que des anecdotes pour étayer cela) que c'est pour nous une interaction entre (l'ancien) gnome/metacity et Xvnc qui déclenche parfois cela, car j'ai convaincu certains utilisateurs de passer à XFCE et ils n'ont pas eu de problème depuis.
Ce que je fais actuellement (la solution la plus rapide) est, par la magie de Python, de rechercher les processus avec /proc/<pid>/exe pointant vers le binaire Xvnc, d'analyser les fichiers journaux pointés par fd 2 par les processus pour déterminer depuis combien de temps l'utilisateur n'a pas utilisé la session (et dans le cas d'un fichier journal supprimé, de supposer le démarrage du processus, et de le notifier comme tel), puis de tuer les processus Xvnc qui n'ont pas été utilisés pendant quelques semaines.
Ce que j'envisage de faire, c'est d'utiliser un peu plus d'états, en échantillonnant de temps en temps /proc/<pid>/stat pour rechercher les processus Xvnc qui maintiennent une augmentation de l'utime proche de l'heure du mur sur une longue période de temps et de l'utiliser comme heuristique à la place.
Idéalement, j'aimerais trouver la cause sous-jacente de ce problème, mais faute de temps (et de volonté) pour me plonger dans les entrailles de Xvnc, je ne fais actuellement que soulager les symptômes.