/proc 디렉토리에 대해서 자세히 알고 싶습니다.

itstrue의 이미지

많은 책에서 리눅스의 /proc 디렉토리에는 시스템의 여러 (실시간) 정보들이 파일의 형태(?)로 존재한다고 하는데
존재한다는 얘기로 끝이고, 정작 어떠한 식으로 해석해서 봐야하는지에 대해서는 나와 있는 책이 없었습니다.
( 어제 교보문고에서 3시간여동안 /proc 에 대해서 모든 리눅스 책을 다 본 것 같습니다. )

/proc 디렉토리의 파일을 보는 방법이 나와 있는 문서나 책이 없을까요 ?
( 특히, 숫자 같은 경우 어떤식으로 해석을 해야할지 모르겠습니다. uptime 의 경우 명령어를 보면 몇시간 몇분 혹은
몇년 몇월 몇일로 나오는데 정작 /proc/uptime 의 경우에는 상당히 긴 숫자로만 표기가 되어 있더군요. 꼭 그것이 초를
뜻하는 것은 아니었던거 같았습니다. )

제가 할려고 하는 것은 서버 프로파일링(?) 정도입니다.
서버의 실시간 정보를 수집하여 적당하게 보여주고, 더 나아가서는 위험 예측도 가능한 그런 스크립트나 프로그램이 최종 목표입니다.

미리 도움을 주셔서 감사합니다.

또하나...

C 에서 정규표현식 사용을 쉽게 사용할 수 있는 방법이 있는지 궁금합니다.
즉, file 을 open 하여 정규표현식으로 특정 문자(열)을 뽑아내거나, 그 위치를 알아 내거나 혹은
정규표현식에 맞게 치환해 주는 함수나 라이브러리가 있는지도 알려주시면 감사하겠습니다.

ganadist의 이미지


/usr/src/linux/Documentation/filesystems/proc.txt 을 참조하세요.

----
데스크탑 프로그래머를 꿈꾸는 임베디드 삽질러

yakkle의 이미지

proc.txt 의 html 버전

http://www-asc.di.fct.unl.pt/~pm/SO-04-05/trabalhos/T01/Proc/

----------
slow and steady

===================
slow and steady

사랑천사의 이미지

다 해결 하셨을려나 모르겠지만...

root@main:/proc# dir
1      1850   25612  3212   3550  6078       cpuinfo      meminfo
10     1919   25613  3213   3595  6129       crypto       misc
10072  2      25634  3214   3615  6130       devices      modules
10073  22486  2704   32343  3631  6131       diskstats    mounts
10898  22487  27329  32344  3641  6638       dma          mtrr
10899  22488  27330  32365  3740  6728       driver       net
11     22489  27358  3261   3743  6729       execdomains  partitions
1134   22490  28196  3263   3750  6751       fb           self
1136   22509  28197  32657  3757  7          filesystems  slabinfo
1137   22530  3      3279   3765  739        fs           speakup
1138   22531  3032   3291   3769  755        ide          stat
11531  22908  3034   3319   3771  87         interrupts   swaps
1157   22909  3035   3359   3808  89         iomem        sys
144    22929  3037   3360   4     9          ioports      sysrq-trigger
145    2308   3038   3380   5     9299       irq          sysvipc
146    24734  308    3483   5764  9300       kallsyms     tty
147    24754  309    3503   5910  acpi       kcore        uptime
148    24759  310    3505   6     asound     kmsg         version
149    25003  31809  3510   6057  buddyinfo  loadavg      version_signature
1734   25004  3210   3512   6058  bus        locks        vmstat
1735   25023  3211   3547   6059  cmdline    mdstat       zoneinfo
root@main:/proc#

위의 경우에서 숫자 들이 많습니다. 저 숫자가 우선은 프로세스 번호입니다. 각각 프로세스별로 알아 볼 수 잇도록 구조화 되어 있습니다.

