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

by on March 30, 2008 · 4 comments· LAST UPDATED March 31, 2015

in , ,

tmout on a Linux/Unix shell
How can I configure the bash or ksh shell to logout any user automatically after a period of idle time under a Debian Linux or any other UNIX-like operating system?

BASH, zsh, and ksh shell allows to logout all idle user setting a shell variable.

Tutorial details
DifficultyEasy (rss)
Root privilegesNo
RequirementsNone
Estimated completion time1m
The procedure is as follows to automatically log users out after a period of inactivity on a Linux or Unix-like system.

Bash, Zsh or Ksh shell logout inactivity users

You need to set TMOUT variable in seconds. For example, if set TMOUT to 300 seconds (5 minutes) to automatically logout users.

tcsh/csh shell user

You need to set autologout variable in seconds.

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

If you are using tcsh shell (must be in minutes), enter:
set -r autologout 5

Save and close the file.

Tweet itFacebook itG+ itDownload PDF versionFound an error/typo on this page?

{ 4 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

4 The_Simpsons March 30, 2015 at 1:46 pm

echo “to logout all ideal user ” | sed ‘s/ideal/idle/g’

Reply

Leave a Comment

Tagged as: , , , , , ,

Previous Faq:

Next Faq: