在Ubuntu系统中,ulimit命令用于控制用户进程的资源限制。然而,ulimit本身并不直接提供日志记录功能。要记录用户进程的资源使用情况,可以使用其他工具和方法。以下是一些常见的方法:
auditd 记录资源限制安装 auditd:
sudo apt-get update
sudo apt-get install auditd audispd-plugins
配置 auditd:
编辑 /etc/audit/audit.rules 文件,添加以下规则来监控资源限制:
-a exit,always -F arch=b32 -S setrlimit -k resource_limit
-a exit,always -F arch=b64 -S setrlimit -k resource_limit
重启 auditd 服务:
sudo systemctl restart auditd
查看日志:
使用 ausearch 命令查看相关日志:
sudo ausearch -k resource_limit
cgroups 和 systemd 日志创建 cgroup:
sudo cgcreate -g memory:/mygroup
设置资源限制:
echo "100M" | sudo tee /sys/fs/cgroup/memory/mygroup/memory.limit_in_bytes
将进程添加到 cgroup:
echo $$ | sudo tee /sys/fs/cgroup/memory/mygroup/tasks
查看 systemd 日志:
使用 journalctl 命令查看相关日志:
sudo journalctl -u systemd-cgtop.service
pam_limits.so 记录编辑 /etc/security/limits.conf:
添加以下行来记录资源限制:
* soft core unlimited
* hard core unlimited
* soft nofile 1024
* hard nofile 4096
重启相关服务:
重启 pam 和 login 服务以应用更改:
sudo systemctl restart systemd-logind
查看日志:
使用 journalctl 命令查看相关日志:
sudo journalctl -u systemd-logind
strace 记录系统调用使用 strace 跟踪进程:
sudo strace -e trace=file -p <PID>
分析日志:
查看 strace 输出的日志文件,分析资源使用情况。
以上方法各有优缺点,选择适合你需求的方法进行配置。auditd 提供了详细的审计日志,cgroups 和 systemd 日志适合监控资源使用情况,pam_limits.so 适合记录用户资源限制,而 strace 则适合详细跟踪系统调用。根据具体需求选择合适的方法进行配置和日志记录。