본문 바로가기

나의 이야기/음식에대하여

[펌] 자주쓰는 명령어

공사중에 로그인 막기
  시스템을 공사중일 때, root 이외의 다른 사용자를 로그인 못하게 해야 할 때가 있죠?
  그럴 때는, /etc/nologin 이라는 파일을 만들어,
  공사중 또는 Under Construction이라는 공지를 넣으면 됩니다.

크기가 가장 큰 파일, 디렉토리 찾기
  가장 큰 디렉토리를 찾으려면,
  du -S | sort -n

  cf) 솔라리스의 경우
  du -sk `ls -1 | grep '/$'`|sort +n

  가장 큰 파일을 찾으려면,
  ls -lR | sort +4n

디스크 Full발생시 쓸모없는 파일 제거
  오브젝트파일만 제거하는 예제
  find . -name '*.o' -print -exec rm -f {} \;

  실행파일들 출력
  find . -type f -perm +u+x -print

find의 일반적인 용례
  name 파일명 지정한 파일명에 해당하는 파일을 검색
  메타문자를 사용할 경우 파일명을 ''기호 내에 기입

  -size  파일 크기 지정된 크기의 파일을 검색. 크기는 블록 단위, 1 블록 = 512 바이트
  -mtime 숫자 지정된 날짜 이전에 수정된 파일을 검색
  -ctime 숫자 가장 최근에 변경된 것이 지정된 날짜 전인 파일 검색
  -user  사용자명 지정된 사용자 수용의 파일 검색
  -print 검색 결과를 화면에 표시
  -atime 숫자 지정된 날짜 이전에 접근 된 파일을 검색
  -perm  접근권한 지정

  -type 파일 유형 지정된 유형의 파일을 검색
    b: 블록 특수 파일
    c: 문자 특수 파일
    d: 디렉토리
    f: 일반파일
    l: 링크파일
    p: 파이프 파일

  -exec 명령어 {} \;
  실행 결과를 입력 파일로 받아들여 명령어 실행.
  명령어의 끝은 \;
  {} : 현재 경로명으로 대치

현재 디렉토리의 크기만을 파악할때
  [root@dev2 local]# du -c -h --max-depth=0 *
  6.4M    apache
  35M     bin
  43M     dns
  1.7M    doc
  42k     etc
  1.0k    games
  42k     geektalkd
  1.1M    gnuws
  1.1M    include
  41k     info
  19M     jakarta-tomcat-3.2.3
  0       jre
  15M     jre118_v3
  25M     lib
  62k     libexec
  1011k   man
  1.3M    mm.mysql.jdbc-1.2c
  937k    sbin
  3.8M    share
  1.8M    shoutcast-1-8-3-linux-glibc6
  5.2M    ssl
  159M    total
 
시스템 정보 감추기
  /etc/inetd.conf 파일을 열어서,
  telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd -h
 

어떤 프로세스가 메모리를 가장 많이 잡아먹고 있는지 알아내기
  ps -aux | sort +4n
  또는
  ps -aux | sort +5n
 
FTP로 들어온 사용자 확인하기
  ftpwho
  ftpcount
  

원하지 않는 사용자 죽이기
  [root@dream /root]# skill -KILL sunny
  위의 명령을 내리면 sunny 라는 사용자를 완전히 추방시킬수 있습니다.
  그런데 이렇게 완전히 추방시키는게 아니구, 특정 터미널에 접속해있는 사용자만 추방시켜

  야 할 때도 있겠죠?
  그럴때는

  [root@dream /root]# skill -KILL -v pts/14
  이런식으로 하면 된다 그럼 pts/14 에 연결되어 있는 사용자가 죽게 됩니다.
 
less 결과를 vi로 보기
  less상태에서 v를 누르면 바로 vi로 감
 

