간단한 쉘프로그램인데 유닉스에서는 수행되고 리눅스에서는 수행이 안됩니다.

swunk의 이미지

top 을 수행후 memeory 사용량을 확인하기 위해서 awk를 이용하여 해당 문자열을 추출하려 합니다.
유닉스에서는 문제없이 수행되는데 리눅스에서는 수행되지를 않네요...뭐가 문제인가요 ? 답변 부탁드립니다.

 1 #!/bin/sh
      2 usage=`top | /bin/awk '{rem = 0} {n += 1} {a = $2} {b = $4}\
      3 n == 4 {rem = a; print rem " " b} \
      4 END { }'`
      5 echo $usage

wariua의 이미지

top -b -n 1

----
$PWD `date`

$PWD `date`

swunk의 이미지

지적해 주신 대로 아래와 같이 고쳐서 수행하면 processes: sleeping, 이란 메시지만 뜨고 실행 안되기는 마찬가지 인데요...--;

1 #!/bin/sh
2 usage=`top -b -n 1| /bin/awk '{rem = 0} {n += 1} {a = $2} {b = $4}\
3 n == 4 {rem = a; print rem " " b} \
4 END { }'`
5 echo $usage

wariua의 이미지

저와는 다른 버전의 top을 사용하고 계시거나... 여하한 사정으로 top 출력에서 4행이 아닌 다른 곳에서 메모리 관련 정보가 찍히고 있나 봅니다. "top -b -n 1" 했을 때 메모리 정보가 나오는 행번호로 스크립트 3번째 줄의 "n == 4" 부분을 수정해 주시면 되지 않을까 싶습니다.
----
$PWD `date`

$PWD `date`

ssehoony의 이미지

top 버전의 차이 일듯 하군요.
위 코드를 보면 아마 unix 라고 말씀하시는 플랫폼의 top 은
리눅스의 top 처럼 계속 실행되는게 아니고 ps 처럼 화면에 현재 상태를 한번만 뿌리는 구조일 듯 하군요.
메모리를 아시려면 top 보다는 free 같은 걸 이용하시는게 좋을 듯 하군요.
아니면 /proc/meminfo 를 이용하시던지요.

swunk의 이미지

top을 실행시키면 시스템 자원이 아무리 많이 점유되고 있다고 하더라도...
처음 실행되는 top 화면에는 시스템 자원이(예를 들어 cpu idle %) 90% 이상으로 출력됩니다.
왜 그런거죠 ?

swunk의 이미지

top을 실행시키면 시스템 자원이 아무리 많이 점유되고 있다고 하더라도...
처음 실행되는 top 화면에는 시스템 자원이(예를 들어 cpu idle %) 90% 이상으로 출력됩니다.
왜 그런거죠 ?

wariua의 이미지

top 프로그램은 /proc/stat 파일에서 읽어들인 사용 분류별 tick 카운트의 주기적인 변화량을 가지고 CPU 사용 시간 비율을 계산합니다. 변화량은 이번 측정값에서 지난번 측정값을 빼서 구하는데, 처음으로 화면을 출력할 때는 지난번 측정값이 존재하지 않고 모두 0으로 초기화 되어 있습니다. 따라서 최초 출력에서는 시스템이 시작된 때부터 지금까지의 시간 전체에 대한 CPU 사용 시간 비율을 표시하게 됩니다.

물론 1초 정도 기다려서 첫 화면에서 정확한 결과를 표시할 수도 있겠지만 그러자면 첫 화면이 출력될 때까지 썰렁한 1초가 생겨버립니다. 그래서 프로그램 개발자는 최초에는 일부 값이 부정확하더라도 얼른 결과를 보여줄 수 있는 방식을 택한 듯 합니다.
----
$PWD `date`

$PWD `date`

swunk의 이미지

그렇군요...
그렇다면 wariua 님께서 말씀해 주신 top -b -n 1명령어로 수행하면 안된다는 말씀인데...

위의 스크립트와 같이 현재의 cpu 자원 혹은 memory 자원을 확인하려 하는데 다른 좋은 방법이 있을까요 ?

wariua의 이미지

CPU 사용 시간 비중을 구하는 데는 vmstat 프로그램을 사용할 수도 있을 것 같습니다. vmstat도 top과 마찬가지로 첫 번째 출력에서의 사용 시간은 정확하지 않으니 "vmstat 1 2" 정도로 실행한 후 마지막 행에서 데이터를 뽑아내면 되지 않을까요-
----
$PWD `date`

$PWD `date`

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.