안녕하세요. 이번 시간에는 제 집에 구축한 서버를 켰을 때 습관적으로 쓰는 명령어들 중에 하나인 w를 풀어보도록 하겠습니다.

 


 저는 w 명령어를 틈날 때마다 치는 편인데요. 이 명령어는 누가 로그인을 하고 있는 상태이고, 무엇을 하고 있는지 보는 명령어입니다.

 

 

 제 서버에 접속해서, w 명령어를 쳐 보겠습니다. 그러면, USER가 cho가 있는데요. pts/0으로 로그인이 되어 있고, pts/1로도 로그인이 되어 있음을 볼 수 있어요. 여기서 제가 중요하게 보는 것은 USER, TTY, FROM, LOGIN 이 네 부분입니다. LOGIN은 언제 로그인을 했는지 알려줍니다.

 

 그리고 둘 다, cho 라는 유저로 로그인이 되어 있습니다. TTY가 다르다는 것을 볼 수 있는데요. 이는 밑에서 언급해 보겠습니다.

 

 

 제 클라이언트 컴퓨터는 window 10을 쓰고 있는데요. ipconfig 명령어를 입력하면, ip 구성을 볼 수 있습니다.

 

 

 밑으로 내려 보면, 무선 LAN 어댑터 wi-fi를 쓰고 있다는 것을 알 수 있습니다. 172.30.1.8이 표시되었음을 알 수 있습니다. 집에 있는 제 컴퓨터에서 유저 cho로, 서버에 로그인을 했다는 것을 알 수 있습니다.

 


 그러면 왜 TTY가 다를까요? man tty 페이지를 보면, 터미널과 연결되어 있는 파일을 출력한다고 적혀 있습니다. 저는 mobaxterm을 쓰는데요. 아래와 같이 2개의 탭에서 cho라는 유저로 로그인을 하였습니다.

 

 

 보시면 2번 탭에서 tty를 치면 /dev/pts/0이라고 뜹니다.

 

 

 3번 탭에서 tty를 치면 /dev/pts/1로 뜨는데요. 만약에 2번 탭과, 3번 탭에서 터미널과 연관된 파일이 같았다면, tty를 2번에도, 3번에도 입력하였으니, 같이 출력이 되었어야 할 겁니다만. 별개로 돌아가고 있음을 알 수 있어요. 2번 탭에 ls 명령어를 쳐도, 3번 탭과 연결된 무언가에는 영향을 미치지 않습니다. 일단, 여기에서는 이 정도만 짚고 넘어가도 좋을 듯 싶어요.

 


 그러면, 강제로 로그아웃은 어떻게 시킬까요? 이 부분에 대해서는 요 질답글에 나왔으니, 한 번 이용해 보겠습니다.

 

 

 먼저, cho가 로그인 되어 있는데요. 하나는 pts/0과 연결되어 있고, 또 다른 하나는 pts/1과 연결되어 있습니다.

 

 

 who 명령어를 -u 옵션을 주어서 치면, 2150과 3516이 나오는데요. 이들은 각각 연결된 터미널과 관련된 pid입니다. 실제로, 이 경우에, ps -aux | grep 23490 이렇게 치면, sshd 어쩌고 저쩌고가 같이 걸려 나오는 것을 알 수 있습니다. 그리고 이 man 페이지에 따르면, who 명령어에 -aH 옵션을 준 경우에는 헤더와 전체 정보를 출력할 수 있다고 되어 있습니다.

 

 pts/1로 로그인 된 유저를 강제로 로그아웃 시키고 싶습니다. 그러면 단지, 해당 프로세스에게 특정 시그널을 보내주면 됩니다.

 

 

 위 명령어를 치면, pts/1로 로그인 된 cho에게 어떤 일이 일어날까요?

 

 

 로그 아웃이 되어버립니다.