2015-03-21

Ubuntu Linux 用指令關閉使用者的指定連線

阿舍知道用 killall 指令就可以把特定的使用者的所有連線都給強迫登出,不過,阿舍這篇要解決的不是這個問題,阿舍這篇要介紹的是,只關閉使用者的某一個連線,也就是阿舍用同一個帳號用了很多個 SSH 來連到虛擬機器後,因某種原因,那個連線掛掉或僦無法操作了,阿舍就需要來只把那一個 SSH 連線踢掉的方法哩 !



阿舍本來以為會有現成的指令可以解決阿舍的這個問題的,結果,阿舍查了一下,有查到一個叫做 skill 的指令,不過,阿舍試了,好像沒有什麼效果哩 ! 後來,阿舍看 SSH 的 man page 說,可以在掛掉的 SSH 畫面上按下 ~. 二個字母鍵來結束 SSH,這個有用,可是,系統上的 Process 還是會掛著的,所以,阿舍就想說,用 kill 指令來砍掉應該會比較完整哩 !

就阿舍所知,每一個 SSH 連線都會有一個 PID,而有了 PID 之後,就可以用 kill 指令來砍掉這個 PID,因此,阿舍的做法是,先用 who 指令找出阿舍想要砍掉的那個連線的 pts 或 tty 編號,然後,再用 ps 指令找出這個 pts 編號所使用的 PID,最後,再用 kill 指令請這個 pid 自我了斷哩 ! ... 下面就是以阿舍要清掉 pts/2 的連線為例的操作方式 ...

$ who
arthurtoday tty1         2015-03-20 21:26
arthurtoday pts/2        2015-03-20 21:33 (192.168.1.104)

$ ps -ef | grep @pts/2
arthurt+  4441  4393  0 22:09 ?        00:00:00 sshd: arthurtoday@pts/2  
arthurt+  4455  4442  0 22:11 pts/3    00:00:00 grep sshd:

$ sudo kill -15 4441

要提醒的是,阿舍建議在用 kill 指令的時候,是用 -15 送 STOP 訊號給這 個 PID,讓它還可以在關閉前做一些清理和該做的事,這樣才不會不知不覺留下一些垃圾在系統,然後,用 -15 沒用的話,才用 -9 來直接把它殺掉哩 ! ... 供參囉 !



推薦閱讀


有疑問? 問題還是沒解決嗎? 歡迎下方留言提問和討論 😁

沒有留言 :

張貼留言

歡迎留言提問和討論 .... 😁