如何使用命令行参数找到进程的PID?


2

我正在使用Mac OS X,这意味着我没有(例如)pgrep / pkill,但我想要这样的东西(我不使用macports / fink,或者 - homebrew是我选择的Unix包工具 - 所以那些包裹不会这样做。

我想找到并杀死具有特定参数的ssh实例 - 基本上,一个特定的远程ssh端口转发隧道。我使用的命令是这样的:

ps aux | grep ssh | grep remote-host | grep port-forwarding-stmt

但是,有时这个grep命令实际显示在输出中,因此当前命令字符串在写入时没有用。

我可以使用Mac OS X的工具吗?

Answers:


3

在字符串中添加一个额外的grep,但使用invert选项删除所有grep输出请求:

ps aux | grep ssh | grep remote-host | grep port-forwarding-stmt | grep -v grep

我希望有一个更优雅的解决方案,但这显然有效。
Chris R


1

也可以用awk:

ps axuwww | awk '!/grep/ && /ssh/ && /remote-host/ && /port-forwarding-stmt/'

ps(1)的'www'参数告诉显示完整的命令行,而不是缩短的版本。


1

ps -a -o pid, command | awk '(/[s]sh/ && /remote-host/ && /port-forwarding-stmt/){ print $1}'

结合了一些陈述的想法。该 -o part指定我们只打印pid和命令行,并且 print $1 只打印pid部分。该 [s]sh 让它找不到自己(好戏!)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.