"ps"의 출력 정렬

"ps"의 출력 정렬

ps예상대로 작동하지 않는 이유를 이해하려고 노력하고 있습니다 . 매뉴얼 페이지에서 다음 명령이 표시되어야 하며 ppid항목 lstartlstart순서대로 정렬되어 있어야 합니다. 그러나 세 개의 다른 터미널에서 동일한 명령을 실행하면 다음과 같습니다.

첫 학기:

gauthier@sobel:~/ $ ps -o ppid -o lstart --sort=lstart
 PPID                  STARTED
21142 Tue Dec 16 13:45:18 2014
 3383 Mon Dec 15 15:40:35 2014

두 번째 용어:

gauthier@sobel:~/bin $ ps -o ppid -o lstart --sort=lstart
 PPID                  STARTED
19595 Tue Dec 16 13:45:03 2014
 3383 Mon Dec 15 14:49:14 2014

세 번째 학기:

gauthier@sobel:~ $ ps -o ppid -o lstart --sort=lstart
 PPID                  STARTED
 3383 Tue Dec 16 13:39:05 2014
16357 Tue Dec 16 13:45:12 2014

여기서 이해되지 않는 몇 가지 사항이 있습니다.

  • 항목 1과 2의 항목은 최신 항목부터 먼저 정렬됩니다. 항목 3의 항목은 오래된 항목부터 정렬됩니다. 알파벳 순서를 고려해도 순서가 다릅니다.

  • PPID 3383은 세 용어 모두 동일하지만 시작 시간이 다릅니다. 프로세스가 다르지만 여러 PPID가 동일할 수 있는 것처럼 보입니까?


시스템 메시지:

$ ps -V
procps-ng version 3.3.9
$ uname -a
Linux sobel 3.13.0-37-generic #64-Ubuntu SMP Mon Sep 22 21:28:38 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

답변1

ps --sort=lstartlstart에 따르면 실제로 정렬되지 않았습니다 .이 서버 오류에 대한 의견:

lstart완전한 타임스탬프를 제공하지만 정렬 키로 사용할 수는 없습니다. start_time gives일반적인 "지난 24시간 이내의 시간, 그렇지 않은 경우 날짜" 열이며 정렬 키로 사용될 수 있습니다.

ps이는 의 매뉴얼 페이지에 암시적으로 문서화되어 있으며 섹션 아래에 나열되어 lstart있지는 않지만 나열되어 있습니다.OBSOLETE SORT KEYSstart_time

이것소스 코드이는 또한 지원됩니다. 1506행에서 시작하는 정의를 참조하세요.

/* Many of these are placeholders for unsupported options. */
static const format_struct format_array[] = {
/* code       header     print()      sort()    width need vendor flags  */
[...]
{"lstart",    "STARTED", pr_lstart,   sr_nop,    24,   0,    XXX, ET|RIGHT},
[...]
{"start_time", "START",  pr_stime,    sr_start_time, 5, 0,   LNx, ET|RIGHT},
[...]
};

편집하다: 정답에 대한 설명을 확대하고, 원문에서 오해의 여지가 있는 부분을 삭제했습니다.

답변2

내 gnu/gentoo에서 시도해 보았는데 그런 문제는 없었습니다. 여기 있습니다:

 ~ # ps -o ppid -o lstart --sort=lstart
 PPID                  STARTED
 3851 Mon Dec 15 21:25:51 2014
 4037 Mon Dec 15 21:25:52 2014
 4042 Tue Dec 16 22:02:24 2014
 ~ # ps -o ppid -o lstart --sort=lstart
 PPID                  STARTED
 3851 Mon Dec 15 21:25:51 2014
 4037 Mon Dec 15 21:25:52 2014
 4042 Tue Dec 16 22:02:25 2014
 ~ # ps -o ppid -o lstart --sort=lstart
 PPID                  STARTED
 3851 Mon Dec 15 21:25:51 2014
 4037 Mon Dec 15 21:25:52 2014
 4042 Tue Dec 16 22:02:26 2014
 ~ # ps -V
procps-ng version 3.3.9
 ~ # uname -a
Linux  3.12.21-gentoo-r1 #9 SMP Fri Nov 28 18:59:44 CST 2014 i686 Intel(R) Core(TM)2 CPU T7200 @ 2.00GHz GenuineIntel GNU/Linux

관련 정보