【问题标题】:Find ulimit -a for other users为其他用户查找 ulimit -a
【发布时间】:2014-10-07 19:12:27
【问题描述】:

是否有人知道在 Linux 中为其他用户查找“ulimit -a”值的方法?我希望用户 A 能够检查用户 B 的 ulimit 值。假设用户 A 和用户 B 是非 root 用户。

提前致谢

【问题讨论】:

  • 限制是每个进程,而不是每个用户。
  • 好的,感谢您的澄清。我正在尝试为另一个用户找到“最大用户进程”值。当您运行 ulimit -a 时,我会为当前用户获取该值以及其他 ulimit 值。
  • 不,你得到它的当前进程。
  • Since Linux 2.6.24, the resource limits of any process can be inspected via /proc/[pid]/limits;。但是,您不太可能有权读取其他用户文件。

标签: linux monitoring ulimit


【解决方案1】:

我建议:

grep 'open files' /proc/$( pgrep -o <some-user> )/limits

例如:

grep 'open files' /proc/$( pgrep -o memcache )/limits

您需要意识到 pgrep -o 将匹配最旧的进程;我猜是父母。

【讨论】:

    【解决方案2】:

    如果我理解正确,您希望实现以下目标...

    假设我是root,想找出为用户fred配置的软限制信息,方法如下:

    su - fred -c "ulimit -Sa"
    

    将返回所需的值。

    或者,如果根据您的问题,您不是 root,那么您可以使用 sudo 并且如果需要在执行时注入必要的密码,如此处所示

    echo "freds password" | sudo -Siu fred ulimit \-Sa
    

    【讨论】:

      【解决方案3】:

      潘乔的回答是正确的,但有时你可能会得到这样的错误:

      su - www-data -c "ulimit -n"
      

      没有目录,用HOME=/登录

      此帐户目前不可用。

      你可以指定一个 shell 来解决这个问题:

      su www-data --shell /bin/bash --command "ulimit -aH"
      

      (-aH给你硬限制,-aS给你软限制)

      【讨论】:

      • 我需要检查一个没有主目录的用户的限制,所以通过 shell 使用它救了我!
      • 如果询问密码,则成为第一个 root 用户:'sudo su -'。
      【解决方案4】:

      为用户选择一个流程并确定您的限制:

      return-limits(){
      
      for process in $@; do
      process_pids=`pgrep $process`
      
      if [ -z $@ ]; then
      echo "[no $process running]"
      else
      for pid in $process_pids; do
      echo "[$process #$pid -- limits]"
      cat /proc/$pid/limits
      done
      fi
      
      done
      
      }
      
      return-limits mongod
      

      【讨论】:

      • 嗨 Diego - 如果您编辑帖子以在每行添加四个空格作为代码前缀,它将格式化为代码并且更易于阅读。谢谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-25
      • 1970-01-01
      相关资源
      最近更新 更多