在 CentOS 中,您可以使用以下方法監控 ulimit 的使用情況:
使用 ulimit
命令查看當前用戶和系統的 ulimit 值:
ulimit -a
這將顯示所有當前設置的資源限制,包括用戶限制(軟限制)和系統限制(硬限制)。
查看特定用戶的 ulimit 值:
ulimit -u <username>
將 <username>
替換為您要查詢的用戶名。
查看特定進程的 ulimit 值:
首先,您需要找到進程的 PID(進程 ID)。您可以使用 ps
或 pgrep
命令查找進程。例如,要查找名為 “nginx” 的進程,請運行:
pgrep nginx
假設您找到了進程的 PID 為 12345。要查看此進程的 ulimit 值,請運行:
ulimit -a -p 12345
如果您想要實時監控 ulimit 值的變化,可以使用 auditd
服務。首先,確保已安裝并配置了 auditd
。然后,創建一個名為 “audit_ulimit.rules” 的文件,其中包含以下內容:
-w /etc/security/limits.conf -p wa -k ulimit_changes
-w /etc/security/limits.d/*.conf -p wa -k ulimit_changes
-w /etc/profile -p wa -k ulimit_changes
-w /etc/bashrc -p wa -k ulimit_changes
-w /etc/environment -p wa -k ulimit_changes
-w /etc/sysconfig/security -p wa -k ulimit_changes
-w /etc/ssh/sshd_config -p wa -k ulimit_changes
這些規則會監控與 ulimit 相關的配置文件的變化。接下來,創建一個名為 “audit_ulimit.service” 的 Systemd 服務文件,其中包含以下內容:
[Unit]
Description=Audit ulimit changes
RequiredStartServices=auditd.service
After=auditd.service
[Service]
Type=oneshot
ExecStart=/usr/bin/auditctl -w /etc/security/limits.conf -p wa -k ulimit_changes
ExecStart=/usr/bin/auditctl -w /etc/security/limits.d/*.conf -p wa -k ulimit_changes
ExecStart=/usr/bin/auditctl -w /etc/profile -p wa -k ulimit_changes
ExecStart=/usr/bin/auditctl -w /etc/bashrc -p wa -k ulimit_changes
ExecStart=/usr/bin/auditctl -w /etc/environment -p wa -k ulimit_changes
ExecStart=/usr/bin/auditctl -w /etc/sysconfig/security -p wa -k ulimit_changes
ExecStart=/usr/bin/auditctl -w /etc/ssh/sshd_config -p wa -k ulimit_changes
[Install]
WantedBy=multi-user.target
保存文件后,運行以下命令啟用并啟動審計服務:
sudo systemctl enable audit_ulimit.service
sudo systemctl start audit_ulimit.service
現在,每當與 ulimit 相關的配置文件發生變化時,auditd
都會記錄這些更改。您可以通過查看 auditd
的日志文件(通常位于 /var/log/audit/audit.log
)來檢查這些更改。