首页 帮助中心 美国云服务器 Linux进程资源使用监控和限制的具体方法
Linux进程资源使用监控和限制的具体方法
时间 : 2024-12-05 11:08:39 编辑 : 华纳云 阅读量 : 120

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,可以实现对系统资源的有效管理和控制。更多内容关注华纳云

华纳云 推荐文章
常见的Linux 网络流量分析器有哪些及用法 RHEL 9中安装PHP 8.4的一般流程 Innotop是Linux MySQL性能监控佳选 盘点10个最佳基于Arch的Linux发行版 在Linux中生成强预共享密钥 (PSK) 的方法 除了443外还有哪些端口常用于加密通信 Docker API常用的操作命令有哪些 Centos 8升级至Centos 8 Stream的具体操作方法 如何从零开始创建一个时间数据库 找出Linux当前正在监听的全部端口
客服咨询
7*24小时技术支持
技术支持
渠道支持