自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何在 Linux 中監(jiān)控用戶活動(dòng)

系統(tǒng) Linux
本指南將專(zhuān)門(mén)討論 GNU 記賬工具,這是一項(xiàng)用于監(jiān)視 Linux 用戶活動(dòng)的實(shí)用工具。

作為一位 Linux 管理員,你需要跟蹤所有用戶的活動(dòng)。當(dāng)服務(wù)器發(fā)生故障時(shí),你可以分析和查看用戶活動(dòng),以便尋找問(wèn)題的根源。監(jiān)控 Linux 用戶有多種方式。什么是記賬工具?

記賬工具可以提供諸如 Linux 系統(tǒng)中的連接、已執(zhí)行的程序以及系統(tǒng)資源的使用等有底系統(tǒng)使用信息。這些記賬工具可以通過(guò) psacct 或 acct 軟件包安裝。

psacct 和 acct 實(shí)際上是相同的。在基于 RPM 的系統(tǒng)中,它以 psacct 的形式存在;而在基于 DEB 的系統(tǒng)中,它作為 acct 提供。

你可能想知道 psacct 或 acct 工具的作用。通常,用戶在命令行的歷史記錄會(huì)保存在他們的 $HOME 目錄下的 .bash_history 文件中。有些用戶可能會(huì)嘗試編輯、修改或刪除這些歷史記錄。

然而,即使他們完全 清除了命令行歷史,記賬工具依然能夠獲取用戶活動(dòng)信息。這是因?yàn)椋?strong>所有進(jìn)程記賬文件都由 root 用戶擁有,而普通用戶則無(wú)法進(jìn)行編輯。

Linux 中如何安裝 psacct 或 acct

psacct/acct 被打包在多種流行的 Linux 發(fā)行版本中。

如果要在 Alpine Linux 中安裝 psacct,請(qǐng)運(yùn)行以下命令:

$ sudo apk add psacct

如果在 Arch Linux 及其變體版本(如 EndeavourOS 和 Manjaro Linux)中安裝 acct,請(qǐng)運(yùn)行以下命令:

$ sudo pacman -S acct

在 Fedora、RHEL 及其衍生版本(如 CentOS、AlmaLinux 和 Rocky Linux)中安裝 psacct,請(qǐng)運(yùn)行以下命令:

$ sudo dnf install psacct

在 RHEL 6 以及更早版本中,你應(yīng)當(dāng)使用 yum 命令而非 dnf 來(lái)安裝 psacct。

$ sudo yum install psacct

在 Debian、Ubuntu 以及 Linux Mint 中,通過(guò)如下命令來(lái)安裝 acct

$ sudo apt install acct

若在 openSUSE 中安裝 acct,則運(yùn)行:

$ sudo zypper install acct

啟動(dòng) psacct/acct 服務(wù)

要啟用并開(kāi)啟 psacct 服務(wù),請(qǐng)執(zhí)行以下命令:

$ sudo systemctl enable psacct

接著啟動(dòng) psacct 服務(wù):

$ sudo systemctl start psacct

如果你需要檢查 psacct 服務(wù)是否已加載和激活,可以運(yùn)行:

$ sudo systemctl status psacct

在基于 DEB 的系統(tǒng)中,安裝完成之后,acct 服務(wù)會(huì)自動(dòng)啟動(dòng)。

如果你想驗(yàn)證 acct 服務(wù)是否已經(jīng)啟動(dòng),可以執(zhí)行以下命令:

$ sudo systemctl status acct
● acct.service - Kernel process accounting
     Loaded: loaded (/lib/systemd/system/acct.service; enabled; vendor preset: enabled)
     Active: active (exited) since Thu 2022-10-13 16:06:35 IST; 28s ago
       Docs: man:accton(8)
    Process: 3241 ExecStart=/usr/sbin/accton /var/log/account/pacct (code=exited, status=0/SUCCESS)
   Main PID: 3241 (code=exited, status=0/SUCCESS)
        CPU: 879us
Oct 13 16:06:35 ubuntu2204 systemd[1]: Starting Kernel process accounting...
Oct 13 16:06:35 ubuntu2204 accton[3241]: Turning on process accounting, file set to '/var/log/account/pacct'.
Oct 13 16:06:35 ubuntu2204 systemd[1]: Finished Kernel process accounting.

利用 psacct 或 acct 來(lái)監(jiān)測(cè) Linux 中的用戶活動(dòng)

