답변1
출력에서는 top
터미널이 인식하지 못하는 일부 이스케이프 시퀀스가 인쇄되고 있음을 보여줍니다. 공백 뒤에 [
더 많은 가비지 문자가 표시되는 비트는 대부분의 터미널에서 작동하는 이스케이프 시퀀스입니다. 이러한 시퀀스의 첫 번째 문자는 이스케이프 문자이며 터미널은 이를 공백으로 인쇄합니다. 예를 들어 ␛[7m
제목 줄의 시작 부분부터 강조 표시를 시작하거나 ␛[0m
강조 표시를 중지하는 등의 작업을 수행할 수 있습니다.
STAT 및 VSZ 열에서 정확히 무슨 일이 일어나고 있는지 잘 모르겠지만 상단에도 일부 색상 변경 시퀀스가 인쇄되고 있는 것 같습니다(여기서 유래 m
). 부분적으로 덮여 있습니다(상단이 인쇄 중일 수 있음). 다음 문자가 해당 문자 를 ␈
덮도록 커서를 왼쪽으로 이동하게 합니다.
많은 프로그램의 경우 TERM
환경 변수를 올바르게 설정하는 것만으로도 충분합니다. 이는 이스케이프 시퀀스를 지원하지 않는 터미널 유형을 나타내야 합니다. TERM
어딘가에 값을 하드코딩하는 스크립트가 없는지 확인하세요 . 노력하다 TERM=dumb
. BusyBox를 사용하는 경우 대부분의 터미널에 하드코딩된 이스케이프 시퀀스가 있으므로 top
운이 없는 것 같습니다. 이스케이프 시퀀스를 제거하는 필터를 통해 실행할 수 있습니다. 테스트되지 않았지만 BusyBox에서 작동합니다.
#!/bin/sh
script=$(printf 's/\033\\[[0-9;]*[A-Za-z]//g')
sed -e "$script" "$@"
(에서이것보다 완전한 Perl 스크립트)
답변2
~에서http://pubs.opengroup.org/onlinepubs/9699919799/utilities/ps.html:
VSZ= "(가상) 메모리의 프로세스 크기(1024바이트), 10진수 정수로 표시됩니다."