그 후, uptime 같은 경우...
숫자가 두 개 정도 나옵니다.. 이건 타임스템프(Time-Stamp)입니다. 어디에 쓰이는 것인진 모르겠지만 둘 중 하나는 시스템이 부팅 한 후로 부터의 시간을 나타넵니다. 두 값이 모두 변하기 때문에 정확히 어떤 것이 그것인지는 알 수 없군요. 결론적으로 저게 초 단위의 숫자는 아닌듯 싶다는 말씀... 정정 하시면 될 거 같습니다.

그리고 /proc/sys
디렉터리 안의 것들은 각종 커널 옵션 설정 부분과 대응 됩니다.

그리고 devices, cpuinfo, bus, meminfo 등이 지금 만들려고 하시는 프로그램 작성에 도움이 되실 거 같습니다. 아마 이런 것들은 보시면 다 아실 겁니다.

그럼...
----
Lee Yeosong(이여송 사도요한)
E-Mail: yeosong@gmail.com
MSN: ysnglee2000@hotmail.com
----
웃음... 행복... 평화... (진정한...) 희망... 사랑... 이 세상 모든것이 그렇다면 얼마나 좋을까...(꿈 속의 바램일 뿐인가...)

사람천사

itstrue의 이미지

cat /proc/uptime 을 해보면 숫자가

" 3194436.34 2229799.39 "

두 개 나옵니다.

앞의 숫자는 계산을 해보니 실제 uptime 명령어의 결과와 동일한데 두번째 숫자는 정확히 무엇을 뜻하는지 모르겠습니다.
다음이 uptime 명령어의 결과입니다.

root@no1 [~]# uptime
 03:46:13  up 36 days, 23:20,  1 user,  load average: 0.02, 0.15, 0.27

아직 문서를 다 보지는 못했지만 어딘가에 존재할꺼란 생각이 드는군요 ^^;;;

아, 그리고 제가 만들려고 하는 것은 리눅스에서 프로세스 기반의 패킷 스니핑 프로그램을 만들려고 합니다.

http://beist.org/research/public/p_sniff/index.html

위의 사이트에서 리눅스에서는 이런것도 가능하구나 하고 ....
( 컴파일해서 실행해 봤는데 정상적으로는 동작도 안하더군요. 오타도 두개 있고.. >.<;;; )

포트 기반의 프로그램은 몇 번 만들어보았지만 프로세스 기반으로도 가능할꺼라고는 생각지 못했거든요.

1차적인 목표는 프로세스 기반의 패킷 스니핑 프로그램이며, 그 이후에는 /proc 디렉토리내의 정보를 이용한
서버 프로파일링 및 서버 위험 예측(시스템에 무리가 갈 경우 관리자에 보고 혹은 적정한 수준에서 자동화 관리) 프로그램.
그 이후는... 잘 모르겠습니다.

그 이상의 것이 가능할 것 같기는 한데, 정보도 많이 없고 아는 것도 없기 때문에 공부하면서 조금씩 발전시켜 나갈 생각입니다.

리눅스를 들여다보면 아는 것이 힘이다 라는 말이 새삼 와닿습니다.

itstrue의 이미지

감사합니다.
많은 도움이 되었습니다.
공부하다가 모르는 부분이 있으면 또 물어보겠습니다. ^^

itstrue의 이미지

제가 위에 이여송님이 남겨주신 글에 댓글을 남겼는데 글이 짤려서 보이네요.
입력할때 짤렸나 해서 "편집" 을 클릭하니 다 보이는군요.

제가 남긴 글에 문제가 있거나 아니면 게시판 프로그램의 버그 같은데요...
관리자님께서 확인해 주시면 감사하겠습니다.

사랑천사의 이미지

그 부분을 code 태그에 넣어 주시면 되겠습니다 음음. HTML 로 처리 해 버려서 그럴 거 같군요.
----
Lee Yeosong(이여송 사도요한)
E-Mail: yeosong@gmail.com
MSN: ysnglee2000@hotmail.com
----
웃음... 행복... 평화... (진정한...) 희망... 사랑... 이 세상 모든것이 그렇다면 얼마나 좋을까...(꿈 속의 바램일 뿐인가...)

사람천사

댓글 달기

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