"top"과 "ps" 명령은 서로 다른 우선순위 값을 표시합니다. 이유는 무엇입니까?

"top"과 "ps" 명령은 서로 다른 우선순위 값을 표시합니다. 이유는 무엇입니까?

top표시 우선순위는20대부분의 프로세스에는 다음이 포함됩니다(예:파이어폭스 휴지통).

또한 ps -o pid,lwp,pri,nice,start,stat,bsdtime,cmd,comm -C firefox-bin표시되는 내용은 다음과 같습니다.

  PID   LWP PRI  NI  STARTED STAT   TIME CMD                         COMMAND
 9798  9798  19   0 14:03:47 Sl     2:17 /opt/firefox/firefox        firefox-bin

top과 ps는 모두 오래된 명령이므로 이는 버그가 아닐 것 같습니다. 왜 차이가 있나요?

답변1

Linux 우선순위 범위는 0부터 139까지입니다. 다음을 통해 프로세스의 실제 우선순위를 볼 수 있습니다.예정됨파일 처리 중'/프로세스/하위 디렉토리. 예를 들어 내 시스템의 Firefox 프로세스 ID는 84163입니다. 그래서 내가 달리면grep ^prio /proc/84163/sched,우선순위가 120이라고 나오네요. 이는 Linux의 기본 우선순위입니다. 실시간 우선순위 범위는 0~99이며, 사용자는 100~139까지 우선순위를 할당할 수 있습니다. 하지만,메모Firefox의 우선순위가 80이고맨 위20대라고 말해줘 왜 세 가지가 모두 다른가요? ~에 따르면이 페이지,ps는 -40에서 99까지의 우선순위를 제공합니다. 따라서 실제 우선순위를 얻으려면 여기에 40을 더하세요. top 명령은 각 우선순위 수준에서 100을 뺍니다. 따라서 최상위의 실제 우선순위를 얻으려면 여기에 100을 더하세요.

답변2

top표시 우선 순위가 인 20 + nice value것처럼 보이지만 ps표시에는 19 - nice value0부터 39까지의 값으로 우선 순위가 표시되는데 top0은 가장 높은 우선 순위를 의미하고 ps39는 가장 높은 우선 순위를 의미합니다.

왜 다른지 잘 모르겠습니다. ps매뉴얼 페이지에 "숫자가 높을수록 우선 순위가 낮다는 것을 의미합니다"라고 나와 있으므로 버그일 수 있습니다.

관련 정보