mirror of
https://github.com/openstf/stf
synced 2025-10-04 18:29:17 +02:00
Merge pull request #806 from thinkhy/patch_180204
Use 'ps -lef' instead of 'ps' to list Pids on Android 8.x
This commit is contained in:
commit
32c9949bd7
1 changed files with 45 additions and 19 deletions
|
@ -39,11 +39,12 @@ devutil.listPidsByComm = function(adb, serial, comm, bin) {
|
|||
shell: true
|
||||
}
|
||||
|
||||
return adb.shell(serial, ['ps'])
|
||||
.then(function(out) {
|
||||
var findProcess = function(out) {
|
||||
return new Promise(function(resolve) {
|
||||
var header = true
|
||||
var pids = []
|
||||
var showTotalPid = false
|
||||
|
||||
out.pipe(split())
|
||||
.on('data', function(chunk) {
|
||||
if (header) {
|
||||
|
@ -51,15 +52,40 @@ devutil.listPidsByComm = function(adb, serial, comm, bin) {
|
|||
}
|
||||
else {
|
||||
var cols = chunk.toString().split(/\s+/)
|
||||
if (cols.pop() === bin && users[cols[0]]) {
|
||||
if (!showTotalPid && cols[0] === 'root') {
|
||||
showTotalPid = true
|
||||
}
|
||||
|
||||
// last column of output would be command name containing absolute path like '/data/local/tmp/minicap'
|
||||
// or just binary name like 'minicap', it depends on device/ROM
|
||||
var lastCol = cols.pop()
|
||||
if ((lastCol === comm || lastCol === bin) && users[cols[0]]) {
|
||||
pids.push(Number(cols[1]))
|
||||
}
|
||||
}
|
||||
})
|
||||
.on('end', function() {
|
||||
resolve(pids)
|
||||
resolve({showTotalPid: showTotalPid, pids: pids})
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
return adb.shell(serial, 'ps 2>/dev/null')
|
||||
.then(findProcess)
|
||||
.then(function(res) {
|
||||
// return pids if process can be found in the output of 'ps' command
|
||||
// or 'ps' command has already displayed all the processes including processes launched by root user
|
||||
if (res.showTotalPid || res.pids.length > 0) {
|
||||
return Promise.resolve(res.pids)
|
||||
}
|
||||
// otherwise try to run 'ps -elf'
|
||||
else {
|
||||
return adb.shell(serial, 'ps -lef 2>/dev/null')
|
||||
.then(findProcess)
|
||||
.then(function(res) {
|
||||
return Promise.resolve(res.pids)
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue