-1

每个人都知道这有多烦人:

[mybox:~ #] ps aux | grep myservice
root      2273  0.0  0.0   4360   760 ?        Ss   18:06   0:00 /usr/sbin/myservice
root     18590  0.0  0.0   4100   788 pts/2    S+   21:21   0:00 grep myservice

你得到你正在寻找的过程,加上 grep。所以,好的,你可以这样做:

[mybox:~ #] ps aux | grep myservice | grep -v grep
root      2273  0.0  0.0   4360   760 ?        Ss   18:06   0:00 /usr/sbin/myservice

或者

[mybox:~ #] pgrep myservice
2273

但前者是 3 个完整的命令,而后者只为您获取进程 ID。有更好的选择吗?

4

3 回答 3

2

如果你现在的进程全名

ps -F -C myservice

但它不适用于myservof'myserv*'

如果您只知道部分命令,则可以将命令减少到 2:

ps aux | grep [m]yserv
于 2013-03-22T19:43:49.210 回答
2

如何将管道命令存储到一个带有位置参数的小型 bash shell 中?如果这是目标,这将减少击键。

[mybox:~ #] cat mycmd
    #!/bin/bash
    ps aux | grep $1 | grep -v grep

可以称为:

[mybox:~ #] mycmd myservice
  root      2273  0.0  0.0   4360   760 ?        Ss   18:06   0:00 /usr/sbin/myservice
于 2013-03-25T18:23:13.253 回答
1

ps+pgrep也许?

$ ps -fp $(pgrep myservice)
UID    PID  PPID  C STIME TTY  TIME      CMD
user   5422  5315  0 15:37 ?   00:00:04  /usr/bin/myservice
于 2013-03-22T19:32:37.433 回答