"정상"을 정확히 한 번 실행하고 종료하는 방법이 있습니까?


13

쉘 명령의 출력이 top기계의 건강에 대한 대략적인 아이디어를 얻는 간단하고 친숙한 방법이라는 것을 알았습니다 . top조잡한 모니터링을 위해 컴퓨터의 작은 웹 서버에서 출력 (또는 그와 비슷한 것) 을 제공하고 싶습니다 .

문자 형식을 지정하지 않고 텍스트 출력을 정확히 한 번만 작성하는 방법이 있습니까? 나는 이것을 시도했다 :

(sleep 1; echo 'q') | top > output.txt

이것은 (1) 하나 이상의 정보를 얻지 못할 것이라는 보장이 없으며 (2) 모든 터미널 형식 문자를 제거해야한다는 점을 제외하고는 내가 원하는 것에 가깝습니다 .

아니면 top시스템 전체 및 프로세스 수준 메모리 / CPU 사용량 / 가동 시간 정보를 모두 나열 하는 다른 명령이 있습니까?

필자는 우리 개발자들이 Mac을 사용하고 제품 환경이 Linux이기 때문에 Linux와 Mac OS X 모두에 이식 가능한 전략을 원합니다.

답변:


23

Linux에서는 다음을 시도 할 수 있습니다.

top -bn1 > output.txt

보낸 사람 man top:

-b : Batch-mode operation
            Starts top in 'Batch' mode, which could be useful for sending
            output from top to other programs or  to  a  file.   In  this
            mode, top will not accept input and runs until the iterations
            limit you've set with the '-n' command-line option  or  until
            killed.
....
-n : Number-of-iterations limit as:  -n number
            Specifies  the  maximum  number of iterations, or frames, top
            should produce before ending.

OS X에서 다음을 시도하십시오.

top -l 1

에서 최고 OSX 맨 :

 -l <samples>
              Use logging mode and display <samples> samples, even if 
              standard output is a terminal. 0 is treated  as  infinity.   
              Rather than redisplaying, output is periodically printed in 
              raw form. Note that the first sample displayed will have an 
              invalid %CPU displayed for each process,  as it is calculated 
              using the delta between samples.

이것은 topOS X에서 -b 플래그를 지원하는 경우 찾고 싶은 대답과 정확히 같습니다 . :-( 안타깝게도, 나는 top홈 브루를 통해 구할 수 있는 버전을 볼 수 없다 . 이것은 리눅스에 대한 정답 인 것처럼 보인다
Mickalot

@Mickalot : 내 업데이트를 참조하십시오. Mac OSX에 GNU top을 설치할 수 있습니까?
cuonglm

@ Gnuoc : /usr/bin/top -l 1OSX 10.9.4에서 완벽합니다 ... 감사합니다! GNU 탑을 설치, 나는에 설치할 수있는 컴퓨터,하지만 난에 설치 다른 DEVS을 설득해야 할 것 그들의 그래서 오히려 그것을 피할 것, 그들을 위해 일에 내 코드를 기계. (홈 브루를 통해 구할 수 없다면 저항이있을 것입니다.) 이제 플랫폼을 기반으로 전환 할 것이므로 욕심이 생길 것입니다. 일부) 원유 상태 페이지를 가질 수 있습니까? (그렇지 않으면 괜찮습니다. 답변은 이미 매우 도움이됩니다!)
Mickalot

@Mickalot : OSX 맨 페이지의 참고 사항을 기억하십시오. 첫 번째 샘플은 샘플 간의 델타를 사용하여 계산되므로 각 프로세스에 대해 잘못된 % CPU가 표시됩니다. . Windows 사용자의 경우``cygwin ''
cuonglm

@Gnuoc 추가 사항에 감사드립니다. top -l 2샘플의 첫 페이지를 버리거나 버릴 수 있다고 생각 합니까?
Mickalot

1

Windows 시스템에서 유사한 유형 번호를 얻으려면 powershell을 살펴보십시오.

프로세스 목록을 가져 와서 살펴보십시오 get-process. 이 참조를보십시오 .

몇 가지 추가 검색을 수행하면서 여기 에서 멋진 작은 명령을 찾았 습니다 .

제시된 while 루프에서 벗어나면 다음과 같은 요구 사항이 있습니다.

ps | sort -desc cpu | select -first 30

pspowershell에서의 별칭입니다 get-process.


좋은 생각 인 것 같습니다! Windows를 사용하는 동료 중 한 명이이를 시도해 보도록
하겠습니다
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.