Linux下如何知道是否有人在使壞?
在 Linux 下檢視使用者的行為,不僅僅是網管要做的事,也是開發人員所應該具備的基本技能之一。為什麼呢?因為有時其他同事在做一些很消耗資源的事情,比如在編譯大型程式,可能會導致伺服器變得很慢,從而影響我們的正常操作。這個時候,我們就可以透過本文所介紹的方法,揪出那個同事,將他暴打一頓,就可以恢復伺服器的正常使用了。
我是誰?
「我是誰?我從哪裡來?我要去哪裡?」哲學經典三大問題。同樣,在工作中,有時候我們會經常進行賬號切換,有時切著都忘了切到哪個使用者了。這時,需要知道當前登入的使用者是啥。我們可以用 whoami
來進行檢視。
[alvin@VM_0_16_centos ~]$ whoami
alvin
目前都有誰登入到系統裡?
一個公司裡通常只有少數幾臺伺服器,程式猿們一般都在這幾臺伺服器裡工作。我們可以用 who
命令來檢視當前登入到伺服器的使用者有哪一些。
[alvin@VM_0_16_centos ~]$ who
alvin pts/0 2018-12-09 07:25 (116.199.***.***)
root pts/1 2018-12-09 11:05 (116.199.***.***)
alvin pts/2 2018-12-09 11:05 (116.199.***.***)
harry pts/3 2018-12-09 11:06 (116.199.***.***)
kate pts/4 2018-12-09 11:08 (116.199.***.***)
alvin pts/5 2018-12-09 11:53 (116.199.***.***)
在顯示結果裡,第一列是使用者名稱;第二列是連線的終端,tty 表示顯示器,pts 表示遠端連線;第三列是登陸時間。
這裡資訊稍微多一些,但如果我們只想知道誰線上要怎麼操作?只需用 users
命令來檢視即可。
[alvin@VM_0_16_centos ~]$ users
alvin alvin alvin harry kate root
那些登入到系統裡的人都在幹什麼?
知道了誰登入到系統裡,我們就可以進一步調查他們在做什麼。w
命令用於顯示已經登入系統的使用者的名稱,以及他們正在做的事。該命令所使用的資訊來源於/var/run/utmp檔案。
[alvin@VM_0_16_centos ~]$ w
16:25:54 up 29 days, 6:05, 6 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
alvin pts/0 116.199.***.** 07:25 2.00s 0.11s 0.00s w
root pts/1 116.199.***.** 11:05 5:20m 0.02s 0.02s -bash
alvin pts/2 116.199.***.** 11:05 5:20m 0.04s 0.05s sshd: alvin [priv]
harry pts/3 116.199.***.** 11:06 4:33m 18.08s 18.06s watch date
kate pts/4 116.199.***.** 11:08 4:33m 10.51s 10.48s top
alvin pts/5 116.199.***.** 11:53 4:32m 0.02s 0.02s -bash
第一行其實與 uptime
命令出來的結果一樣,依次表示:當前時間、系統執行時間、當前系統登入使用者數、平均負載。
從第二行開始構成一個表格,共有8個欄目,分別顯示各個使用者正在做的事情及該使用者所佔用的系統資源。
USER:顯示登陸使用者帳號名。使用者重複登陸,該帳號也會重複出現。
TTY:使用者登陸所用的終端。
FROM:顯示使用者在何處登陸系統。
LOGIN@:是LOGIN AT的意思,表示登陸進入系統的時間。
IDLE:使用者空閒時間,從使用者上一次任務結束後,開始記時。
JCPU:一終端代號來區分,表示在某段時間內,所有與該終端相關的程式任務所耗費的CPU時間。
PCPU:指WHAT域的任務執行後耗費的CPU時間。
WHAT:表示當前執行的任務
如果說我們只想檢視某個使用者當前的行為,我們可以直接在 w
後跟上該使用者名稱:
[alvin@VM_0_16_centos ~]$ w alvin
16:34:21 up 29 days, 6:14, 6 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
alvin pts/0 116.199.***.** 07:25 5.00s 0.12s 0.06s sshd: alvin [priv]
alvin pts/2 116.199.***.** 11:05 5:28m 0.04s 0.05s sshd: alvin [priv]
alvin pts/5 116.199.***.** 11:53 4:40m 0.02s 0.02s -bash
如何知道當前與過去登入系統的使用者的資訊?
有些人比較狡猾,做了壞事拒不承認。但是,在 Linux 裡,每個使用者的登入資訊都會記錄起來,這樣查詢相關人員的責任就有所依據。
last命令可用於顯示特定使用者登入系統的歷史記錄。如果沒有指定任何引數,則顯示所有使用者的歷史資訊。在預設情況下,這些資訊(所顯示的資訊)將來源於/var/log/wtmp檔案。該命令的輸出結果包含以下幾列資訊:
- 使用者名稱稱
- tty裝置號
- 歷史登入時間日期
- 登出時間日期
- 總工作時間
[alvin@VM_0_16_centos ~]$ last
alvin pts/5 116.199.***.** Sun Dec 9 11:53 still logged in
kate pts/4 116.199.***.** Sun Dec 9 11:08 still logged in
harry pts/3 116.199.***.** Sun Dec 9 11:06 still logged in
alvin pts/2 116.199.***.** Sun Dec 9 11:05 still logged in
root pts/1 116.199.***.** Sun Dec 9 11:05 still logged in
alvin pts/0 116.199.***.** Sun Dec 9 07:25 still logged in
alvin pts/0 116.199.***.** Sat Dec 8 20:42 - 23:10 (02:28)
alvin pts/0 119.33.***.** Mon Dec 3 20:50 - 23:51 (1+03:01)
alvin pts/0 119.33.***.** Thu Nov 29 20:20 - 22:45 (02:24)
alvin pts/0 223.104.***.** Thu Nov 29 06:46 - 07:00 (00:14)
alvin pts/0 223.104.***.** Wed Nov 28 20:45 - 22:27 (01:42)
alvin pts/1 14.25.***.*** Sun Nov 25 19:50 - 21:09 (01:18)
alvin pts/0 119.33.***.** Sun Nov 25 16:32 - 21:40 (05:07)
如果我們只想看某個人的歷史記錄,則在last後跟上對應的使用者名稱即可:
[alvin@VM_0_16_centos ~]$ last alvin
alvin pts/5 116.199.***.** Sun Dec 9 11:53 still logged in
alvin pts/2 116.199.***.** Sun Dec 9 11:05 still logged in
alvin pts/0 116.199.***.** Sun Dec 9 07:25 still logged in
alvin pts/0 116.199.***.** Sat Dec 8 20:42 - 23:10 (02:28)
alvin pts/0 119.33.***.** Mon Dec 3 20:50 - 23:51 (1+03:01)
alvin pts/0 119.33.***.** Thu Nov 29 20:20 - 22:45 (02:24)
alvin pts/0 223.104.***.** Thu Nov 29 06:46 - 07:00 (00:14)
alvin pts/0 223.104.***.** Wed Nov 28 20:45 - 22:27 (01:42)
踢除使壞人員
透過以上幾個命令,我們可以大概知道某些使用者的行為。如果我們想要踢除使壞的人員,可以使用 pkill -u
命令。
pkill -u alvin
但這個命令相當危險,有可能導致系統重啟,所以不推薦使用這個命令。比較安全的做法是使用 pkill
命令。
[alvin@VM_0_16_centos ~]$ sudo pkill -kill -t pts/3
#harry使用者已經被踢除了
[alvin@VM_0_16_centos ~]$ w
17:04:37 up 29 days, 6:44, 5 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
alvin pts/0 116.199.102.65 07:25 5.00s 0.12s 0.00s w
root pts/1 116.199.102.65 11:05 5:59m 0.02s 0.02s -bash
alvin pts/2 116.199.102.65 11:05 5:59m 0.04s 0.05s sshd: alvin [priv]
kate pts/4 116.199.102.65 11:08 5:12m 11.94s 11.91s top
alvin pts/5 116.199.102.65 11:53 5:10m 0.02s 0.02s -bash
最後,最近很多小夥伴找我要Linux學習路線圖,於是我根據自己的經驗,利用業餘時間熬夜肝了一個月,整理了一份電子書。無論你是面試還是自我提升,相信都會對你有幫助!目錄如下:
免費送給大家,只求大家金指給我點個贊!
也希望有小夥伴能加入我,把這份電子書做得更完美!
有收穫?希望老鐵們來個三連擊,給更多的人看到這篇文章
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1747/viewspace-2826134/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何在 Linux 下確認 NTP 是否同步?Linux
- Linux怎麼知道服務是否啟動?Linux
- linux下修復磁碟損壞Linux
- 如何使用git下載別人在github的程式碼?Github
- Linux下的OpenSSH,你知道多少?Linux
- 如何確定MacBook充電器或電池是否損壞Mac
- 如何知道是否有人正在進行網路攻擊
- Linux系統下如何配置DNS?這些你肯定不知道!LinuxDNS
- 你知道如何學習Linux嗎?Linux
- linux檔案系統損壞如何修復Linux
- 使用者下載已簽名的軟體後 如何知道數字簽名是否可信
- 如何才能知道佈線工程是否符合行業標準?行業
- 有沒有夫妻相?刷一下臉就知道!
- 資料夾損壞無法訪問. 不知道如何找到呢?
- Linux中如何檢測系統是否被入侵Linux
- Bronze垃圾收集器是否使 Rust 更易於使用?Rust
- 常見的Linux系統有哪些?你知道嗎?Linux
- Linux有問必答:如何在命令列下壓縮JPEG影像Linux命令列
- 美國暗地使壞 竟在CPU上如此掐中國脖子
- FreeBSD系統下如何使GraphicsMagick支援中文字型?
- 如何判斷一項技術是否有前途?
- Linux環境下如何驗證提供時間校準的NTP伺服器是否可用Linux伺服器
- Linux下必須知道的網路命令都有哪些?Linux
- linux 中如何判斷變數是否為數值Linux變數
- Linux中如何檢視8080埠是否被佔用?Linux
- Linux系統檢視ntp是否同步的方法有幾種?Linux
- 沒有有線網路卡的筆記本如何在PVE下All in one?—NAS + Linux +win下載機筆記Linux
- 有多少大汗淋漓的人在假裝健身?
- python如何判斷一列是否有資料Python
- 學習Linux有前途嗎?Linux前景如何?Linux
- LINUX中如何檢視某個埠是否被佔用Linux
- Linux系統下如何檢視日誌?常用命令有哪些?Linux
- Linux系統擁有哪些特性?這些你必須知道!Linux
- 如何在 Linux 終端中知道你的公有 IPLinux
- linux下3種檢測遠端埠是否開啟的方法Linux
- linux下檢視埠是否被佔用以及檢視所有埠Linux
- LINUX中埠是否被佔用應該如何檢視呢?Linux
- AI醫生到底有沒有人在用?AI在健康領域如何發揮作用AI