psacct(進(jìn)程記賬)軟件包包含以下用來(lái)監(jiān)測(cè)用戶和進(jìn)程活動(dòng)的工具:

  • ac - 提供用戶登錄時(shí)間的統(tǒng)計(jì)信息。
  • lastcomm - 展示先前執(zhí)行過(guò)的命令的信息。
  • accton - 開(kāi)啟或關(guān)閉進(jìn)程記賬。
  • dump-acct - 把 accton 的輸出文件轉(zhuǎn)化為易讀的格式。
  • dump-utmp - 以易讀的方式打印 utmp 文件。
  • sa - 匯總信息,關(guān)于先前執(zhí)行的命令。

現(xiàn)在就讓我們一起了解如何通過(guò)每個(gè)工具來(lái)監(jiān)控 Linux 用戶的活動(dòng)。

1、使用 ac 命令

ac 工具可以為你提供以小時(shí)為單位的連接時(shí)間報(bào)告,這樣你就能知道用戶或一組用戶連接到系統(tǒng)的時(shí)長(zhǎng)。

1.1、展示所有用戶的總連接時(shí)間
$ ac

上述命令會(huì)顯示所有用戶的總連接時(shí)間(單位為小時(shí))。

total       52.91

展示所有用戶的總連接時(shí)間展示所有用戶的總連接時(shí)間

展示所有用戶的總連接時(shí)間

1.2、按日期排序顯示所有用戶的總連接時(shí)間

你可以通過(guò)使用 -d 參數(shù),按日期排序顯示所有用戶的連接時(shí)間,操作如下:

$ ac -d

示例輸出:

May 11	total        4.29
May 13	total        3.23
May 14	total        7.66
May 15	total        8.97
May 16	total        0.52
May 20	total        4.09
May 24	total        1.32
Jun  9	total       15.18
Jun 10	total        2.97
Jun 22	total        2.61
Jul 19	total        1.95
Today	total        0.29

按日期排序顯示所有用戶的總時(shí)間按日期排序顯示所有用戶的總時(shí)間

按日期排序顯示所有用戶的總時(shí)間

1.3、獲取各個(gè)用戶的總連接時(shí)間

使用 -p 參數(shù),你可以查看每位用戶各自在系統(tǒng)中總的連接時(shí)長(zhǎng)。

$ ac -p

示例輸出:

ostechnix                           52.85
root                                 0.51
total       53.36

獲取各個(gè)用戶的總連接時(shí)間獲取各個(gè)用戶的總連接時(shí)間

獲取各個(gè)用戶的總連接時(shí)間

1.4、顯示指定用戶的總連接時(shí)間

你還可以顯示特定用戶的總登錄時(shí)間。

$ ac ostechnix

示例輸出:

total       52.95
1.5、顯示特定用戶各日期的總連接時(shí)間

要按日期查看某個(gè)用戶的登錄時(shí)間,可以運(yùn)行:

$ ac -d ostechnix

示例輸出:

May 11	total        4.29
May 13	total        3.23
May 14	total        7.66
May 15	total        8.97
May 16	total        0.01
May 20	total        4.09
May 24	total        1.32
Jun  9	total       15.18
Jun 10	total        2.97
Jun 22	total        2.61
Jul 19	total        1.95
Today	total        0.68

顯示某個(gè)用戶各日期的總連接時(shí)間顯示某個(gè)用戶各日期的總連接時(shí)間

顯示某個(gè)用戶各日期的總連接時(shí)間

如需更多詳情,可參考手冊(cè)頁(yè)面。

$ man ac

2、lastcomm 命令使用示例

lastcomm 工具用于列出過(guò)去執(zhí)行過(guò)的命令,它會(huì)按執(zhí)行的最近程度將命令列在前面。

2.1、展示過(guò)去執(zhí)行的命令
$ lastcomm

示例輸出:

