如何通过给在Mac OS X的进程名获得进程的PID?(How to get the PID of

2019-06-26 08:55发布

我写一个脚本监视任何给定进程的CPU和MEM。 为此,我需要在这个过程中的名义发送的命令行参数进行监控。 例如。

./monitorscript <pname>

我需要得到进程的PID的脚本,这样我可以使用ps -p <pid>里面。

我要如何赋予其进程名称的进程的PID?

据我所知,有可能是在同一个名称的多个进程。 我只是想获得第一个进程的是名单。

Answer 1:

上面的答案大多是正确的,只是需要一些调整在Mac OSX上的不同的参数。

ps -A | grep -m1 firefox | awk '{print $1}'


Answer 2:

您可以安装pidof用自制 :

brew install pidof
pidof <process_name>


Answer 3:

您可以在下面的例子中使用pgrep命令状

$ pgrep Keychain\ Access
44186


Answer 4:

这是我能找到的,没有工作在最短的命令:

ps -ax | awk '/[t]he_app_name/{print $1}'

把周围的第一个字母括号从发现awk的过程本身AWK停止。



Answer 5:

试试这个:

echo "$(ps -ceo pid=,comm= | awk '/firefox/ { print $1; exit }')"

ps命令产生输出这样的,在第一列中的PID和可执行文件的名称(仅)在第二列中:

bookworm% ps -ceo pid=,comm=
    1 launchd
   10 kextd
   11 UserEventAgent
   12 mDNSResponder
   13 opendirectoryd
   14 notifyd
   15 configd

...其中awk过程中,打印的第一列(PID)和第一匹配后退出。



Answer 6:

该解决方案的进程名的匹配更严格:

ps -Ac -o pid,comm | awk '/^ *[0-9]+ Dropbox$/ {print $1}'

该解决方案具有以下优点:

  • 它忽略命令行参数等tail -f ~/Dropbox
  • 它忽略一个目录内的过程类似~/Dropbox/foo.sh
  • 它忽略了与名的进程一样~/DropboxUID.sh


Answer 7:

你可以试试这个

pid=$(ps -o pid=,comm= | grep -m1 $procname | cut -d' ' -f1)


Answer 8:

你为什么不超过PID运行TOP和使用的选项由其他指标进行排序,其他的? 就像,最高使用PID从CPU / MEM?

顶部-o CPU <---排序由CPU使用的所有进程



文章来源: How to get the PID of a process by giving the process name in Mac OS X ?