【问题标题】:Difference using ps|wc -l with or without bash variable使用 ps|wc -l 带或不带 bash 变量的区别
【发布时间】:2021-04-30 09:22:20
【问题描述】:

使用 bash,我想了解两者之间的不同输出:

ps |wc -l
4

n=$(ps|wc -l)
echo $n
5

我猜$(ps|wc -l) 指令正在创建一个额外的子进程,但我不太明白为什么它会被添加到 ps 计数中

【问题讨论】:

    标签: bash ps wc


    【解决方案1】:

    你说过:$( ) 创建一个子进程。因为不带选项的命令ps 精确地列出了当前shell 的所有子进程,所以你会得到多一行。我通过将wc 替换为tee 来检查这一点:

    $ ps | tee four
    
        PID TTY          TIME CMD
    XXXXXXX pts/5    00:00:00 bash
    YYYYYYY pts/5    00:00:00   ps
    ZZZZZZZ pts/5    00:00:00   tee
    
    $ : $(ps -H | tee five)
    $ cat five
    
        PID TTY          TIME CMD
    XXXXXXX pts/5    00:00:00 bash
    YYYYYYY pts/5    00:00:00   bash
    ZZZZZZZ pts/5    00:00:00     ps
    ΩΩΩΩΩΩΩ pts/5    00:00:00     tee
    

    我还将-H 传递给ps,以便它证明进程树。

    【讨论】:

    • 非常感谢。这正是我想要可视化的信息。顺便说一句,我不知道“:”命令:)
    猜你喜欢
    • 2015-03-30
    • 1970-01-01
    • 2017-07-26
    • 1970-01-01
    • 1970-01-01
    • 2012-08-27
    • 1970-01-01
    • 1970-01-01
    • 2016-05-06
    相关资源
    最近更新 更多