vi에서 블럭 설정하기
  alt+v 하면, 라인 단위로 블럭 설정을 할 수 있으며, 해제 하시려면 Esc를 누르면 됩니다.

  또한 ctl+v를 하시면, 블럭 단위로 블럭을 설정하실 수 있습니다.

  블럭을 설정 하신 뒤,

  삭제를 하려면 x
  복사를 하려면 y
  붙여넣기는 p
 
man 페이지 프린트하기
  vi에 대한 매뉴얼을 ps(postscript파일)로 저장
  man -t vi > vi.ps
 
  man 페이지를 일반파일로 갈무리하려면 man vi | col -b > aa.txt

ping 무시하기
  echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
  echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all

동시에 여러개의 하위 디렉토리 만들기
  mkdir -p music/koreanmusic/ost

리로 다시 살리기
  boot : vmlinuz root=/dev/hda6

특정 사용자 ftp 접근 막기
  /etc/ftpusers 파일에 로그인 네임을 추가하면 됩니다.

X 윈도우에서 TV보기
  리눅스에서 TV보기 위해서는 드라이버 파일과 TV를 보는 프로그램이 필요합니다.
  이 글에서는 미지 리눅스 OS에 탑재된 bttv 칩셋을 사용하는 TV 카드를 기준으로 설명합니

  다.
  만일 커널을 새로 컴파일 하실 분은 반드시

  Character devices -> Video For Linux -> BT848 Video For Linux 항목을 모듈화 시키거나

   커널에 포함하십시오.

  TV 카드를 리눅스에 인식시키기 위해서 /etc/conf.modules 파일에 다음과 같은 내용을 삽입

  하고 컴퓨터를 다시 시작합니다.

  alias char-major-81 bttv
 
  # 필립스 튜너의 경우 pre-install bttv modprobe -k tuner

  # 알프스 튜너의 경우 pre-install bttv modprobe -k tuner type=9

  이제 kwintv나 xawtv 등의 TV 시청 프로그램으로 TV를 볼 수 있습니다.
  만약 TV 장치를 찾지 못하는 오류가 있다면 bttv driver 디렉토리에 포함된 MAKEDEV 를 실

  행하십시오.

ls라는 파일이 포함된 rpm패키지 찾기
  일단 ls의 절대경로를 알아야 한다. which ls
  which로 알아낸 ls의 절대경로로 rpm질의를 한다.rpm -qf /bin/ls
  [root@piruks /etc]# which ls
  /bin/ls
  [root@piruks /etc]# rpm -qf /bin/ls
  fileutils-4.0i-2mz

현재 rpm패키지의 의존패키지
  rpm -qR 패키지명

현재 디렉토리크기
  du -h --max-depth=1 .

바로 이전 디렉토리로 가기
  cd -

프로세스명으로 프로세스 죽이기
  [리눅스]
  killall 프로세스명
  kill -9 `pidof 프로세스명`

하드웨어 시계맞추기
  배포본을 설치하고 나면 시간이 맞지 않는 경우가 많다.
  간단히 어느정도 정확한 시간을 설정하는 방법이다.
  [root@dev /down]# rdate -s time.kriss.re.kr
  [root@dev /down]# clock -w

원격에서 리모트서버의 X application실행시
  X윈도 app를 실행할때 다음과 같은 에러가 나면 조치
  [kang@dev /home/kang] xclock
  Xlib: connection to "211.222.186.170:0.0" refused by server
  Xlib: Client is not authorized to connect to Server
  Error: Can't open display: 211.222.186.170:0.0

  export DISPLAY=211.222.186.170:0
  xhost +211.222.186.170

파일내 문자열 치환
  mysql에 replace라는 프로그램이 딸려있다.

  현재 디렉토리내 모든 파일에서 a를 b로 변경
  replace a b -- *

  현재 디렉토리내 모든 파일에서 a는 b로, b는 a로 변경
  replace a b b a -- *
 
  하위 디렉토리를 포함하여 위의 작업을 할때
  replace a b -- `find . -type f -name '*' -print`
  or
  find . -type f -name '*' -exec replace a b -- {} \;
 
  PERL로 한다면 다음과 같이 해도 된다.
  find . -type f -name '*' -exec perl -pi -e 's/a/b/g' {} \;
 
  ex)
  find . -type f -name '*.html' -exec /usr/local/mysql/bin/replace
myunggyu@orgio.net kang@ 

  dbakorea.pe.kr -- {} \;

ISO이미지 만들기
  /down/Disk1 디렉토리의 내용을 Linux9i_1.iso라는 ISO이미지파일로 만든다.
  mkisofs -r -o Linux9i_1.iso /down/Disk3

  위에서 만들어진 Linux9i_1.iso파일을 레코더로 구울때
  cdrecord -v -isosize speed=12 dev=0,0 Linux9i_1.iso

XMMS에서 한글출력
  메뉴중 옵션-선택사항-폰트'에 다음과 같이 지정
  옵션: 폰트셋 사용하기(멀티바이트 지원설정) 체크
  연주목록에 다음과 같이 설정
  -adobe-helvetica-bold-r-*-*-10-*, -baekmuk-gulimbdf-medium-r-normal-*-*-120-*-*-m-*-k

  sc5601.1987-0

  기본창- X폰트사용 체크 하고 다음과 같이 설정
  -adobe-helvetica-medium-r-*-*-8-*, -baekmuk-gulimbdf-medium-r-normal-*-*-120-*-*-m-*-

  ksc5601.1987-0

ISO파일 처리
  CD이미지(ISO 9660) 만들기
  dd if=/dev/cdrom of=ora817.iso
  or
  mkisofs -R -V Oracle817 -o ora817.iso /dev/cdrom
    
  CD이미지(ISO 9660) 마운트
  mount -r -t iso9660 -o loop ora817.iso /mnt/iso
 
  CD이미지(ISO 9660) 굽기
  cdrecord -scanbus로 가능한 dev파악
  cdrecord -v -eject speed=12 dev=0,0,0 ora817.iso


file: 파일의 종류와 정보를 알려준다.

  [kang@ns work]$ file signal_reset.c
  signal_reset.c: C program text
 
  [kang@ns work]$ file signal_reset
  signal_reset: ELF 32-bit LSB executable, Intel 80386, version 1, dynamically linked (uses sha

  red libs), not stripped


stat: Unix system함수인 stat(fstat)가 가지는 정보를 보여주기 위해 명령어로 구현되어진 것

  [kang@ns work]$ stat signal_reset.c
  File: "signal_reset.c"
  Size: 175 Filetype: Regular File
  Mode: (0664/-rw-rw-r--) Uid: ( 512/ kang) Gid: ( 512/ kang)
  Device: 3,7 Inode: 96199 Links: 1
  Access: Wed Oct 18 21:12:01 2000(00000.00:01:33)
  Modify: Wed Oct 18 21:11:43 2000(00000.00:01:51)
  Change: Wed Oct 18 21:11:43 2000(00000.00:01:51)
 
  [kang@ns work]$ stat signal_reset
  File: "signal_reset"
 Size: 11991 Filetype: Regular File
  Mode: (0775/-rwxrwxr-x) Uid: ( 512/ kang) Gid: ( 512/ kang)
  Device: 3,7 Inode: 96198 Links: 1
  Access: Wed Oct 18 21:12:06 2000(00000.00:01:30)
  Modify: Wed Oct 18 21:11:50 2000(00000.00:01:46)
  Change: Wed Oct 18 21:11:50 2000(00000.00:01:46)


reset: 키보드설정 reset(? 매뉴얼에도 없다. 잘모르겠다.)

  [kang@ns work]$ reset
  Erase is delete.
  Kill is control-U (^U).
  Interrupt is control-C (^C).

whatis : whatis데이터베이스에서 완전한 단어를 검색한다.
  ex) whatis ls whereis

apropos : whatis데이터베이스에서 문자열을 검색한다. man -k와 같다.
  ex) apropos socket

