代码之家  ›  专栏  ›  技术社区  ›  azatoth

会话id的ps forrest

  •  1
  • azatoth  · 技术社区  · 14 年前

    ps auxfww 以及最终的grep。

    在考虑了这个问题之后,我尝试创建一个oneliner来进入流程树 ps ufww 具有由任意进程名称指定的会话id的所有进程的格式;以以下代码结束:

    ps ufww --sid=$(ps -C apache2 -o sess --no-headers | sort | uniq | grep -v -E '^ +0$' | awk 'NR==1{x=$0;next}NF{x=x","$0};END{gsub(/[[:space:]]*/,"",x);print x}')
    

    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    root      4157  0.0  0.1  41264  3120 ?        Ss   Jun11   0:00 /usr/sbin/apache2 -k start
    www-data  4329  0.0  0.0  41264  1976 ?        S    Jun11   0:00  \_ /usr/sbin/apache2 -k start
    www-data  4330  0.0  0.0  41264  2028 ?        S    Jun11   0:00  \_ /usr/sbin/apache2 -k start
    www-data  4331  0.0  0.0  41264  2028 ?        S    Jun11   0:00  \_ /usr/sbin/apache2 -k start
    www-data  4332  0.0  0.0  41264  2028 ?        S    Jun11   0:00  \_ /usr/sbin/apache2 -k start
    www-data  4333  0.0  0.0  41264  2032 ?        S    Jun11   0:00  \_ /usr/sbin/apache2 -k start
    www-data  6648  0.0  0.0  41264  1884 ?        S    Jun11   0:00  \_ /usr/sbin/apache2 -k start
    www-data  6654  0.0  0.0  41264  1884 ?        S    Jun11   0:00  \_ /usr/sbin/apache2 -k start
    www-data  6655  0.0  0.0  41264  1884 ?        S    Jun11   0:00  \_ /usr/sbin/apache2 -k start
    

    我想知道现在是否有人有更好的办法来解决这个问题?有没有什么东西更容易“一条线”,并提供上述或更好的信息?例如,我真的想把所有的孩子都包括在任何父母的范围内。

    2 回复  |  直到 14 年前
        1
  •  0
  •   Dennis Williamson    14 年前

    这是一个稍微短一点,可能稍微快一点的版本。它可能依赖于某些特定于GNU的特性:

    ps ufww --sid=$(ps -C apache2 -o sess= | sort -u | grep -v -E '^ +0$' | tr $'\n' ',' | sed 's/,$/\n/; s/ //g')
    

    短了50多个字符。

    短而不复杂的阴谋:

    ps -C apache2 fww -o user,pid,%cpu,%mem,vsz,rss,tty,stat,start,time,cmd
    

    我不明白你说的是什么意思:

    ps auxfww 做?

    psf () { ps -C $1 fww -o user,pid,%cpu,%mem,vsz,rss,tty,stat,start,time,cmd; }
    
        2
  •  0
  •   piertoni    9 年前

    一个简单读出过程及其关系的选项是:

    ps -ejH