![查找 ProcessID - pidof 不起作用](https://linux22.com/image/81222/%E6%9F%A5%E6%89%BE%20ProcessID%20-%20pidof%20%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8.png)
我需要尝试找到进程的 ProcessId。
最初我在做:
application="/home/user/apps/appName.app"
appPid=$(pidof -x $application)
这很好用。
然而,现在事实证明该应用程序可以从多个位置运行,例如:
/home/user/apps/appName.app
/home/user/desktop/appName.app
/home/user/desktop/link to apps/appName.app
所以我试着简单地做
application="appName.app"
appPid=$(pidof -x $application)
但这没有找到任何匹配项。我认为pidof
需要完整路径来匹配。
我还能如何获取 ProcessId?
我想我有必要进一步解释一下。
如果我做
ps aux | grep application.app
我得到两个结果。
user 29912 . . . . /home/user/apps/application.app
user 12345 . . . . grep application.app
如果我那么做
var1=`pgrep application.app`
echo $var1
结果是空白的。应该是29912。
答案1
pgrep 本身返回进程 ID。使用:
$pgrep <process_name>
$pgrep bash
3896
4013
4115
如果您希望输出存储在变量中:
var1=`pgrep <appname>`
pids=`pgrep bash`
echo $pids
3896 4013 4115
答案2
我将使用以下内容:
appPid=$(pgrep $application)