## 👁️🗨️ آموزش مانیتورینگ فعالیت کاربران در لینوکس با استفاده از ابزارهای `psacct` و `acct`
برای مدیران سیستم (SysAdminها) یا مدیران سرور، مهمه که بدونن چه کاربرانی در حال استفاده از سیستم هستند، چه دستوری اجرا شده، چه زمانی فعال بودن و چقدر منابع مصرف کردن. ابزارهای قدرتمند و سبکوزن `psacct` و `acct` دقیقاً برای این هدف طراحی شدن.
---
## 🧰 تفاوت بین `psacct` و `acct`
| ابزار | توضیح |
|------|-------|
| `psacct` | کمی سبکتر و سادهتر برای مانیتورینگ پایهای |
| `acct` | امکانات بیشتر و جزئیات دقیقتر؛ مناسب برای گزارشگیری بلندمدت |
🔹 هر دو ابزار کار مشابهی انجام میدن، ولی `acct` اطلاعات دقیقتری ارائه میده.
---
## 🔧 نصب ابزارها
### در سیستمهای **Debian/Ubuntu**:
```bash
sudo apt install acct
```
### در سیستمهای **CentOS/RHEL**:
```bash
sudo yum install psacct
```
---
## ▶️ فعالسازی سرویس
بعد از نصب، سرویس رو فعال کن:
```bash
sudo systemctl start acct
sudo systemctl enable acct
```
برای `psacct` هم بهجای `acct` استفاده میشه.
---
## 🔍 دستورهای کاربردی برای مانیتورینگ
### 1. نمایش آخرین دستورات کاربران
```bash
lastcomm
```
🔹 لیستی از تمام دستورات اجراشده توسط کاربران، به همراه نام کاربر، زمان، و مصرف CPU.
---
### 2. مشاهده اینکه هر کاربر چه مدت فعال بوده (`sa`)
```bash
sudo sa
```
🔹 اطلاعاتی مثل تعداد اجرای دستور، زمان مصرفشده CPU، و مصرف حافظه رو نشون میده.
---
### 3. لیست اجرای دستورات بر اساس نام برنامه
```bash
sudo sa -m
```
🔹 خلاصهای از تمام دستورات اجرایی مرتبشده براساس مقدار مصرف منابع.
---
### 4. بررسی فعالیت کاربر خاص
```bash
sudo ac -p
```
🔹 زمان ورود کاربران به سیستم (Login duration) رو برای هر کاربر نشون میده.
---
### 5. مدت زمان کلی استفاده از سیستم
```bash
sudo ac
```
🔹 نمایش کل مدت استفاده کاربران از سیستم.
---
## 📊 مثال ترکیبی
فرض کنیم میخوای بدونی کاربر `amir` چه دستورهایی اجرا کرده:
```bash
lastcomm --user amir
```
یا بخوای ببینی کدوم برنامهها بیشتر از همه استفاده شدن:
```bash
sudo sa -m | sort -k5 -n
```
---
## 🛑 توقف سرویس و حذف اطلاعات
برای غیرفعالسازی سرویس:
```bash
sudo systemctl stop acct
```
پاکسازی لاگها:
```bash
sudo rm /var/account/*
```
---
## 🧠 نکات امنیتی
- این ابزارها لاگ دستورات رو ذخیره میکنن، اما محتوای اون دستورات (مثل گزینهها یا مسیر فایل) رو نه.
- برای لاگ دقیقتر از `auditd` یا `bash-logging` هم میتونی استفاده کنی.
- مناسب برای محیطهایی با دسترسی چندکاربره یا سرورهای شرکتی.
---
## ✅ جمعبندی
| ابزار | کاربرد اصلی |
|------|-------------|
| `psacct` | مانیتورینگ ساده دستورات کاربران |
| `acct` | گزارشگیری دقیق، لاگگیری بلندمدت |
| `lastcomm` | نمایش دستورات اجراشده |
| `sa` | آنالیز مصرف منابع و فعالیتها |
| `ac` | زمان فعالیت کاربران در سیستم |