systemd-hostnam  S     root     __         0.06 secs Thu Oct 13 17:21
systemd-localed  S     root     __         0.06 secs Thu Oct 13 17:22
bash              F    ostechni pts/1      0.00 secs Thu Oct 13 17:22
awk                    ostechni pts/1      0.00 secs Thu Oct 13 17:22
bash              F    ostechni pts/1      0.00 secs Thu Oct 13 17:22
uname                  ostechni pts/1      0.00 secs Thu Oct 13 17:22
bash              F    ostechni pts/1      0.00 secs Thu Oct 13 17:22
sed                    ostechni pts/1      0.00 secs Thu Oct 13 17:22
bash              F    ostechni pts/1      0.00 secs Thu Oct 13 17:22
bash              F    ostechni pts/1      0.00 secs Thu Oct 13 17:22
grep                   ostechni pts/1      0.00 secs Thu Oct 13 17:22
bash              F    ostechni pts/1      0.00 secs Thu Oct 13 17:22
bash              F    ostechni pts/1      0.00 secs Thu Oct 13 17:22
grep                   ostechni pts/1      0.00 secs Thu Oct 13 17:22
bash              F    ostechni pts/1      0.00 secs Thu Oct 13 17:22
bash              F    ostechni pts/1      0.00 secs Thu Oct 13 17:22
[...]
2.2、打印特定用戶先前執(zhí)行的命令

上述命令顯示的是所有用戶的命令。要顯示特定用戶以前執(zhí)行的命令,可以使用下面的命令:

$ lastcomm ostechnix

示例輸出:

less                   ostechni pts/1      0.00 secs Thu Oct 13 17:26
lastcomm               ostechni pts/1      0.00 secs Thu Oct 13 17:26
lastcomm               ostechni pts/1      0.00 secs Thu Oct 13 17:26
lastcomm               ostechni pts/1      0.00 secs Thu Oct 13 17:26
gdbus                X ostechni __         0.00 secs Thu Oct 13 17:24
lastcomm               ostechni pts/1      0.00 secs Thu Oct 13 17:24
ac                     ostechni pts/1      0.00 secs Thu Oct 13 17:24
update-notifier   F    ostechni __         0.00 secs Thu Oct 13 17:23
apport-checkrep        ostechni __         0.06 secs Thu Oct 13 17:23
apport-checkrep        ostechni __         0.05 secs Thu Oct 13 17:23
systemctl              ostechni __         0.00 secs Thu Oct 13 17:23
apt-check              ostechni __         0.81 secs Thu Oct 13 17:23
dpkg                   ostechni __         0.00 secs Thu Oct 13 17:23
ischroot               ostechni __         0.00 secs Thu Oct 13 17:23
dpkg                   ostechni __         0.00 secs Thu Oct 13 17:23
[...]
2.3、打印特定命令的執(zhí)行次數(shù)

你還可以查看特定命令被執(zhí)行的次數(shù)。

$ lastcomm apt

示例輸出:

apt              S     root     pts/2      0.70 secs Thu Oct 13 16:06
apt               F    root     pts/2      0.00 secs Thu Oct 13 16:06
apt               F    root     pts/2      0.00 secs Thu Oct 13 16:06

如上述輸出所示,root 用戶執(zhí)行了 apt 命令三次。

更詳細(xì)的信息,可參考手冊(cè)頁(yè):

$ man lastcomm

3、sa 命令示例

sa 實(shí)用程序?qū)⒖偨Y(jié)關(guān)于先前執(zhí)行的命令的信息。

3.1、打印所有命令的總結(jié)
$ sa

示例輸出:

1522    1598.63re       0.23cp         0avio     32712k
    139     570.90re       0.05cp         0avio     36877k   ***other*
     38     163.63re       0.05cp         0avio    111445k   gdbus
      3       0.05re       0.04cp         0avio     12015k   apt-check
     27     264.27re       0.02cp         0avio         0k   kworker/dying*
      2      51.87re       0.01cp         0avio   5310464k   Docker Desktop
      5       0.03re       0.01cp         0avio       785k   snap-confine
      8      59.48re       0.01cp         0avio     85838k   gmain
      5     103.94re       0.01cp         0avio    112720k   dconf worker
     24       3.38re       0.00cp         0avio      2937k   systemd-udevd*
      7       0.01re       0.00cp         0avio     36208k   5
      3       1.51re       0.00cp         0avio      3672k   systemd-timedat
      2       0.00re       0.00cp         0avio     10236k   apport-checkrep
      2       0.01re       0.00cp         0avio   4316160k   ThreadPoolForeg*
      2       0.00re       0.00cp         0avio      8550k   package-data-do
      3       0.79re       0.00cp         0avio      2156k   dbus-daemon
     12       0.00re       0.00cp         0avio     39631k   ffmpeg
[...]
3.2、查看進(jìn)程數(shù)量和 CPU 分鐘數(shù)

要打印基于每個(gè)用戶的進(jìn)程數(shù)量和 CPU 分鐘數(shù),運(yùn)行帶 -m 標(biāo)志的 sa 命令:

$ sa -m

示例輸出:

