Linux系统中,监控资源的使用情况并根据每个用户设置进程限制属于常见操作,可以通过ps、top、htop等工具来完成监控。配和ulimit和cgroups进行资源限制来实现该目标。
监控进程资源的使用可以用ps,ps命令可以列出系统上的进程及其资源使用情况:
ps aux --sort=-%mem
以上命令可以按内存使用量排序列出全部进程。还可以使用top命令来实时显示系统的进程信息:
top
top监控界面中可以按照%CPU或%MEN列排序,按u能过滤特定用户进程。
使用htop命令也可以实现监控,其具有交互式界面:
sudo dnf install htop # 安装 htop
htop
在htop中可以按F6键进行排序,按u键来选择特定用户。
用ulimit命令设置shell会话的资源限制,这些限制应用于用户的全部进程。在用户Shell配置文件中进行设置,编辑用户的 .bashrc 或 .bash_profile 文件并添加以下行:
# 限制最大打开文件数
ulimit -n 1024
# 限制最大进程数
ulimit -u 100
/etc/security/limits.conf 文件用于设置系统范围内的用户或组的资源限制。
编辑 /etc/security/limits.conf 文件,添加以下行:# 用户 user 的限制
user hard nproc 100
user soft nproc 50
user hard nofile 1024
user soft nofile 512
# 用户组 admin 的限制
@admin hard nproc 200
@admin soft nproc 100
@admin hard nofile 2048
@admin soft nofile 1024
使用cgroups,它提供了强大方法来限制、优先级划分和隔离进程资源。安装:
sudo dnf install -y libcgroup-tools
创建并配置cgroups:
# 创建 cgroup 目录
sudo mkdir /sys/fs/cgroup/cpu/mygroup
sudo mkdir /sys/fs/cgroup/memory/mygroup
# 设置 CPU 使用限制
echo 50000 | sudo tee /sys/fs/cgroup/cpu/mygroup/cpu.cfs_quota_us
echo 100000 | sudo tee /sys/fs/cgroup/cpu/mygroup/cpu.cfs_period_us
# 设置内存使用限制
echo 500M | sudo tee /sys/fs/cgroup/memory/mygroup/memory.limit_in_bytes
将用户进程加入cgroup:
#!/bin/bash
# 获取用户的所有进程 PID
USER_PROCESSES=$(pgrep -u user)
# 将每个进程加入 cgroup
for PID in $USER_PROCESSES; do
echo $PID | sudo tee /sys/fs/cgroup/cpu/mygroup/cgroup.procs
echo $PID | sudo tee /sys/fs/cgroup/memory/mygroup/cgroup.procs
done
把这个脚本保存为add_to_cgroup.sh 并赋予执行权限:
chmod +x add_to_cgroup.sh
可以创建一个定时任务,定期运行上述脚本来保证新进程被添加到cgroup。编辑cgroup:
crontab -e
添加以下命令行,保证每分钟运行一次脚本:
* * * * * /path/to/add_to_cgroup.sh
以上就是关于Linux监控资源进程使用,并根据不同用户设置进程限制的常用方法。这些方法可以结合使用,ps, top, htop, ulimit, /etc/security/limits.conf 和 cgroups,可以实现对系统资源的有效管理和控制。更多内容关注华纳云。