≡ Menu

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

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 itGoogle+ itPDF itFound an error/typo on this page?

{ 4 comments… add one }

  • MikeM December 19, 2008, 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");
    }
    
  • wdobler September 27, 2013, 5:40 am

    Note that the tcsh example should be

    set autologout=5

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

  • Ram June 26, 2014, 4:29 am

    Hi,

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

    Thanks.

  • The_Simpsons March 30, 2015, 1:46 pm

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

Leave a Comment