【求助】如何提取内存信息?用shell编脚本

【求助】如何提取内存信息?用shell编脚本

想用shell编写个简单的程序,目的是监视用户进程占用内存的大小,如果%Mem超过一定的数值,就自动将之kill掉。想编写这么个脚本。
用top可以很好的反应实时的情况,然后输入m可以按照内存使用情况排列(想必大家都知道:))用什么方法才能提取其中的信息,然后导入到某个文件中呢?各位多多指教阿,谢谢了。      
复制内容到剪贴板
代码:
[color=blue]-(dearvoid@LinuxEden:tty3)-(~/tmp)-
[32734 0] #[/color] ps ax o pid,pmem,rss,comm --sort -rss | head -n 20
  PID %MEM   RSS COMMAND
3965  2.9  7416 xxxxxx
17104  2.5  6468 vim
4382  2.5  6432 xxxxxx
31488  1.8  4592 xxxxxx
31494  1.8  4592 xxxxxx
31499  1.8  4592 xxxxxx
27389  1.4  3600 ntpd
3966  0.9  2512 bash
28278  0.9  2464 bash
28320  0.9  2432 sshd
28276  0.9  2424 sshd
32734  0.9  2416 bash
32609  0.9  2408 bash
3969  0.9  2356 bash
3975  0.9  2356 bash
3968  0.9  2292 bash
3973  0.8  2220 bash
3970  0.8  2128 bash
3971  0.7  2024 bash
[color=blue]-(dearvoid@LinuxEden:tty3)-(~/tmp)-
[32734 0] #[/color] o
      
谢谢斑竹,受你启发,我把user也加上去了。如下:
ps -eo pid,user,cputime,pmem,rss,comm --sort -rss | head -n 20      
good       
俺是新手,初来此坛,还请斑竹大人多多关照阿。      
客气 互相交流      
这是不麻烦了点呀?
直接限制mem的使用
复制内容到剪贴板
代码:
[0 No.1955 huan@huan ~/svn-ubu]$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
max nice                        (-e) 20
file size               (blocks, -f) unlimited
pending signals                 (-i) unlimited
[B]max locked memory       (kbytes, -l) unlimited
max memory size         (kbytes, -m) unlimited[/B]
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) unlimited
max rt priority                 (-r) unlimited
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) unlimited
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

[0 No.1956 huan@huan ~/svn-ubu]$
      
这个是限制单用户的还是系统的?      
这个命令应该单个用户的
全局设置可参数以下配置
复制内容到剪贴板
代码:
[0 No.1831 huan@huan ~]$ cat /etc/security/limits.conf
# /etc/security/limits.conf
#
#Each line describes a limit for a user in the form:
#
#<domain>        <type>  <item>  <value>
#
#Where:
#<domain> can be:
#        - an user name
#        - a group name, with @group syntax
#        - the wildcard *, for default entry
#        - the wildcard %, can be also used with %group syntax,
#                 for maxlogin limit
#
#<type> can have the two values:
#        - "soft" for enforcing the soft limits
#        - "hard" for enforcing hard limits
#
#<item> can be one of the following:
#        - core - limits the core file size (KB)
#        - data - max data size (KB)
#        - fsize - maximum filesize (KB)
#        - memlock - max locked-in-memory address space (KB)
#        - nofile - max number of open files
#        - rss - max resident set size (KB)
#        - stack - max stack size (KB)
#        - cpu - max CPU time (MIN)
#        - nproc - max number of processes
#        - as - address space limit
#        - maxlogins - max number of logins for this user
#        - priority - the priority to run user process with
#        - locks - max number of file locks the user can hold
#        - sigpending - max number of pending signals
#        - msgqueue - max memory used by POSIX message queues (bytes)
#
#<domain>      <type>  <item>         <value>
#

#*               soft    core            0
#*               hard    rss             10000
#@student        hard    nproc           20
#@faculty        soft    nproc           20
#@faculty        hard    nproc           50
#ftp             hard    nproc           0
#@student        -       maxlogins       4

# End of file

[0 No.1832 huan@huan ~]$
      
看到了,是单用户的