如何通过在Mac OS X中提供进程名称来获取进程的PID?
我正在编写一个脚本来监视任何给定进程的CPU和MEM。为此,我需要发送被监控进程的名称作为命令行参数。例如。如何通过在Mac OS X中提供进程名称来获取进程的PID?
./monitorscript <pname>
我需要得到进程的PID的脚本,这样我可以使用ps -p <pid>
内。
我如何获得给定进程名称的进程的PID?
我知道可能有多个进程同名。我只想从列表中获得第一个进程。
答案上面主要是正确的,只是需要一些调整在Mac OSX上的不同的参数。
ps -A | grep -m1 firefox | awk '{print $1}'
你可以试试这个
pid=$(ps -o pid=,comm= | grep -m1 $procname | cut -d' ' -f1)
尝试这一个:
bookworm% ps -ceo pid=,comm=
1 launchd
10 kextd
11 UserEventAgent
12 mDNSResponder
13 opendirectoryd
14 notifyd
15 configd
:
echo "$(ps -ceo pid=,comm= | awk '/firefox/ { print $1; exit }')"
的ps
命令在第一列和可执行文件的名称(仅)在第二列产生输出这样的,与PID
...其中awk
处理,打印第一列(pid)并在第一次匹配后退出。
这是我能找到的,没有工作的最短命令:
ps -ax | awk '/[t]he_app_name/{print $1}'
把周围的第一个字母括号从发现awk的过程本身AWK停止。
该溶液中的过程名称匹配更严格:
ps -Ac -o pid,comm | awk '/^ *[0-9]+ Dropbox$/ {print $1}'
这种解决方案具有以下优点:
- 它忽略命令行参数等
tail -f ~/Dropbox
- 它忽略像目录中的过程
~/Dropbox/foo.sh
- 它忽略名称为
~/DropboxUID.sh
你为什么不跑TOP和使用的选项由其他指标进行排序,除了PID?就像CPU/MEM中使用最多的PID一样?
顶部-o CPU < ---排序由CPU使用的所有过程
这不是问题的关键。 – bergercookie 2017-05-19 22:37:56
您可以在下面的例子中使用pgrep命令状
$ pgrep Keychain\ Access
44186
这非常有用!谢谢! – 2016-04-04 19:50:23
如果'pgrep'可用,那么你可以说'pgrep process_name'。 [本文](http://unix.stackexchange.com/questions/225/pgrep-and-pkill-alternatives-on-mac-os-x)介绍OSX上的'pgrep'可用性 – 2012-07-18 17:21:29