검색 엔진의 방문이 늘어나고 있군...

Posted
Filed under 프로그램과 명령어/커맨드 라인 트릭
참조 원문 : Quick Shell Tip: Remove grep command while grepping something using ps command

  ps 명령어의 결과를 grep을 사용해 필터링하면 명령어를 실행한 쉘 프로세스가 자신의 grep 명령어로 인해 같이 검색되서 나옵니다. 아래 결과의 첫 번째 줄처럼 말이죠.
mirashi@myservlab:~$ ps aux | grep cron
root      1190  0.0  0.0   2092   876 ?        Ss   Nov10   0:04 cron
mirashi   2681  0.0  0.0   3048   792 pts/0    S+   10:31   0:00 grep cron
  이걸 방지하는 첫 번째 방법은 평범하게 필터링 결과에서 'grep'이 들어간 줄을 다시 제외시키는 겁니다.
mirashi@myservlab:~$ ps aux | grep cron | grep -v grep
root      1190  0.0  0.0   2092   876 ?        Ss   Nov10   0:04 cron
  그 다음 방법은 좀 특이한 방법인데 명령어와 실제 필터링 대상을 다르게 만드는 겁니다.
mirashi@myservlab:~$ ps aux | grep [c]ron
root      1190  0.0  0.0   2092   876 ?        Ss   Nov10   0:04 cron
  이게 뭔 의미냐면 정규식 자체로 볼 때 'cron'과 '[c]ron'에는 결과적으로 아무런 차이가 없지만 grep 명령어를 사용할 때 입력한 문자열 자체는 '[c]ron'이기 때문에 ps의 결과에서는 '[c]ron'로 출력됩니다. 하지만 이 명령어로 인해 검색하는 것은 '[c]ron'이라는 문자열이 아니라 'cron'이기 때문에 결과에 출력되지 않는 겁니다. 아무튼 세상엔 머리 좋은 사람이 많은 것 같습니다.

  이걸 더 쉽게 사용하는 방법은 자신의 홈 디렉토리에 있는 .bashrc 파일에 아래의 함수를 추가하고 사용하는 겁니다.
function pps(){ ps aux | grep "$@" | grep -v 'grep'; }
  위 함수를 추가하고 다시 로그인하거나 '. .bashrc'로 리로딩하면 간단하게 아래와 같이 사용할 수 있습니다.
mirashi@myservlab:~$ pps cron
root      1190  0.0  0.0   2092   876 ?        Ss   Nov10   0:04 cron


2010/12/02 11:11 2010/12/02 11:11
Posted
Filed under 프로그램과 명령어/커맨드 라인 트릭
원문 참조 : Manual Backups in Linux, DD

  dd는 비트 레벨로 복사를 할 수 있는 유용한 프로그램입니다. 그 말은 포렌식이나 백업 용도로도 유용히 사용할 수 있다는 뜻을 내포합니다.

  일단 dd는 작업 진행률을 보여주지 않는 단점이 있기 때문에 파이프로 넘어온 데이터의 진행을 모니터링할 수 있는 pv라는 프로그램을 별도로 사용하는 것이 좋습니다. 우분투에서는 간단히 아래처럼 설치할 수 있습니다.
sudo apt-get install pv
  pv를 이용하여 하드 디스크를 똑같이 복사(if는 입력, of는 출력)하는 dd의 기초적인 사용법은 아래와 같습니다.
#dd if=/dev/sdX | pv | dd of=/dev/sdY
  아래는 곧바로 다른 하드 디스크에 출력(복사)하는 대신 파일로 출력한 후 압축하는 방법과 그렇게 만든 파일을 사용해서 복원하는 방법입니다.
#dd if=/dev/sdX bs=64k conv=noerror,sync | pv | gzip -c -9 > sdX.img.gz
#gunzip -c sdX.img.gz | pv | dd of=/dev/sdX conv=sync,noerror bs=64K
  아래는 한 단계 더 진화해 압축한 파일을 다른 서버에 SSH로 전송해서 백업하는 방법입니다.
#dd if=/dev/sdX bs=64k conv=noerror,sync | pv | gzip -c -9 | ssh user@remote_server dd of=sdX.img.gz
  그리고 아래는 흔한 dd 사용법들입니다.
플로피 복사: dd if=/dev/fd0 of=floppy.img bs=2x80x18b conv=notrunc
CD ISO 이미지 뜨기: dd if=/dev/sr0 of=mycd.iso bs=2048 conv=notrunc
MBR 복사: dd if=/dev/sda of=mbr.img bs=512 count=1
MBR 삭제: dd if=/dev/zero of=/dev/sda bs=512 count=1
디스크 와이프: dd if=/dev/zero of=/dev/sda bs=64k
(디스크 와이프의 경우 여기에 추가로 /dev/random이나 /dev/urandom을 입력으로 실행한 후 다시 /dev/zero를 입력으로 실행하면 더 완벽히 와이프가 가능하다.)
  참고로 출력에 /dev/sdx 대신 일반 파일명을 집어넣어 와이프를 할 수도 있습니다. 먼저 파일 크기를 확인한 후 bs 옵션 값을 그 크기와 동일하게 설정하고 count 옵션 값은 1로 설정합니다. 마지막으로 conv 옵션 값에 notrunc를 추가하면 됩니다.

2010/11/24 11:25 2010/11/24 11:25
Posted
Filed under 프로그램과 명령어/커맨드 라인 트릭
참조 원문 : Identifying Disk Space
관련 글 : 파일시스템의 무결성 유지하기

  뭐 바로 얼마 전에 이 글의 내용을 포함할만한 글을 쓰긴 했는데 좀 더 간결하고 실무적인 내용의 글이 있어서 옮겨 봅니다.

  파일시스템에 여유 공간이 없으면 이상한 에러들이 뜨기 시작하는데 이런 상황이 의심되면 df -h 명령어로 여유 공간이 없어서 뜨는 에러인지 확인해봅니다. 만약 그렇다면 최고 레벨 디렉토리들의 용량을 보기 위해 아래의 명령어를 사용합니다.
du -sh /*
  '-s' 옵션은 각 디렉토리 내의 용량을 요약해서 보여주고 '-h' 옵션은 인간이 읽기 좋은 형태(KB, MB, GB)로 보여줍니다. 용량이 예상보다 큰 디렉토리를 발견하면 아래의 예처럼 그 하위 디렉토리의 용량을 조사합니다.
du -sh /var/*
  '--exclude=PATTERN' 옵션을 사용하면 특정 파일(이나 디렉토리)을 결과에서 제외시킬 수 있습니다. 여기서 패턴은 정규식이 아니라 쉘 패턴으로서 우리가 흔히 알고 있는 ?, *를 사용하는 패턴을 말합니다. 아래처럼 사용하면 '이 디렉토리 안에 있는 파일과 디렉토리의 용량을 출력하되 파일명(또는 디렉토리명)이 pub로 시작하는 것들은 결과에서 제외하라'는 뜻이 됩니다.
du --exclude='pub*' -sh *
  만약 용량이 1기가바이트 이상인 파일이나 디렉토리만 보고 싶다면 아래처럼 grep을 활용할 수도 있습니다.
du -sh /* | grep G
2010/10/22 13:59 2010/10/22 13:59