مدیریت فایل‌ها و فرآیندها با دستور lsof در لینوکس پرینت


 

## 🔍 مدیریت فایل‌ها و فرآیندها با دستور `lsof` در لینوکس

دستور `lsof` (List Open Files) ابزاری قدرتمند برای مشاهده‌ی فایل‌ها، سوکت‌ها و منابعی است که توسط فرآیندها در سیستم باز شده‌اند. کاربردهای متنوع آن از دیباگینگ تا مانیتورینگ منابع را شامل می‌شود.

---

### ▶️ نصب `lsof`

در توزیع‌های مختلف:

- **Debian/Ubuntu**
```bash
sudo apt-get install lsof
```
- **CentOS/RHEL**
```bash
sudo yum install lsof
```
- **Fedora**
```bash
sudo dnf install lsof
```
- **openSUSE**
```bash
sudo zypper install lsof
```

---

### 📖 ساختار خروجی

هر خط خروجی شامل فیلدهای زیر است:

| فیلد | توضیح |
|---------|------------------------------|
| COMMAND | نام دستور یا فرآیند |
| PID | شناسه فرآیند |
| USER | مالک فرآیند |
| FD | فایل دسکریپتور (مثلاً `1u`) |
| TYPE | نوع فایل (REG, DIR, CHR, TCP, ...) |
| DEVICE | شماره دستگاه |
| SIZE/OFF| اندازه یا آفست |
| NODE | شماره گره (inode) |
| NAME | مسیر یا نام منبع باز |

---

### 🔧 کاربردهای کلیدی

1. **نمایش همه فایل‌های باز**
```bash
lsof
```

2. **فیلتر بر اساس فایل یا مسیر**
```bash
lsof /var/log/syslog
```

3. **فیلتر بر اساس فرآیند (PID)**
```bash
lsof -p 1234
```

4. **نمایش فایل‌های باز یک کاربر خاص**
```bash
lsof -u username
```

5. **نمایش سوکت‌های شبکه باز**
```bash
lsof -i
```
- برای TCP:
```bash
lsof -i tcp
```
- برای UDP:
```bash
lsof -i udp
```
- برای پورت خاص:
```bash
lsof -i :80
```

6. **نمایش فایل‌های باز توسط یک فرمان خاص**
```bash
lsof -c sshd
```

7. **فیلتر بر اساس نوع فایل**
```bash
lsof -d txt # فایل‌های متنی اجراشده
lsof -d mem # حافظه مشترک
```

8. **زمان‌بندی مانیتورینگ (مثال اسکریپت ساده)**
```bash
watch -n 5 'lsof -i :22'
```

9. **بستن فایل‌های باز شده توسط فرآیندی خاص**
شناسایی PID از `lsof` و سپس استفاده از `kill`:
```bash
kill -9 $(lsof -t /path/to/file)
```

10. **یافتن فرآیندی که فایل را قفل کرده**
```bash
lsof +D /mnt/data
```

---

### 🧠 نکات حرفه‌ای

- **کار با NFS و سیستم‌های توزیع‌شده**: برای یافتن فایل‌های باز شده روی mount‌های NFS از گزینه `-N` استفاده کنید.
```bash
lsof -N /mnt/nfs
```
- **خروجی خلاصه**: برای نمایش فقط تعداد فایل‌های باز:
```bash
lsof | wc -l
```
- **ادغام با سایر ابزارها**:
```bash
lsof -i tcp:22 | grep ESTABLISHED
```
- **اجرا با دسترسی root**: برای دیدن همه‌ی فایل‌ها و فرآیندها بهتر است `sudo` استفاده کنید.

---

## 🔍 جمع‌بندی

دستور `lsof` یک ابزار کلیدی برای هر مدیر سیستم لینوکسی است که می‌خواهد بداند چه فایل‌هایی توسط کدام فرآیندها در حال استفاده است. با فیلترها و گزینه‌های متنوع آن، می‌توانید به سرعت مشکلات مربوط به فایل‌های قفل‌شده، سوکت‌های شبکه یا مصرف ناخواسته منابع را شناسایی و رفع کنید.

 


آیا این پاسخ به شما کمک کرد؟

  • 0
« برگشت