如何得到一个新增加的系统进程名

上面写多了,一句:
ps|awk '{print $8}'      
[QUOTE=cugshomi]/proc下面的id很多,如果有新的进程产生,好象会产生一系列的子进程,变化比较大,不利于观察产生的核心进程。如果遍历/proc下面的id,会不会开销很大,我这个程序可是时时监控的。[/QUOTE]

老夫的看法是,ls -t看最新的进程目录,跟先前的最新进程目录生成的时间对比,之后可知其是否新进程。
至于种种复杂的细节,暂时想不到那么多。不过何妨一试。
  
        
小试一把 (Redhat 9.0):
复制内容到剪贴板
代码:
[color=blue]-(user@host:tty)-(bash)-
[29396 0] $ [/color]cat proc_monitor.sh
#! /bin/bash
# vi:set ts=8 sw=4 et sta:
#
# Author: dearvoid AT 263 DOT net
#
# $Date: 2006-04-21 11:23:15 +0800 (Fri, 21 Apr 2006) $
# $HeadURL: svn://jwang/repos/trunk/void/bash/proc_monitor.sh $
# $Revision: 93 $
#

old=/tmp/proc.old
new=/tmp/proc.new
rm -f $old $new

cd /proc || exit 1

while true; do
    ls -d1 [1-9]* > $new
    if [ -f $old ]; then
        found=0
        for pid in $(diff -u $old $new | grep -- '^[-+][1-9]'); do
            found=1
            printf "%-10s" "$pid"
            if [[ "$pid" == +* ]]; then
                { xargs -0 echo < /proc/${pid#?}/cmdline; } 2> /dev/null || echo "[N/A]"
            else
                echo
            fi
        done
        if [ $found -gt 0 ]; then
            echo "----------------------------------------"
        fi
    fi
    sleep 1
    mv -f $new $old
done

rm -f $old $new
[color=blue]-(user@host:tty)-(bash)-
[29396 0] $ [/color]./proc_monitor.sh
+4861     find /usr -name svn
----------------------------------------
-4861
----------------------------------------
+4936     find /usr -name ctags
----------------------------------------
-4936
----------------------------------------
+4993     sleep 120
----------------------------------------
-4993
----------------------------------------

[color=blue]-(user@host:tty)-(bash)-
[29396 130] $ [/color]
      
斑竹的代码我刚看到,不过还没有试过,对于发现新进程应该是可行的。不过我昨天试了一下,新开个控制台登陆系统,这时是login进程,会在/proc下产生3到4个pid。这对捕捉核心进程好象效果不好。搞的今天写了一个程序专门检测特定几个守护进程的程序,把守护进程的系统调用序列得到,最后实现缓冲区或者馅门攻击的检测。只不过系统调用的完全列表我还不知道从哪得到,unistd.h中只能包含大部分,不是所有。现在我也只能做针对某一种或者几种系统进程的入侵检测了。系统调用的完全列表斑竹知道从哪得到吗?包括socket、old_mmap、connect的网络系统调用的完全列表。