Configure BASH, KSH, TCSH, ZSH Shell To Logout User Automatically After Idle Time

by on March 30, 2008 · 3 comments· LAST UPDATED May 30, 2008

in , ,

Q. How can I configure the bash shell to logout any user automatically after a period of idle time under Debian Linux or any other UNIX like operating system?

A. BASH, zsh, and ksh allows to logout all ideal user using a shell variable.

bash, zsh or ksh shell

set TMOUT variable in seconds.

tcsh shell

set autologout variable in seconds.

Append following line to your shell startup file (bash/ksh/zsh):
export TMOUT=300

If you are using tcsh, enter:
set autologout=300

TwitterFacebookGoogle+PDF versionFound an error/typo on this page? Help us!

{ 3 comments… read them below or add one }

1 MikeM December 19, 2008 at 3:57 pm

We run this script from cron every ten minutes, killing off idle sessions that are older than 30 minutes.
Note the list of exempt users. We wouldn’t want to kill the CEO’s session.

#########################
#! /usr/bin/awk -f

BEGIN {
system(“who -u | sort +5 > /tmp/loginfile”);
system(“echo User Sessions Killed > /tmp/killedlogins”);
system(“echo `date` >> /tmp/killedlogins”);
while (getline = 1) || (timearray[2] >= 30)) &&
# list of exempt users below
($1 != “root”) &&
($1 != “legacy”) &&
#($1 != “ceo”) &&
#($1 != “cio”) &&
#
{ {
system(“ps -ef | grep ” $1 ” | awk ‘{print $2}’ | xargs kill -KILL”);
print $1, “[Idle " $6 "] Session terminated from ” $8 >> “/tmp/killedlogins”;
};
};
}
system(“rm /tmp/loginfile”);
system(“chmod 644 /tmp/killedlogins”);
}

Reply

2 wdobler September 27, 2013 at 5:40 am

Note that the tcsh example should be

set autologout=5

for consistency – here the time is expressed in minutes, not seconds.

Reply

3 Ram June 26, 2014 at 4:29 am

Hi,

Is there any way to do this for plain Bourne-Style-Shell (sh).

Thanks.

Reply

Leave a Comment

Tagged as: , , , , , , , , , , ,

Previous Faq:

Next Faq: