You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux下如何故意减慢不可修改程序的运行速度?

Linux下不修改程序减慢进程速度的方法(适配inotifywait事件捕获)

针对你遇到的目标程序运行过快导致inotifywait无法捕获文件事件的问题,以下是几种无需修改程序本身就能减慢进程速度的Linux工具方案:

1. 用cpulimit强制限制CPU使用率

这是最直接的方法,通过限制进程能使用的CPU时间占比来减慢程序运行:

  • 先安装工具:
    Debian/Ubuntu系:sudo apt install cpulimit
    RHEL/CentOS系:sudo yum install cpulimit
  • 两种使用方式:
    • 启动程序时直接限制:sudo cpulimit -e 你的程序名 -l 20(-l后接CPU使用率百分比,示例为20%)
    • 给已运行的进程限制:先通过ps aux | grep 你的程序名获取PID,再执行sudo cpulimit -p 进程PID -l 20

2. 用nice/renice调整进程优先级

通过降低进程的CPU调度优先级,让系统更少分配CPU时间给它:

  • 启动时设置低优先级:nice -n 19 你的程序名(-n后的数值范围是-20到19,数值越大优先级越低)
  • 调整已运行进程的优先级:sudo renice 19 -p 进程PID
  • 注意:该方法效果受系统负载影响,当系统空闲时,低优先级进程仍可能占用较多CPU,适合配合其他方法使用。

3. 用strace给指定系统调用加延迟

如果只想针对文件创建操作(比如mkdir)减慢速度,不影响程序其他逻辑,strace是最优选择:

  • 直接启动程序并给mkdir系统调用加延迟:strace -e trace=mkdir --delay=0.1 -f 你的程序名
    • -e trace=mkdir:只跟踪mkdir系统调用
    • --delay=0.1:每次mkdir调用后添加0.1秒的延迟
    • -f:跟踪进程的子进程(如果你的程序会创建子进程执行文件操作)

4. 用cgroup(控制组)精细限制资源

这是更专业的资源管控方法,可同时限制CPU、内存等多种资源,适合长期需要限制的场景:

  • 以CPU限制为例(限制进程使用10%的CPU):
    1. 创建CPU控制组:sudo mkdir /sys/fs/cgroup/cpu/slowdown
    2. 设置CPU配额:sudo echo 100000 > /sys/fs/cgroup/cpu/slowdown/cpu.cfs_quota_us(1000000微秒对应100%CPU,100000即10%)
    3. 将目标进程加入该控制组:sudo echo 进程PID > /sys/fs/cgroup/cpu/slowdown/cgroup.procs
  • 用完后可删除控制组:sudo rmdir /sys/fs/cgroup/cpu/slowdown

以上方法均无需修改目标程序代码,完全符合你的限制条件。其中strace的延迟方案精准针对文件操作,最适配你解决inotifywait事件捕获的需求;cpulimit则操作简单,适合全局减慢程序运行。

内容的提问来源于stack exchange,提问作者Cymmer Maranga

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 00:55:13