AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 790780
Accepted
saeedgnu
saeedgnu
Asked: 2025-02-09 15:04:09 +0800 CST2025-02-09 15:04:09 +0800 CST 2025-02-09 15:04:09 +0800 CST

cpulimit:检测 Linux 中的故障/退出状态

  • 772

我cpulimit在 Bash 脚本中使用 CPU 使用率有限的命令 (ffmpeg) 来运行某个命令,但我想知道该命令是否失败。但是当命令 (ffmpeg) 因任何错误而失败时,cpulimit 仍然存在,退出状态为 0。我该怎么办?

我的 cpulimit 命令:cpulimit -l 300 -f -- ffmpeg ...

CPUlimit 版本 3.0

操作系统:Ubuntu Linux 6.8.0

注意:除非我传递 --monitor-forks 标志,否则 cpulimit 无法在给定命令的 forks 上工作,手册中说这是一个坏主意,特别是在脚本中:

-m, --monitor-forks 监视和限制目标进程的子进程 警告:使用此标志通常不是一个好主意,尤其是在 shell 脚本中。脚本中的命令将各自生成一个进程,而这些进程又会生成更多此程序的副本来限制它们,从而使系统陷入瘫痪。此外,子进程可能会死亡,其 PID 可能会被分配给另一个程序。当这种情况迅速发生时,可能会导致 cpulimit 在旧信息有机会被清除之前就瞄准新的、非预期的进程。仅在特定情况下使用 monitor-forks 选项,最好在没有生成大量新进程的机器上。

linux
  • 1 1 个回答
  • 23 Views

1 个回答

  • Voted
  1. Best Answer
    Marcus Müller
    2025-02-09T16:48:51+08:002025-02-09T16:48:51+08:00

    请不要cpulimit在 2025 年使用。这是一个 2006 年的程序,其工作方式是向进程快速发送“STOP”和“CONTINUE”信号,具体取决于受控进程使用的 CPU 时间。

    在编写该程序时,这并不是一个好主意,现在有了频率缩放的多核处理器,它已经完全不够用了;它使你正在做的事情变得不必要地低效(导致在相同的总体工作量下 CPU 负载增加,而你打算减少这种情况)。(老实说,我不知道人们从哪里挖出这个程序;一定是那些推荐它的地方,没有一个大红色的警告标志说“实际上,不要使用它!”出于某种原因;这是从这个网站的某个答案推荐给你的吗?如果是这样,请通过链接到该答案让我们知道!)。

    因此,“是一个编写糟糕的程序,并吸收了我的程序的返回代码”的解决方案cpulimit是“好吧,不要使用cpulimit”。

    你正在运行现代主流 Linux 发行版——恭喜!不错的选择!这意味着你拥有 systemd,这意味着你可以运行

    systemd-run --user -p CPUQuota=300% -- ffmpeg …
    

    ffmpeg在后台启动任务(你可以使用 查看它执行的操作journalctl -xef --user),或者

    systemd-run --user -p CPUQuota=300% --pipe --pty -- ffmpeg …
    

    在前台运行。

    • 1

相关问题

  • 有没有办法让 ls 只显示某些目录的隐藏文件?

  • 使用键盘快捷键启动/停止 systemd 服务 [关闭]

  • 需要一些系统调用

  • astyle 不会更改源文件格式

  • 通过标签将根文件系统传递给linux内核

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve