how to kill the tty in unix

前端 未结 10 1500
遇见更好的自我
遇见更好的自我 2020-12-23 20:52

This is the result of the finger command (Today(Monday) when I (Vidya) logged in)

sekic1083 [6:14am] [/home/vidya] -> finger
Name        Tty          


        
相关标签:
10条回答
  • 2020-12-23 21:52

    I had the same question as you but I wanted to kill the gnome terminal which I was in. I read the manual on "who" and found that you can list all of the sessions logged into your computer with the '-a' option and then the '-l' option prints the system login processes.

    who -la
    

    What who gave me You should get something like this. Then all you have to do is kill the process with the 'kill' command.

    kill <PID>
    
    0 讨论(0)
  • 2020-12-23 21:55

    The simplest way is with the pkill command. In your case:

    pkill -9 -t pts/6
    pkill -9 -t pts/9
    pkill -9 -t pts/10
    

    Regarding tty sessions, the commands below are always useful:

    w - shows active terminal sessions

    tty - shows your current terminal session (so you won't close it by accident)

    last | grep logged - shows currently logged users

    Sometimes we want to close all sessions of an idle user (ie. when connections are lost abruptly).

    pkill -u username - kills all sessions of 'username' user.

    And sometimes when we want to kill all our own sessions except the current one, so I made a script for it. There are some cosmetics and some interactivity (to avoid accidental running on the script).

    #!/bin/bash
    MYUSER=`whoami`
    MYSESSION=`tty | cut -d"/" -f3-`
    OTHERSESSIONS=`w $MYUSER | grep "^$MYUSER" | grep -v "$MYSESSION" | cut -d" " -f2`
    printf "\e[33mCurrent session\e[0m: $MYUSER[$MYSESSION]\n"
    
    if [[ ! -z $OTHERSESSIONS ]]; then
      printf "\e[33mOther sessions:\e[0m\n"
      w $MYUSER | egrep "LOGIN@|^$MYUSER" | grep -v "$MYSESSION" | column -t
      echo ----------
      read -p "Do you want to force close all your other sessions? [Y]Yes/[N]No: " answer
      answer=`echo $answer | tr A-Z a-z`
      confirm=("y" "yes")
    
      if [[ "${confirm[@]}" =~ "$answer" ]]; then
      for SESSION in $OTHERSESSIONS
        do
             pkill -9 -t $SESSION
             echo Session $SESSION closed.
        done
      fi
    else
            echo "There are no other sessions for the user '$MYUSER'".
    fi
    
    0 讨论(0)
  • 2020-12-23 21:57

    I had the same problem today. I had NO remaining processes, but the remaining finger entry of user "xxx", which prevent me the deletion of this user using "userdel xxx".

    Error message was: userdel: account `xxx' is currently in use.

    It looked like a crashed terminal session. So I rebooted, but the issue remained.

    last xxx
    xxx      pts/5        10.1.2.3     Fri Feb  7 10:25 - crash  (01:27)
    

    So I (re)moved the /var/run/utmp file:

    mv /var/run/utmp /var/run/utmp.save ; touch /var/run/utmp
    

    This cleared all finger entries. Unfortunately in this way even the current running sessions will be cleared. If this is an issue for you, you have to reboot, after you (re)moved the utmp file.

    However in my case this was the solution. Afterwards I was able to successfully delete the user, using "userdel xxx".

    0 讨论(0)
  • 2020-12-23 21:57

    you do not need to know pts number, just type:

    ps all | grep bash

    then:

    kill pid1 pid2 pid3 ...

    0 讨论(0)
提交回复
热议问题