whereis : 바이너리,소스,매뉴얼 파일의 위치 출력
  ex) whereis cp

cal : 달력 출력
  ex) cal 2004   : 2004년 달력 출력
       cal 5 2004 : 2004년 5월 달력 출력
    
tty : 자신이 사용하는 터미널명을 출력. kill명령으로 해당 터미널유저를 처리할때 쓰도록..




 쉘에서...

?은 한문자를 의미
*은 모든 문자를 의미

  ls dbakorea[0-9] : dbakorea0 ~ dbakorea9
  ls dbakorea[09]  : dbakorea0, dbakorea9


SORT
  [kang@dbakorea test]$ cat sort.dat
  aaa,강명규,관리자
  ccc,홍길동,도둑놈
  bbb,강감찬,장군
  ddd,임꺽정,도적놈
  [kang@dbakorea test]$ sort sort.dat
  aaa,강명규,관리자
  bbb,강감찬,장군
  ccc,홍길동,도둑놈
  ddd,임꺽정,도적놈
  [kang@dbakorea test]$ sort -t , +1 sort.dat 2번째 컬럼을 기준으로 정렬. -t는 필드구분자로 

  콤마 지정
  bbb,강감찬,장군
  aaa,강명규,관리자
  ddd,임꺽정,도적놈
  ccc,홍길동,도둑놈

대소문자 변환
  [kang@dbakorea test]$ tr "[a-z]" "[A-Z]" < sort.dat
  AAA,강명규,관리자
  CCC,홍길동,도둑놈
  BBB,강감찬,장군
  DDD,임꺽정,도적놈

PASTE
  [kang@dbakorea test]$ cat > paste.data1
  홍길동
  이순신
  김유신
  [kang@dbakorea test]$ cat > paste.data2
  부산
  서울
  대구
  [kang@dbakorea test]$ paste paste.data1 paste.data2
  홍길동  부산
  이순신  서울
  김유신  대구
  [kang@dbakorea test]$ paste -d"\n" paste.data1 paste.data2
  홍길동
  부산
  이순신
  서울
  김유신
  대구
  [kang@dbakorea test]$ paste -s -d"::\n" paste.data1
  홍길동:이순신:김유신
  [kang@dbakorea test]$

JOIN : DBMS의 조인기능과 유사
  [kang@dbakorea test]$ cat > join.data1
  maddog:강명규
  gildong:홍길동
  superman:슈퍼맨
  batman:배트맨
  [kang@dbakorea test]$ cat > join.data2
  maddog:DBA    
  maddog:Programmer
  superman:Hero
  batman:American Hero
  [kang@dbakorea test]$ join -j1 1 -j2 1 -t: join.data1 join.data2
  maddog:강명규:DBA
  maddog:강명규:Programmer
  superman:슈퍼맨:Hero
  [kang@dbakorea test]$


