Skip to content

Instantly share code, notes, and snippets.

@maxwelleite
Forked from mnebuerquo/kill-idle-vnc.sh
Last active May 20, 2018 01:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save maxwelleite/b352dd681b74e7cf09b236e7d40c1794 to your computer and use it in GitHub Desktop.
Save maxwelleite/b352dd681b74e7cf09b236e7d40c1794 to your computer and use it in GitHub Desktop.
place in /etc/cron.hourly and it will kill any idle vnc sessions from http://serverfault.com/a/767361/33170
#!/bin/bash
# file-name: kill-idle-vnc.sh
# Author: Maxwel Leite (http://needforbits.wordpress.com/)
# Initial Author: Sherman Adelson (https://gist.github.com/mnebuerquo)
# Description: Script to kill any idle vnc sessions (for disconnected xrdp sessions)
# SRC: http://serverfault.com/a/767361/33170
displays=`ps aux | grep Xvnc | grep -v 'grep\|sed' | sed -r 's|.*(Xvnc :[0-9]*).*|\1|' | cut -d' ' -f 2`
limit=30 # in minutes
date
echo "Checking for inactive sessions!"
while read -r d; do
export DISPLAY=$d
idle=`xprintidle`
if ! [ "$idle" -eq "$idle" ] 2>/dev/null
then
echo "INFO Nothing to do, no vnc sessions found!"
exit
fi
idleMins=$(($idle/1000/60))
if [[ $idleMins -gt $limit ]]; then
# http://superuser.com/questions/909400/killing-vnc-process-manually
echo "WARN Killing display $d because it is logged in for longer than ${limit}min (${idleMins}m)"
PID=$(pgrep -f "vnc $d")
echo "Killing $d ($PID)"
kill -HUP $PID
# http://linuxtoolkit.blogspot.com/2013/03/xrdpmmprocessloginresponse-login-failed.html
FNAME=$(echo $d | sed -e 's/:/X/g')
FILENAME="/tmp/.X11-unix/$FNAME"
echo "Removing session for $d ($FILENAME)"
rm -f $FILENAME
else
echo "INFO Display $d is still ok (${idleMins}m)"
fi
done <<< "$displays"
@weteamsteve
Copy link

This has errors -_-

@DawidCh
Copy link

DawidCh commented Nov 8, 2017

idleMins=$((($idle/1000/60)) should be idleMins=$(($idle/1000/60))

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment