Shell 我应该做什么来代替grep';如何提高ps的输出?
每个人都知道这有多烦人:Shell 我应该做什么来代替grep';如何提高ps的输出?,shell,grep,shortcut,idioms,ps,Shell,Grep,Shortcut,Idioms,Ps,每个人都知道这有多烦人: [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。那么,好吧,你可以做: [myb
[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
或
但前者是3个完整的命令,后者只获取进程id。是否有更好的替代方案?
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
如果您现在输入进程的全名
ps -F -C myservice
但是它不适用于'myserv*'
如果您只知道部分命令,则可以将命令减少到2:
ps aux | grep [m]yserv
将管道命令存储到接受位置参数的小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
-p$(pgrep myserv)
而不是-C myservice
我虽然想法是减少命令,但仍然是2。这是个好主意,但是:1。如果这样做,您必须记住另一个shell命令2。如果不是您的系统,并且您在那里没有个人帐户,那么将可执行脚本留在周围是不礼貌的。不过,我给了你一个升级投票…如果进程没有运行,这会导致一个错误。这是真的。您始终可以重定向错误,以避免干扰(2>/dev/null
),或将pgrep
的输出保存在变量中,以便在ps
之前进行检查。
[mybox:~ #] mycmd myservice
root 2273 0.0 0.0 4360 760 ? Ss 18:06 0:00 /usr/sbin/myservice