如何获取特定进程的进程ID?

时间:2015-07-28 12:16:25

标签: linux bash process grep ps

假设有3个名为abcabcdabcde的流程。

我正在使用以下命令查找进程ID:

ps -ef | grep abc | grep -v grep

这给出了所有3个进程的输出及其相应的pid:

user 6009      1   0   May 11 ?           0:23 ./abc
user 28047     1   0   Apr 24 ?           0:04 ./abcd
user 28548     1   0   Apr 27 ?           0:04 ./abcde

现在我想要的是一个grep的东西,只输出abc的进程ID而不返回abcdabcde。我知道使用grep -v "processname"消除了我想要的东西但有什么简单和具体的东西吗?

6 个答案:

答案 0 :(得分:7)

Android

答案 1 :(得分:3)

确定,有:

pidof

以下是手册页:http://linux.die.net/man/8/pidof

例如写:

pidof abc

输出:

6009

答案 2 :(得分:3)

这正是pgrep的用途。

具体而言,您可以使用import reqPromise from 'request-promise'; import {Observable} from 'rx'; let httpGet_ = (url) => Observable .combineLatest( Observable.interval(200), reqPromise(url), (count, response) => response ); httpGet_('http://google.com/') .subscribe( x => console.log(x), e => console.error(e) );

答案 3 :(得分:2)

为避免必须输入grep -v grep,请执行以下操作:

ps -ef | grep '[a]bc\>'

\>是一个词尾边界标记,所以你不会匹配“abcd”或“abcde”

将一个字符放入括号表达式意味着正则表达式将匹配字符串abc,但它与字符串grep [a]bc不匹配

我经常这样做,我写了一个函数,psg

psg () { 
    local -a patterns=()
    (( $# == 0 )) && set -- $USER
    for arg do
        patterns+=( "-e" "[${arg:0:1}]${arg:1}" )
    done
    ps -ef | grep "${patterns[@]}"
}

答案 4 :(得分:0)

ps -ef | grep -w 'abc$' | grep -v grep

即。 $

之后的行尾(abc

答案 5 :(得分:-1)

您还可以使用 top 命令查看所有正在运行的进程以及它消耗了多少资源。