df 명령어에서 나오는 정보들을 얻으려면 어떻게 해야 할까요?

hackexpert의 이미지

df 명령어를 사용하면
디스크 갯수. 사용중인 용량, 사용가능한 용량 등이 나오는데요..
이와 비슷한 프로그램을 짜려고 합니다..

자바로 짜야 되는거라서 처음에 자바 api 들을 들여다 보았는데요..
아무리 찾아봐도 없네요..

native 코드를 섞어서 써보는 방법을 생각하고 책을 뒤져봤는데
제가 보는 책에는 별다른 말이 없네요..

도움 부탁드립니다~

Necromancer의 이미지

커널 시스템콜 속에 이와 관련된 기능을 하는게 있는걸로 압니다.

자바로는 직접 못할겁니다 최소한 C로 해당 시스템콜을 부르는 부분을 만들어야
할겁니다.

Written By the Black Knight of Destruction

세이군의 이미지

getruntime??? 이라는 함수인데
해당 프로세스의 결과를 가져올 수 있다고 합니다.
저 함수의 결과에서 getInputStream(), getOutputStream()을 이용하여
입출력 스트림을 열면 해당 프로세스와 데이터 전송이 가능하다고 알고 있습니다.

pSock = getruntime??("df -Ph");
is = pSock.getInputStream();
os = pSock.getOutputStream();

를 한다음에 os에서 데이터를 읽어서 파싱한다음에 처리하면 될 듯합니다.

근데 저 함수가 뭐였더라....
찾는 대로 다시 올리도록 하지요..

hackexpert의 이미지

사실 펄로 df의 결과 값을 읽어와서
일정 포맷으로 출력해주고..
그걸 읽어 오는 것은 만들었는데요..

df의 포맷이 미묘하게 틀린 경우가 생겨서
펄 스크립트를 두벌 만들어 주어야 하더군요..

그래서 내부 함수로 얻어 오는 방법이 없을까..
하고 고민중입니다..

음 df소스를 봐야 하나.. ㅡ.ㅜ

세이군의 이미지

hackexpert wrote:
사실 펄로 df의 결과 값을 읽어와서
일정 포맷으로 출력해주고..
그걸 읽어 오는 것은 만들었는데요..

df의 포맷이 미묘하게 틀린 경우가 생겨서
펄 스크립트를 두벌 만들어 주어야 하더군요..

그래서 내부 함수로 얻어 오는 방법이 없을까..
하고 고민중입니다..

음 df소스를 봐야 하나.. ㅡ.ㅜ

Redhat리눅스에서는

# df -Ph

하니까 항상 아래형식처럼 나오더군요.
FileSystem Size available Use% Mount On
/dev/hda1 100M 10M 10% /boot
192.168.0.1:/nfsuser 10G 1G 10%  /mnt/user

-P 가 POSIX타입으로 보여주는 거라고 하더군요..
레드햇 6.2와 9에서 모두 테스트한 것입니다.
-h는 사람이 보기 편하게 보여주는 옵션이더군요..
포맷이 항상 동일하게 나오니까 분석중에 분기할 필요가 없으니 좋더군요...

직접 처리하기를 원하신다면 PHP로 작성된 프로그램을 알려드릴테니
확인해 보시고 같은 방법으로 자바로 만들어보시면 될 것입니다.
http://linuxchannel.net/의 자료실에 보시면 System Info라고 하는게 있습니다. TarBall을 받아서 내용을 살펴보세요..

hackexpert의 이미지

좋은 정보 감사드립니다~
일단 df를 파싱해서 쓰는쪽으로 마음을 정했습니다.

정보를 자주 알아와야하는 것이라서
매번 외부 프로그램을 실행시키기는 어려울 것 같고

한번 정보를 얻어온 것을 저장하고 있다가
30초이내로 다시 정보를 요청하면 기존 정보를 던져주고,
30초가 지났으면 새로 정보를 얻어오고. 이런식으로 짜야 겠네요.
(30초에 특별한 이유가 있는 것은 아닙니다.그냥 적당하다 싶은거 찍은거죠..)

음. 그래도 오기가 붙어서인지
언젠간 df 소스 받아서 분석해보고 싶어지네요 ^^

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.