Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 查看为进程bash分配了多少虚拟内存_Linux_Bash_Memory_Ubuntu 12.04_Ulimit - Fatal编程技术网

Linux 查看为进程bash分配了多少虚拟内存

Linux 查看为进程bash分配了多少虚拟内存,linux,bash,memory,ubuntu-12.04,ulimit,Linux,Bash,Memory,Ubuntu 12.04,Ulimit,我写了一个脚本,它将虚拟或“模拟”内存分配给我创建的进程。我想知道的是,我怎样才能列出进程有多少内存?如果我分配了一些内存,我希望它返回“进程有x MB”,如果我没有分配任何内存,则返回“进程当前没有分配内存” 我该怎么做?我已经包含了代码片段,因为粘贴到这里太长了 1) read -p "Enter Memory Value [MB]" p $script/simulate assignmem oxygen $p sleep 5

我写了一个脚本,它将虚拟或“模拟”内存分配给我创建的进程。我想知道的是,我怎样才能列出进程有多少内存?如果我分配了一些内存,我希望它返回“进程有x MB”,如果我没有分配任何内存,则返回“进程当前没有分配内存”

我该怎么做?我已经包含了代码片段,因为粘贴到这里太长了

  1)
        read -p "Enter Memory Value [MB]" p 
        $script/simulate assignmem oxygen $p
        sleep 5
        ;;

    function assign_mem()
    { 
    stop_kill $1
        ulimit -m $2 
    "$script_folder"/"$1">/dev/null&
    echo "Process $1 Assigned $2MB Memory"
    }

从ubuntu proc-/proc文件系统的手册页

 /proc/[number]/maps
              A file containing the currently mapped memory regions and  their
              access permissions.
  The format is:

    address           perms offset  dev   inode      pathname
    08048000-08056000 r-xp 00000000 03:0c 64593      /usr/sbin/gpm
    08056000-08058000 rw-p 0000d000 03:0c 64593      /usr/sbin/gpm
    08058000-0805b000 rwxp 00000000 00:00 0
    40000000-40013000 r-xp 00000000 03:0c 4165       /lib/ld-2.2.4.so
    40013000-40015000 rw-p 00012000 03:0c 4165       /lib/ld-2.2.4.so
    4001f000-40135000 r-xp 00000000 03:0c 45494      /lib/libc-2.2.4.so
    40135000-4013e000 rw-p 00115000 03:0c 45494      /lib/libc-2.2.4.so
    4013e000-40142000 rw-p 00000000 00:00 0
    bffff000-c0000000 rwxp 00000000 00:00 0

但是-ulimit不会自动将虚拟内存分配给进程。它允许进程执行获取内存的操作,比如:创建共享内存段,调用几个系统调用中的一个来分配内存。您的进程必须这样做。

您可以使用
ps
命令了解为进程分配了多少虚拟内存:

 ps -ovsize= 9999
其中9999应替换为进程id

产生的价值将以基布为单位;i、 例如,要获得实际的字节数,需要乘以1024

=
禁止打印标题行,从而使结果成为一个简单的数字。如果有用,可以指定多个数据元素;比如说,

ps -e -opid,vsize,cmd
ps
还有许多其他有用的功能<代码>人工智能系统了解详细信息



与上述答案无关,值得注意的是,更改
ulimit-m
不会将内存(或虚拟内存空间)分配给进程,而且它是关于驻留内存,而不是虚拟内存。您可以使用
ulimit-v
来限制进程可以请求的最大空间量,但进程在分配空间之前仍需要请求空间。

所以我不能这样做代码'function display_memory(){“$script_folder”/“$1”>/dev/null&echo$2MB echo“进程$1当前分配的$2MB内存”}1)读取-p“显示内存值[MB]”p$script/simulate显示内存氧$p睡眠5;;'代码‘好的,那么上面的命令会引用驻留内存吗?基本上,我想要的是菜单中的另一个选项,能够显示一旦使用了ulimit,分配给该进程的限制。e、 g.ulimit-v100mb。检查该进程-“它有100mb”或“它没有mb”,如果我还没有使用ulimit。你知道这个的语法吗?@paul:你可以使用
ulimit-m
本身来生成这些信息,但不能用于特定的进程。默认值为“unlimited”,而不是0。好的,我将如何以类似于上述问题的方式编写它?我希望它返回所有进程分配的内存大小,比如如果一个进程分配了内存(由我分配),那么“进程分配了x MB”,如果没有,那么“进程没有分配MB”。如果您愿意,我可以编辑上面的内容以发布我的完整代码。