SPLIT
  [kang@dbakorea test]$ split -100000 wf_cleaner_20040418.log wf_cleaner_            
  [kang@dbakorea test]$ ls -l
  총 322816
  -rw-r--r--   1 sky      other    82509153  4월 21일  16:15 wf_cleaner_20040418.log
  -rw-r--r--   1 sky      other    4817168  4월 21일  16:16 wf_cleaner_aa
  -rw-r--r--   1 sky      other    4826953  4월 21일  16:16 wf_cleaner_ab
  -rw-r--r--   1 sky      other    4819016  4월 21일  16:16 wf_cleaner_ac
  -rw-r--r--   1 sky      other    4818664  4월 21일  16:16 wf_cleaner_ad
  -rw-r--r--   1 sky      other    4815234  4월 21일  16:16 wf_cleaner_ae
  -rw-r--r--   1 sky      other    4826339  4월 21일  16:16 wf_cleaner_af
  -rw-r--r--   1 sky      other    4822263  4월 21일  16:16 wf_cleaner_ag
  -rw-r--r--   1 sky      other    4814657  4월 21일  16:16 wf_cleaner_ah
  -rw-r--r--   1 sky      other    4816299  4월 21일  16:16 wf_cleaner_ai
  -rw-r--r--   1 sky      other    4817442  4월 21일  16:16 wf_cleaner_aj
  -rw-r--r--   1 sky      other    4807225  4월 21일  16:16 wf_cleaner_ak
  -rw-r--r--   1 sky      other    4816881  4월 21일  16:16 wf_cleaner_al
  -rw-r--r--   1 sky      other    4805557  4월 21일  16:16 wf_cleaner_am
  -rw-r--r--   1 sky      other    4824945  4월 21일  16:16 wf_cleaner_an
  -rw-r--r--   1 sky      other    4800172  4월 21일  16:16 wf_cleaner_ao
  -rw-r--r--   1 sky      other    4813110  4월 21일  16:16 wf_cleaner_ap
  -rw-r--r--   1 sky      other    4795892  4월 21일  16:16 wf_cleaner_aq
  -rw-r--r--   1 sky      other     651336  4월 21일  16:16 wf_cleaner_ar
  [kang@dbakorea test]$ cat wf_cleaner_a[a-r] > wf_cleaner_orig
  [kang@dbakorea test]$

CUT : 컬럼단위 필터링 cf) grep은 행단위 필터링
  필드,문자단위로 컬럼 출력
  [kang@dbakorea test]$ cat sort.data
  aaa,강명규,관리자
  ccc,홍길동,도둑놈
  bbb,강감찬,장군
  ddd,임꺽정,도적놈
  [kang@dbakorea test]$ cut -f1,3 -d , sort.data 1,3번째 필드만 출력. 필드구분자는 콤마
  aaa,관리자
  ccc,도둑놈
  bbb,장군
  ddd,도적놈
  [kang@dbakorea test]$ cut -c5-7 sort.data  5~7컬럼값 출력
  강명규
  홍길동
  강감찬
  임꺽정


EGREP
  grep과 달리 Regular Expression을 지원한다.

  b                        : 일치되는 행의 블록 번호 출력                  
  c           : 문자열을 포함하는 행수 출력                    
  h           : 파일 이름을 출력하지 않음                      
  i           : 대소문자를 구별하지 않음                      
  l           : 문자열을 포함하는 파일 이름만 출력            
  n           : 일치되는 행번호를 함께 출력                    
  s           : 오류가 발생할 경우에만 메시지 출력            
  v           : 일치되지 않는 행만 출력                        
  w           : 문자열이 하나의 단어인 경우만 검색(grep만 가능)
  e 표현식    : 정규 표현식이 - 문자로 시작할 때 유용          
  e 문자열    : fgrep에서만 사용, 문자열은 단순 문자열을 의미  
  f 파일명    : 검색문자열을 파일명으로 부터 받아들임          

  ^  : 행의 시작
  $  : 행의 끝
  .  : 임의의 한문자
  [] : []속에 표현되는 문자 중 임의의 한 문자
  *  : * 앞의 정규표현식이 0회 이상 나타남
  +  : + 앞의 정규표현식이 1회 이상 나타남(egrep에서만 가능)
  ?  : ? 앞의 정규표현식이 0 또는 1회 나타남(egrep에서만 가능)
  \  : 메타문자의 의미 제거(예 : '\*'는 *문자를 의미)
  |  : 문자열간의 OR연산자(egrep에서만 가능)
  () : 정규 표현식을 둘러 쌈(egrep에서만 가능)

  [kang@dbakorea test]$ cat sort.data
  aaa,강명규,관리자
  ccc,홍길동,도둑놈
  bbb,강감찬,장군
  ddd,임꺽정,도적놈
  [kang@dbakorea test]$ egrep '강명규|강감찬' sort.data
  aaa,강명규,관리자
  bbb,강감찬,장군

 
This article comes from dbakorea.pe.kr (Leave this line as is)