Find out the running process ID by package name
I am working on a script in which I need to supply the PID of my application. I am able to list all the processes with their PIDs by following command and could see the entry of my application.
adb shell ps
This gives me a huge list of processes. And I need a single entry (which I can further supply to another command), so I want to filter this results with a package name. The grep command does not work on my windows machine. Also tried following command but it didn't help.
adb shell ps name:my_app_package
android adb
add a comment |
I am working on a script in which I need to supply the PID of my application. I am able to list all the processes with their PIDs by following command and could see the entry of my application.
adb shell ps
This gives me a huge list of processes. And I need a single entry (which I can further supply to another command), so I want to filter this results with a package name. The grep command does not work on my windows machine. Also tried following command but it didn't help.
adb shell ps name:my_app_package
android adb
add a comment |
I am working on a script in which I need to supply the PID of my application. I am able to list all the processes with their PIDs by following command and could see the entry of my application.
adb shell ps
This gives me a huge list of processes. And I need a single entry (which I can further supply to another command), so I want to filter this results with a package name. The grep command does not work on my windows machine. Also tried following command but it didn't help.
adb shell ps name:my_app_package
android adb
I am working on a script in which I need to supply the PID of my application. I am able to list all the processes with their PIDs by following command and could see the entry of my application.
adb shell ps
This gives me a huge list of processes. And I need a single entry (which I can further supply to another command), so I want to filter this results with a package name. The grep command does not work on my windows machine. Also tried following command but it didn't help.
adb shell ps name:my_app_package
android adb
android adb
edited Nov 17 '16 at 17:25
Alex P.
20k1367119
20k1367119
asked Mar 25 '13 at 6:25
Mukesh BhojwaniMukesh Bhojwani
97931226
97931226
add a comment |
add a comment |
3 Answers
3
active
oldest
votes
Since Android 7.0 the easiest way to find out the process ID by package name is to use pidof
command:
usage: pidof [-s] [-o omitpid[,omitpid...]] [NAME]...
Print the PIDs of all processes with the given names.
-s single shot, only return one pid.
-o omit PID(s)
Just run it like this:
adb shell pidof my.app.package
In Android before 7.0 people used ps
command and then parsed its output using either built-in filter by comm
value (which for android apps is the last 15 characters of the package name) or grep
command. The comm
filter did not work if the last 15 characters of the name started with a digit and the grep
was not included by default until Android 4.2. But even after the proper process line was found the PID
value still needed to be extracted.
There were multiple ways to do that. Here is how finding the process and extracting PID could be done with a single sed
command:
adb shell "ps | sed -n 's/^[^ ]* *([0-9]*).* my.app.package$/1/p'"
Again the problem is that sed
was was not included by default until Android 6.0.
But if you must use an older device you can always use the following Android version independent solution. It does not use any external commands - just Android shell built-ins:
adb shell "for p in /proc/[0-9]*; do [[ $(<$p/cmdline) = my.app.package ]] && echo ${p##*/}; done"
The most popular reason for looking for a PID is to use it in some other command like kill
. Let's say we have multiple instances of logcat
running and we want to finish them all gracefully at once. Just replace the echo
with kill -2
in the last command:
adb shell "for p in /proc/[0-9]*; do [[ $(<$p/cmdline) = logcat ]] && kill -2 ${p##*/}; done"
Replace "
with '
if running the commands from Linux/OSX shell.
1
Any way to use their full package name, for long ones?
– slezica
Jul 20 '14 at 21:01
ps <comm> doesn't work if name is a bit longer, weird.
– yorkw
Sep 3 '14 at 3:19
add a comment |
Instead of using adb shell ps
, firstly enter adb shell
and then use ps
.
Step by step:
Enter
adb shell
command while a device (or emulator) is connected.
(Command line prefix will beshell@android:/ $
after executing this command.)Enter
ps | grep <package_name_to_be_filtered>
(i.e.ps | grep com.google
).
C:> adb shell
shell@android:/ $ ps | grep com.google
u0_a64 3353 2467 903744 52904 ffffffff 00000000 S com.google.process.location
u0_a64 3426 2467 893964 49452 ffffffff 00000000 S com.google.process.gapps
That returns nothing for me. p.s. I connect to an emulator which usesAPI 26
.
– talha06
Sep 9 '18 at 22:46
add a comment |
The processes shown by ps can be limited to those belonging to any given user by piping the output through grep, a filter that is used for searching text. For example, processes belonging to a user with a username adam can be displayed with the following:
ps -ef | grep adam
The -e option generates a list of information about every process currently running. The -f option generates a listing that contains fewer items of information for each process than the -l option.
1
listing all processes is the default behavior forps
in android, so-e
is not needed. and-f
is not supported
– Alex P.
Mar 25 '13 at 19:09
+1 while -ef may be redundant using grep is good advice - can use for custom filters...
– Dori
Apr 7 '14 at 11:49
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f15608876%2ffind-out-the-running-process-id-by-package-name%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
Since Android 7.0 the easiest way to find out the process ID by package name is to use pidof
command:
usage: pidof [-s] [-o omitpid[,omitpid...]] [NAME]...
Print the PIDs of all processes with the given names.
-s single shot, only return one pid.
-o omit PID(s)
Just run it like this:
adb shell pidof my.app.package
In Android before 7.0 people used ps
command and then parsed its output using either built-in filter by comm
value (which for android apps is the last 15 characters of the package name) or grep
command. The comm
filter did not work if the last 15 characters of the name started with a digit and the grep
was not included by default until Android 4.2. But even after the proper process line was found the PID
value still needed to be extracted.
There were multiple ways to do that. Here is how finding the process and extracting PID could be done with a single sed
command:
adb shell "ps | sed -n 's/^[^ ]* *([0-9]*).* my.app.package$/1/p'"
Again the problem is that sed
was was not included by default until Android 6.0.
But if you must use an older device you can always use the following Android version independent solution. It does not use any external commands - just Android shell built-ins:
adb shell "for p in /proc/[0-9]*; do [[ $(<$p/cmdline) = my.app.package ]] && echo ${p##*/}; done"
The most popular reason for looking for a PID is to use it in some other command like kill
. Let's say we have multiple instances of logcat
running and we want to finish them all gracefully at once. Just replace the echo
with kill -2
in the last command:
adb shell "for p in /proc/[0-9]*; do [[ $(<$p/cmdline) = logcat ]] && kill -2 ${p##*/}; done"
Replace "
with '
if running the commands from Linux/OSX shell.
1
Any way to use their full package name, for long ones?
– slezica
Jul 20 '14 at 21:01
ps <comm> doesn't work if name is a bit longer, weird.
– yorkw
Sep 3 '14 at 3:19
add a comment |
Since Android 7.0 the easiest way to find out the process ID by package name is to use pidof
command:
usage: pidof [-s] [-o omitpid[,omitpid...]] [NAME]...
Print the PIDs of all processes with the given names.
-s single shot, only return one pid.
-o omit PID(s)
Just run it like this:
adb shell pidof my.app.package
In Android before 7.0 people used ps
command and then parsed its output using either built-in filter by comm
value (which for android apps is the last 15 characters of the package name) or grep
command. The comm
filter did not work if the last 15 characters of the name started with a digit and the grep
was not included by default until Android 4.2. But even after the proper process line was found the PID
value still needed to be extracted.
There were multiple ways to do that. Here is how finding the process and extracting PID could be done with a single sed
command:
adb shell "ps | sed -n 's/^[^ ]* *([0-9]*).* my.app.package$/1/p'"
Again the problem is that sed
was was not included by default until Android 6.0.
But if you must use an older device you can always use the following Android version independent solution. It does not use any external commands - just Android shell built-ins:
adb shell "for p in /proc/[0-9]*; do [[ $(<$p/cmdline) = my.app.package ]] && echo ${p##*/}; done"
The most popular reason for looking for a PID is to use it in some other command like kill
. Let's say we have multiple instances of logcat
running and we want to finish them all gracefully at once. Just replace the echo
with kill -2
in the last command:
adb shell "for p in /proc/[0-9]*; do [[ $(<$p/cmdline) = logcat ]] && kill -2 ${p##*/}; done"
Replace "
with '
if running the commands from Linux/OSX shell.
1
Any way to use their full package name, for long ones?
– slezica
Jul 20 '14 at 21:01
ps <comm> doesn't work if name is a bit longer, weird.
– yorkw
Sep 3 '14 at 3:19
add a comment |
Since Android 7.0 the easiest way to find out the process ID by package name is to use pidof
command:
usage: pidof [-s] [-o omitpid[,omitpid...]] [NAME]...
Print the PIDs of all processes with the given names.
-s single shot, only return one pid.
-o omit PID(s)
Just run it like this:
adb shell pidof my.app.package
In Android before 7.0 people used ps
command and then parsed its output using either built-in filter by comm
value (which for android apps is the last 15 characters of the package name) or grep
command. The comm
filter did not work if the last 15 characters of the name started with a digit and the grep
was not included by default until Android 4.2. But even after the proper process line was found the PID
value still needed to be extracted.
There were multiple ways to do that. Here is how finding the process and extracting PID could be done with a single sed
command:
adb shell "ps | sed -n 's/^[^ ]* *([0-9]*).* my.app.package$/1/p'"
Again the problem is that sed
was was not included by default until Android 6.0.
But if you must use an older device you can always use the following Android version independent solution. It does not use any external commands - just Android shell built-ins:
adb shell "for p in /proc/[0-9]*; do [[ $(<$p/cmdline) = my.app.package ]] && echo ${p##*/}; done"
The most popular reason for looking for a PID is to use it in some other command like kill
. Let's say we have multiple instances of logcat
running and we want to finish them all gracefully at once. Just replace the echo
with kill -2
in the last command:
adb shell "for p in /proc/[0-9]*; do [[ $(<$p/cmdline) = logcat ]] && kill -2 ${p##*/}; done"
Replace "
with '
if running the commands from Linux/OSX shell.
Since Android 7.0 the easiest way to find out the process ID by package name is to use pidof
command:
usage: pidof [-s] [-o omitpid[,omitpid...]] [NAME]...
Print the PIDs of all processes with the given names.
-s single shot, only return one pid.
-o omit PID(s)
Just run it like this:
adb shell pidof my.app.package
In Android before 7.0 people used ps
command and then parsed its output using either built-in filter by comm
value (which for android apps is the last 15 characters of the package name) or grep
command. The comm
filter did not work if the last 15 characters of the name started with a digit and the grep
was not included by default until Android 4.2. But even after the proper process line was found the PID
value still needed to be extracted.
There were multiple ways to do that. Here is how finding the process and extracting PID could be done with a single sed
command:
adb shell "ps | sed -n 's/^[^ ]* *([0-9]*).* my.app.package$/1/p'"
Again the problem is that sed
was was not included by default until Android 6.0.
But if you must use an older device you can always use the following Android version independent solution. It does not use any external commands - just Android shell built-ins:
adb shell "for p in /proc/[0-9]*; do [[ $(<$p/cmdline) = my.app.package ]] && echo ${p##*/}; done"
The most popular reason for looking for a PID is to use it in some other command like kill
. Let's say we have multiple instances of logcat
running and we want to finish them all gracefully at once. Just replace the echo
with kill -2
in the last command:
adb shell "for p in /proc/[0-9]*; do [[ $(<$p/cmdline) = logcat ]] && kill -2 ${p##*/}; done"
Replace "
with '
if running the commands from Linux/OSX shell.
edited Dec 10 '16 at 4:17
answered Mar 25 '13 at 19:04
Alex P.Alex P.
20k1367119
20k1367119
1
Any way to use their full package name, for long ones?
– slezica
Jul 20 '14 at 21:01
ps <comm> doesn't work if name is a bit longer, weird.
– yorkw
Sep 3 '14 at 3:19
add a comment |
1
Any way to use their full package name, for long ones?
– slezica
Jul 20 '14 at 21:01
ps <comm> doesn't work if name is a bit longer, weird.
– yorkw
Sep 3 '14 at 3:19
1
1
Any way to use their full package name, for long ones?
– slezica
Jul 20 '14 at 21:01
Any way to use their full package name, for long ones?
– slezica
Jul 20 '14 at 21:01
ps <comm> doesn't work if name is a bit longer, weird.
– yorkw
Sep 3 '14 at 3:19
ps <comm> doesn't work if name is a bit longer, weird.
– yorkw
Sep 3 '14 at 3:19
add a comment |
Instead of using adb shell ps
, firstly enter adb shell
and then use ps
.
Step by step:
Enter
adb shell
command while a device (or emulator) is connected.
(Command line prefix will beshell@android:/ $
after executing this command.)Enter
ps | grep <package_name_to_be_filtered>
(i.e.ps | grep com.google
).
C:> adb shell
shell@android:/ $ ps | grep com.google
u0_a64 3353 2467 903744 52904 ffffffff 00000000 S com.google.process.location
u0_a64 3426 2467 893964 49452 ffffffff 00000000 S com.google.process.gapps
That returns nothing for me. p.s. I connect to an emulator which usesAPI 26
.
– talha06
Sep 9 '18 at 22:46
add a comment |
Instead of using adb shell ps
, firstly enter adb shell
and then use ps
.
Step by step:
Enter
adb shell
command while a device (or emulator) is connected.
(Command line prefix will beshell@android:/ $
after executing this command.)Enter
ps | grep <package_name_to_be_filtered>
(i.e.ps | grep com.google
).
C:> adb shell
shell@android:/ $ ps | grep com.google
u0_a64 3353 2467 903744 52904 ffffffff 00000000 S com.google.process.location
u0_a64 3426 2467 893964 49452 ffffffff 00000000 S com.google.process.gapps
That returns nothing for me. p.s. I connect to an emulator which usesAPI 26
.
– talha06
Sep 9 '18 at 22:46
add a comment |
Instead of using adb shell ps
, firstly enter adb shell
and then use ps
.
Step by step:
Enter
adb shell
command while a device (or emulator) is connected.
(Command line prefix will beshell@android:/ $
after executing this command.)Enter
ps | grep <package_name_to_be_filtered>
(i.e.ps | grep com.google
).
C:> adb shell
shell@android:/ $ ps | grep com.google
u0_a64 3353 2467 903744 52904 ffffffff 00000000 S com.google.process.location
u0_a64 3426 2467 893964 49452 ffffffff 00000000 S com.google.process.gapps
Instead of using adb shell ps
, firstly enter adb shell
and then use ps
.
Step by step:
Enter
adb shell
command while a device (or emulator) is connected.
(Command line prefix will beshell@android:/ $
after executing this command.)Enter
ps | grep <package_name_to_be_filtered>
(i.e.ps | grep com.google
).
C:> adb shell
shell@android:/ $ ps | grep com.google
u0_a64 3353 2467 903744 52904 ffffffff 00000000 S com.google.process.location
u0_a64 3426 2467 893964 49452 ffffffff 00000000 S com.google.process.gapps
edited Mar 16 '17 at 13:59
FredMaggiowski
1,74821534
1,74821534
answered Dec 16 '14 at 11:53
DevrimDevrim
11.8k34563
11.8k34563
That returns nothing for me. p.s. I connect to an emulator which usesAPI 26
.
– talha06
Sep 9 '18 at 22:46
add a comment |
That returns nothing for me. p.s. I connect to an emulator which usesAPI 26
.
– talha06
Sep 9 '18 at 22:46
That returns nothing for me. p.s. I connect to an emulator which uses
API 26
.– talha06
Sep 9 '18 at 22:46
That returns nothing for me. p.s. I connect to an emulator which uses
API 26
.– talha06
Sep 9 '18 at 22:46
add a comment |
The processes shown by ps can be limited to those belonging to any given user by piping the output through grep, a filter that is used for searching text. For example, processes belonging to a user with a username adam can be displayed with the following:
ps -ef | grep adam
The -e option generates a list of information about every process currently running. The -f option generates a listing that contains fewer items of information for each process than the -l option.
1
listing all processes is the default behavior forps
in android, so-e
is not needed. and-f
is not supported
– Alex P.
Mar 25 '13 at 19:09
+1 while -ef may be redundant using grep is good advice - can use for custom filters...
– Dori
Apr 7 '14 at 11:49
add a comment |
The processes shown by ps can be limited to those belonging to any given user by piping the output through grep, a filter that is used for searching text. For example, processes belonging to a user with a username adam can be displayed with the following:
ps -ef | grep adam
The -e option generates a list of information about every process currently running. The -f option generates a listing that contains fewer items of information for each process than the -l option.
1
listing all processes is the default behavior forps
in android, so-e
is not needed. and-f
is not supported
– Alex P.
Mar 25 '13 at 19:09
+1 while -ef may be redundant using grep is good advice - can use for custom filters...
– Dori
Apr 7 '14 at 11:49
add a comment |
The processes shown by ps can be limited to those belonging to any given user by piping the output through grep, a filter that is used for searching text. For example, processes belonging to a user with a username adam can be displayed with the following:
ps -ef | grep adam
The -e option generates a list of information about every process currently running. The -f option generates a listing that contains fewer items of information for each process than the -l option.
The processes shown by ps can be limited to those belonging to any given user by piping the output through grep, a filter that is used for searching text. For example, processes belonging to a user with a username adam can be displayed with the following:
ps -ef | grep adam
The -e option generates a list of information about every process currently running. The -f option generates a listing that contains fewer items of information for each process than the -l option.
answered Mar 25 '13 at 6:43
Hiren PandyaHiren Pandya
870720
870720
1
listing all processes is the default behavior forps
in android, so-e
is not needed. and-f
is not supported
– Alex P.
Mar 25 '13 at 19:09
+1 while -ef may be redundant using grep is good advice - can use for custom filters...
– Dori
Apr 7 '14 at 11:49
add a comment |
1
listing all processes is the default behavior forps
in android, so-e
is not needed. and-f
is not supported
– Alex P.
Mar 25 '13 at 19:09
+1 while -ef may be redundant using grep is good advice - can use for custom filters...
– Dori
Apr 7 '14 at 11:49
1
1
listing all processes is the default behavior for
ps
in android, so -e
is not needed. and -f
is not supported– Alex P.
Mar 25 '13 at 19:09
listing all processes is the default behavior for
ps
in android, so -e
is not needed. and -f
is not supported– Alex P.
Mar 25 '13 at 19:09
+1 while -ef may be redundant using grep is good advice - can use for custom filters...
– Dori
Apr 7 '14 at 11:49
+1 while -ef may be redundant using grep is good advice - can use for custom filters...
– Dori
Apr 7 '14 at 11:49
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f15608876%2ffind-out-the-running-process-id-by-package-name%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown