【问题标题】:How to get a process's total memory usage and execution time in linux?如何在linux中获取进程的总内存使用量和执行时间?
【发布时间】:2016-05-10 17:00:57
【问题描述】:

我正在做一名在线评委,我需要这些信息用于排名和排行榜。谁能帮我解决这个问题?

【问题讨论】:

  • 对于内存使用我不确定,但是对于时间,您可以使用命令时间,这样就好像您想要为脚本甚至函数计时,只需在调用它时在它之前添加时间....例如。时间 bash 脚本名称,时间函数名称
  • @hedgehog 谢谢你!对于内存,我学到的是通过 pid grep 正在运行的进程,然后获取它的内存使用情况。但我不确定语法。
  • 好吧,然后用语法更新你的帖子,让我们看看。顺便说一句,您将所需的脚本添加到函数中,然后使用 time 命令调用该函数,以获取获取它所需的时间。

标签: linux unix memory process


【解决方案1】:

基本实现很简单,但在线评委更关心的是安全性,然后是资源的衡量。

一步一步的幼稚方式可以写成:

  1. 以特权用户身份运行进程
  2. 安装所有信号处理程序
  3. 将输入文件流复制到标准输入
  4. 创建子进程
  5. 在子进程中设置资源限制值
  6. 在子进程中切换到非特权用户
  7. 执行程序在子进程中运行
  8. 在父进程中,检查使用 WIFSIGNALED 和 WTERMSIG 等发送的信号,并确定子进程的状态。

以下书籍将帮助您学习有关信号和资源限制的这些概念:

Advanced Programming in the UNIX(R) Environment (Addison-Wesley Professional Computing Series)

【讨论】:

  • 这与问题无关。
  • 我正在尝试 chroot 等进行沙盒。
猜你喜欢
  • 2018-12-13
  • 2023-03-27
  • 2014-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-18
相关资源
最近更新 更多