리눅스 du 명령어로 바이트 단위까지 감지가 가능할까요?

morolty의 이미지

/test 디렉토리에 ls -l을 해보면

...
-rw-r--r-- 1 root root    12 Feb 11 19:37 file1
-rw-r--r-- 1 root root    12 Feb 11 19:37 file2
-rw-r--r-- 1 root root    12 Feb 11 19:37 file3
-rw-rw-rw- 1 root root  9513 Feb 12 09:09 file4
-rw-r--r-- 1 root root  5002 Feb 12 09:47 file5
-rw-rw-rw- 1 root root   297 Feb 12 10:31 file6
-rw-rw-rw- 1 root root     0 Feb 12 10:32 file7
-rw-rw-rw- 1 root root   220 Feb 12 10:32 file8
-rw-rw-rw- 1 root root   142 Feb 12 10:32 file9
...

이런식으로 바이트 단위로 파일이 있습니다..

근데 이 디렉토리를 감시하고 있다가 일정 크기 이상의 파일이 생성되면 감지하는 스크립트를 만들고 있는데요..

du 명령어로 디렉토리 용량을 감시하고 있었는데 4KB 미만의 파일은 다 4KB로 간주하는거 같네요..

du -B 1 로 하려고 해도 4096Byte로 단위로 계산하네요.. 리눅스 디폴트 파일블럭 사이즈 이용하는건지 정확하게는 잘 모르겠는데 여튼 이러네요..

1Byte 단위로 파일용량을 감지할 방법은 없을까요?

bushi의 이미지

shell script 에서도 inotify 를 사용할 수 있습니다. 사용하시는 커널이 inotify 를 지원한다면요.
inotify-tools 패키지의 inotifywatch 를 사용해서 디렉토리를 감시하다create,remove,modify 이벤트 때 해당 파일의 크기를 조사해서 반응하면 되겠습니다.

morolty의 이미지

감사합니다.. 그런데 이 스크립트가 설치될 os가 AIX / rhel / Solaris 온갖 종류에 온갖 버전이 다 섞여 있는곳이라...패키지 사용은 아무래도 힘들것 같아요..

뭐 정 안되면 주먹구구식으로 ls -l 과 grep / awk 조합해서 뽑아내서 합쳐야 하는데 감시하려는 디렉토리가 많아질 시 부하가 걸릴거 같아서 고민이네요..

bushi의 이미지

du, ls, grep, awk 도 OS 마다 다를 수 있습니다.
심지어 믿고 계시는 그 shell 도 OS 마다 다를 수 있습니다.

여러 버전/종류의 unix 에 뭔가를 적용하는 게 자주 걸려드는 업무라면,
perl 추천합니다.

morolty의 이미지

쉘은 born shell로 통일하기로 협의해서..괜찮을거 같긴한데

펄 스크립트 공부를 해봐야겠군요.. 좋은말씀 감사합니다!

dontdieych의 이미지

-b 옵션이 있는데 원하시는 결과가 나오는 것 같습니다.

➜ ~ echo dd > /tmp/dd
➜ ~ du /tmp/dd
4       /tmp/dd
➜ ~ echo dddddddddd > /tmp/ddd
➜ ~ du /tmp/ddd
4       /tmp/ddd
➜ ~ du /tmp/ddd -b
11      /tmp/ddd
➜ ~ du /tmp/dd -b
3       /tmp/dd
morolty의 이미지

앗! 이거였군요! 감사합니다!! ^ㅇ^

dontdieych의 이미지

이거 어떻습니까?

$ find /tmp/ -size +1c -size -20c  -printf '%s %p\n'
11 /tmp/ddd
3 /tmp/dd
12 /tmp/.org.chromium.Chromium.G7pRY2/manifest.fingerprint
12 /tmp/.org.chromium.Chromium.vaCBD3/manifest.fingerprint
12 /tmp/.org.chromium.Chromium.SzOUwX/manifest.fingerprint
11 /tmp/.X0-lock
morolty의 이미지

괜찮네요 한번 조합해서 진행해보도록 해봐야겠네요 ^^

댓글 달기

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