• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (C) 2010 The Android Open Source Project
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7#      http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14#
15
16# Extract the pid of a given package name. This assumes that the
17# input is the product of 'adb shell ps' and that the PACKAGE variable
18# has been initialized to the package's name. In other words, this should
19# be used as:
20#
21#   adb shell ps | awk -f <this-script> -v PACKAGE=<name>
22#
23# The printed value will be 0 if the package is not found.
24#
25# NOTE: For some reason, simply using $9 == PACKAGE does not work
26#       with this script, so use pattern matching instead.
27#
28
29BEGIN {
30    PID=0
31    FS=" "
32    # Need to escape the dots in the package name
33    #
34    # The first argument is the regular expression '\.'
35    # corresponding to a single dot character. The second
36    # argument is the replacement string, which will be '\.'
37    # for every input dot. Finally, we need to escape each
38    # backslash in the Awk strings.
39    #
40    gsub("\\.","\\.",PACKAGE)
41}
42
43# We use the fact that the 9th column of the 'ps' output
44# contains the package name, while the 2nd one contains the pid
45#
46$9 ~ PACKAGE {
47    PID=$2
48}
49
50END {
51    print PID
52}
53