1525    1598.63re       0.23cp         0avio     32651k
root                                  561     647.23re       0.09cp         0avio      3847k
ostechnix                             825     780.79re       0.08cp         0avio     47788k
gdm                                   117      13.43re       0.06cp         0avio     63715k
colord                                  2      52.01re       0.00cp         0avio     89720k
geoclue                                 1       1.01re       0.00cp         0avio     70608k
jellyfin                               12       0.00re       0.00cp         0avio     39631k
man                                     1       0.00re       0.00cp         0avio      3124k
kernoops                                4     104.12re       0.00cp         0avio      3270k
sshd                                    1       0.05re       0.00cp         0avio      3856k
whoopsie                                1       0.00re       0.00cp         0avio      8552k
3.3、打印用戶 ID 和命令名稱(chēng)

對(duì)于賬戶文件中的每個(gè)命令,使用 -u 標(biāo)志打印用戶 ID 和命令名稱(chēng)。

$ sa -u

示例輸出:

root       0.00 cpu      693k mem      0 io accton          
root       0.00 cpu     3668k mem      0 io systemd-tty-ask 
root       0.00 cpu     3260k mem      0 io systemctl       
root       0.01 cpu     3764k mem      0 io deb-systemd-inv 
root       0.00 cpu      722k mem      0 io acct.postinst   
root       0.00 cpu      704k mem      0 io rm              
root       0.00 cpu      939k mem      0 io cp              
root       0.00 cpu      704k mem      0 io rm              
root       0.00 cpu      951k mem      0 io find            
root       0.00 cpu      911k mem      0 io gzip            
root       0.00 cpu      722k mem      0 io sh              
root       0.00 cpu      748k mem      0 io install-info    
root       0.00 cpu      911k mem      0 io gzip            
[...]

如需更多詳細(xì)信息,請(qǐng)參考手冊(cè)頁(yè):

$ man sa

4、dump-acct 和 dump-utmp 命令

dump-acct 實(shí)用工具將 accton 格式的輸出文件顯示為人類(lèi)可讀的格式。

$ dump-acct /var/account/pacct

dump-utmp 將 utmp 文件顯示為人類(lèi)可讀的格式。

$ dump-utmp /var/run/utmp

如需了解更多詳情,請(qǐng)參考手冊(cè)頁(yè):

$ man dump-acct
$ man dump-utmp

5、accton 命令

accton 命令將允許你開(kāi)啟或關(guān)閉記賬。

要開(kāi)啟進(jìn)程記賬,請(qǐng)運(yùn)行:

$ accton on

要關(guān)閉它,運(yùn)行:

$ accton off

如需了解更多詳情,請(qǐng)參考手冊(cè)頁(yè):

$ man accton

總結(jié)

每個(gè) Linux 管理員都應(yīng)該知道 GNU 記賬實(shí)用程序,以便注意所有用戶的行為。在故障排除時(shí),這些實(shí)用程序會(huì)非常有幫助。

資源

責(zé)任編輯:龐桂玉 來(lái)源: Linux中國(guó)
相關(guān)推薦

2020-07-03 07:00:00

Linux用戶活動(dòng)

2018-05-04 09:32:32

Linux快速監(jiān)控rwho

2021-08-30 13:08:54

Linux實(shí)時(shí)監(jiān)控日志文件

2022-01-17 13:34:45

MySQLLinux數(shù)據(jù)庫(kù)

2017-07-21 13:25:33

LinuxMD5哈希恢復(fù)文件

2014-12-04 09:47:59

2015-04-13 10:13:29

2019-11-18 10:00:05

Linux桌面添加用戶

2017-12-06 09:11:48

Linux用戶組管理用戶

2020-04-17 08:00:22

Docker命令普通用戶

2021-04-04 22:56:47

Linux循環(huán)用戶

2019-03-28 08:00:00

Linux磁盤(pán)IO監(jiān)控存儲(chǔ)設(shè)備

2023-11-16 08:00:00

Datadog部署實(shí)時(shí)監(jiān)控

2019-05-05 15:20:32

Linuxiotop磁盤(pán)

2022-04-20 10:25:27

Linux用戶密碼命令

2018-01-17 09:44:37

LinuxUnix用戶訪問(wèn)

2019-04-11 11:15:02

Windows 10Windows非活動(dòng)窗口

2023-02-18 14:32:02

LinuxSSH用戶

2018-07-20 14:20:24

Linux用戶組管理員

2019-08-23 10:42:00

Linux復(fù)制文檔
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)