我使用pstree来获得一组过程,结果将是
processA(123)---processB(124)---processC(125)---processTarget(126)---processD(127)
我想使用关键字"processTarget“来获得pid,即126个。
选择pstree的原因是,我将向这组进程发送SIGTSTP信号和SIGCONT。
我怎么能这么做?有什么容易做到的吗?
注意: processTarget(126)没有固定的位置,所以我不能用awk得到PID。
发布于 2015-04-28 18:52:00
您可以使用grep。
<pstree command> | grep -P -o 'processTarget\([0-9]+\)'
-P意味着使用Perl regex -o意味着只返回匹配。
man grep获得更多详细信息
如果目标是只获取id,则可以继续这种方法返回整数。
<pstree command> | grep -P -o 'processTarget\([0-9]+\)' | grep -P -o '[0-9]+'
发布于 2015-04-28 18:53:35
使用参数展开/子字符串提取非常容易。示例:
#!/bin/bash
##plist=$( pstree something ) # actual command to fill plist
plist="processA(123)---processB(124)---processC(125)---processTarget(126)---processD(127)"
temp="${plist##*processTarget(}"
ptgtnum="${temp%%)--*}"
printf "\n processTarget = %s\n\n" "$ptgtnum"
exit 0输出
$ bash ptgt.sh
processTarget = 126发布于 2015-04-28 18:59:28
你可能会认为sed
echo 'processA(123)---processB(124)---processC(125)---processTarget(126)---processD(127)' \ | sed 's/.*processTarget(\([0-9]*\)).*/\1/'
126https://stackoverflow.com/questions/29927496
复制相似问题