pidof: check cmd if space in argv0
A difference in behaviour between the sysvinit and procps pidof was that the procps one would sometimes not find process that the sysvinit one did. The difference is that if a space is found in argv[0] then sysvinit would look at cmd for a match. This isn't perfect and more of a best guess but does often work. procps pidof now follows the same "standard". The most obvious difference is with kde based processes and incoming ssh connections with sshd. References: GitLab issue #4 https://gitlab.com/procps-ng/procps/issues/4 https://github.com/limingth/sysvinit/blob/master/sysvinit-2.88dsf/src/killall5.c#L800
This commit is contained in:
parent
b42997b6c9
commit
3f5b75035e
1
NEWS
1
NEWS
@ -4,6 +4,7 @@ procps-ng-NEXT
|
|||||||
* ps: display control group name with -o cgname
|
* ps: display control group name with -o cgname
|
||||||
* ps: Fallback to attr/current for context Debian #786956
|
* ps: Fallback to attr/current for context Debian #786956
|
||||||
* tests: Conditionally add prctl Debian #816237
|
* tests: Conditionally add prctl Debian #816237
|
||||||
|
* pidof: check cmd if space in argv0. GitLab #4
|
||||||
|
|
||||||
procps-ng-3.3.11
|
procps-ng-3.3.11
|
||||||
----------------
|
----------------
|
||||||
|
6
pidof.c
6
pidof.c
@ -210,6 +210,12 @@ static void select_procs (void)
|
|||||||
match = 1;
|
match = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/* If there is a space in arg0 then process probably has
|
||||||
|
* setproctitle so use the cmdline
|
||||||
|
*/
|
||||||
|
if (!match && strchr(cmd_arg0, ' ')) {
|
||||||
|
match = (strcmp(program, task.cmd)==0);
|
||||||
|
}
|
||||||
|
|
||||||
safe_free(exe_link);
|
safe_free(exe_link);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user