HOME | LINUX | CISCO NETWORKING |   
PosgreSQL | Nginx | MariaDB | Bash Shell | GlusterFS | XEN | Cluster | VIM | Iptables | Nagios | Qmail  


리눅스 유용한 명령어 팁
date

 date MMDDhhmmYYYY.ss 
 date 050521212014.12 	

시간 및 위치 변경, 시스템 문자설정

 # /etc/cron.hourly/rdate 에 넣어놓고 시간마다 동기화를 
 # 시켜놓으면 좋다. chmod 700 으로 변경. 
 rdate -s time.bora.net && hwclock -w 
 
 rm -f /etc/localtime 
 ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime

 /etc/sysconfig/i18n
 # 한글 기본설치시에  
 LANG="en_us.UTF-8"
 SUPPORTED="ko_KR.UTF-8:ko_KR:ko"
 SYSFONT="latarcyrheb-sun16"
 
 # 콘솔에서 한글 설정시, IDC에서 콘솔을 사용할 경우 한글이 깨짐
 LANG="ko_KR.eucKR"
 SUPPORTED="ko_KR.UTF-8:ko_KR:ko"
 SYSFONT="latarcyrheb-sun16"

이더넷 디바이스 본딩(bonding)

 vi /etc/sysconfig/network-scripts/ifcfg-bond0 

 DEVICE="bond0"
 Name="System bond0"
 NM_CONTROLLED="no"
 USERCTL=no
 ONBOOT=yes 
 TYPE=Ethernet
 BOOTPROTO=none
 DEFROUTE=yes 
 PEERDNS=no
 PEERROUTES=yes 
 IPV4_FAILURE_FATA=yes
 IPV6INIT=no
 IPADDR=192.168.10.20
 NETMASK=255.255.255.0
 GATEWAY=192.168.10.254 

 vi /etc/sysconfig/network-scripts/ifcfg-eth0 
 DEVICE="eth0"
 NM_CONTROLLED="no"
 ONBOOT=yes
 HWADDR=XX.XX.XX ... 
 UUID=XXXXX ...
 TYPE=Ethernet 
 BOOTPROTO=none 
 NAME="System eth0"
 USERCTL=no
 MASTER=bond0
 SLAVE=yes 

 vi /etc/modprobe.d/bonding.conf 
 alias bond0 bonding 
 options bond0 mode=5 miimon=100  

 console # modprobe bonding 

 Bonding Options : ifcfg-bond0
 BONDING_OPTS="miimon=100 mode=balance-tlb" 
 BONDING_OPTS="miimon=100 mode=balance-alb" # if mode=6

selinux 설정하기

 vi /etc/selinux/config 
 SELINUX=enforcing -> SELINUX=disabled
 
 # selinux의 상태 보기 
 sestatus  
 
 # selinux의 상태를 enforcing 상태로 변경, 0은 permissive 
 setenforce 1 
 
 # selinux의 상태보기 (disabled, enforce, permissive) 
 getenforce   

crontab 명령어

 crontab -e  # crontab 수정
 crontab -l  # crontab 리스트 보기 
 crontab -u username -l  # username crontab 리스트보기
 crontab -r  # crontab 파일 삭제하기 
 crontab -v  # crontab 에 마지막에 수정한 부분을 출력 

 */20       *      *       *       *      root /usr/local/bin/run 2>&1 > /dev/null 
 [분:m] [시간:h] [일:d] [월:m] [주간:w]  [실행] [명령어] 

 주간에서 0, 7은 일요일로 동일함

grep 명령어
 # ignorecase (대소문자 구별안함) 
 grep -i "word" some_file 
 
 # 하위 디렉토리까지 검색을 실행, 일명 recursive 
 grep -r "word" * 

 # 매칭되지 않는 라인
 grep -v "word" some_file


find 명령어

 # 50M이상의 파일을 찾을때 사용 
 find /home -type f -size +50M 

 # 20일 전에 수정된 파일들 목록 
 find /home -mtime +20 

 # 2일이내에 수정된 파일들 목록 
 find /home -mtime -2 

 # 50M 이상의 파일 리스트 목록 
 find /home -type f -name *.gz -size +50M -exec ls -l {} \;

 # 50M 이상의 파일 리스트 삭제한다. 
 find /home -type f -name *.gz -size +50M -exec rm -f {} \;

 # find는 파일리스트가 매우 많은 디렉토리에서 써도 좋다. 
 # 보통 Qmail Queue가 삭제가 안될때 쓰면 유용함. 
 # 아래와 같이 쓰라. 아래와 같은 명령어를 쓰기전까지 난 
 # 쉘스크립트로 파일하나하나를 얻어서 삭제했었다. 에효~~ 
 # 아는거시 힘인 거시다. 

 find /var/qmail/queue/remote -type f -exec rm -f {}\;
 
 # 
 find /home -mmin +0 -mmin -10  



기타 명령어

 # 파일을 라인번호와 함께 보여줌 
 cat -n some_file 
 
 # 소문자들을 대문자로 바꾼다. 
 tr a-z A-Z < some_file
 
 # 대문자를 소문자로 바꾼다. 
 tr A-Z a-z < some_file 

 # url_list.txt 파일내에 있는 url링크의 파일을 얻는데 유용
 cat url_list.txt | xargs wget -c 

 # /home 디렉토리 및에 있는 jpg 파일을 모두 압축하고 묶는다. 
 find /home -name *.jpg -type f -print | xargs tar -czvfp images.tar.gz 


 # 구분자 : 를 기준으로 2번째 컬럼을 기준으로 정렬 
 sort -t: -k 2 some_file 
 
 # -u : unique 
 sort -t: -u -k 3 some_file 

 # 유용한 아이피 주소 소팅방법 해석은 알아서 해보라 
 sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n some_ip_file 

 # -d : delimeter , -f : field 
 cut -d: -f 1 some_file 

 # 
 cut -d: -f 1,3 some_file 

 # 
 cut -c 1-8 some_file 

 # 파일이나 디렉토리의 속성 표시 
 stat some_file 

 # 현재 로긴된 사용자의 연결시간 
 ac -d 

 # 모든 사용자의 연결 시간 
 ac -p 

 # 지정된 (juria) 사용자의 서버 연결시간 
 ac -d juria 

 # 압축을 안풀고 파일이 정상인지 확인하기 
 unzip -t some_file.zip 
 
 # 압축을 안풀고 압축된 파일의 리스트를 구하기 
 unzip -l some_file.zip 

 # tar로 묶인 파일의 묶인 파일들 리스트 구하기 
 tar -tvf some_file.tar 

 # tar로 묶인 파일을 특정 디렉토리에 풀기 
 tar -xzvfp /home home some_file.tar.gz -C /usr/local/src 

 # history manual 
 alias h=history

 # 히스토리 번호(n)번째를 실행한다. h 누르면 히스토리 리스트 나옴 
 !n

 # 방금전에 실행한거 실행하기 
 !!

 # 가장 최근에 실행한 커맨드 실행 (string으로 시작하는 것) 
 !string 
 
 # 
 !# 

 # 가장최근 히스토리 10개 출력하기 
 h 10 

 # -m 0 , -b 4096 
 mke2fs -m 0 -b 4096 /dev/sda1 

 # 파티션 정보확인하기 
 tune2fs -l /dev/sda1 

 # 파일을 스왑공간 만들기 
 dd if=/dev/zero of=/swapfs bs=1M count=1024 

 mkswap /swapfs 
 swapon /swapfs 

 # 유저 신규추가시에 기본값 보기 
 useradd -D 


 # ssh 공개/개인키 복사하기 
 # 접속시에 도움이 되나, 온라인에서 쓰면 안조음 
 # 폐쇄망에서 쓰라. 
 
 ssh-keygen -t rsa
 ssh-copy-id -i ~/.ssh/id_rsa.pub remote-host 
 ssh remote-host 

 # /etc/sysctl.conf 의 설정내용 확인 
 sysctl -a 

 # /etc/sysctl.conf 파일의 수정된 내용을 적용 
 sysctl -p 

 # 재부팅 후에도 적용되도록 하기 위해서 아래와 같이 적용
 sysctl -w variable=value 


파일시스템 설정

 /boot (200M)            , default,ro,noatime
 /     (1GB)             , default,noatime
 /usr  (5GB)             , default,ro,noatime
 /var  (5GB)             , default,noatime
 SWAP  (2-5GB)           
 /home (필요에 따라서)      , default,noatime
 /usr/local (필요에 따라서) , default,noatime
 /tmp  (1GB)             , default,noatime,nosuid,noexec,nodev 
 /dev/shm                , default,noatime,nosuid,noexec,nodev 
  

rsync 설정하기
	
 # inetd 로 서버를 설정시 xinetd 설정파일과 rsyncd.conf 설정파일의 
 # 특정 디렉토리를 설정한다. 
 # 서버아이피 : 192.168.10.1 , 클라이언트 아이피 : 192.168.10.10 , 기본포트 : 873 
 /etc/xinet.d/rsync 파일 설정하기
 service rsync 
 {
	disable 	= no
 	socket_type = stream
 	wait		= no
 	user		= root
 	server		= /usr/bin/rsync 
 	server_args	= --daemon
 	log_on_failure = USERID
 }
 
 /etc/rsyncd.conf 파일 설정하기
 [data]
 path		= /home/drupal/www
 comment	= Drupal Data 
 list		= yes
 uid		= root
 gid		= root 
 use chroot	= yes
 read only	= yes
 hosts allow	= 192.168.10.10 
 log file 	= /var/log/rsync.log
 max connections = 5
 timeout	= 30
 
 /etc/init.d/inetd restart 
 

 rsync -avz 192.168.10.1::data /home/drupal/www 
  
  
 # ssh를 활용한 rsync 방법은 rsync 서버를 구성하지 않아도 
 # 데이터 복제가 가능하다. 
 # -p port , 
 rsync -avz -e 'ssh -p 22' root@192.168.10.1:/home/drupal/www /home/drupal/www 
  
 # 패스워드를 넣기 싫다면 client에서 key를 생성 후 서버에 authorized_keys로 ~/.ssh/ 디렉토리에
 # 넣어놓으면 패스워드 없이 접속이 가능하다. 패스워드를 입력하지 말라. 

 ssh-keygen -d -t rsa 
 Generating public/private rsa key pair.
 Enter file in which to save the key (/root/.ssh/id_rsa):
 Enter passphrase (empty for no passphrase):
 Enter same passphrase again:
 Your identification has been saved in /root/.ssh/id_rsa.
 Your public key has been saved in /root/.ssh/id_rsa.pub.
 The key fingerprint is:
 d4:65:e8:fb:29:44:60:39:82:0d:3b:a8:ec:ef:2a:50 root@drupal
 The key's randomart image is:
 +--[ RSA 2048]----+
 |    .+   . .o    |
 |   ...o =..o     |
 |  . o  o.+.      |
 |..E  . .  o      |
 |.o      S. .     |
 |o         o      |
 |..       . . .   |
 |. .       . o    |
 |..oo       .     |
 +-----------------+

 # 위에서 만들어진 id_rsa.pub 키를 서버로 넘긴다. 
 scp /root/.ssh/id_rsa.pub root@192.168.10.1:/root/.ssh/authorized_keys 
 
 # 복사 후 해당 서버에 접속해서 데이터를 패스워드없이 가져올수 있다. 
 rsync -avz -e 'ssh -p 22' root@192.168.10.1:/home/drupal/www /home/drupal/ 
 
 
 # rsync 기타 옵션 
 # 전송속도 제어 : --bwlimit=512는 Kbyte , 1024는 1MB 
 rsync -ar --bwlimit=512 server:/home/www /home/data 

rsyslog 설정하기

 # 현재 관리서버의 로그를 원격서버에 저장하기 위해서 사용한다. 
 
 yum -y install rsyslog 
 chkconfig --level 2345 rsyslog on 
 /etc/init.d/rsyslog start 
 
 # 
 # 192.168.10.10 서버에 현재서버의 로그를 저장한다. 
 vi /etc/rsyslog.conf 
 
 # 앞쪽에 있는 아래의 변수를 uncomments 한다. 
 $ModLoad imudp
 $UDPServerRun 514
 *.*	@192.168.10.10 
 
 # 로그를 보낼 서버를 지정한다. 
 # 위와같이 설정하면 모든 로그를 /var/log/에 존재하는 모든파일의 동일한 파일에 쓰여진다. 
 # messages -> messages, cron-> cron, boot.log -> boot.log , dmesg -> dmesg
 # 호스트 이름으로 구별할수가 있다. 
 
 
이더넷(ethernet) 디바이스 설정

 # 디바이스 정보보기
 # negotiation, speed, duplex 정보확인
 ethtool eth0 
 
 # 보통 autoneg on, speed 1000 duplex full 로 사용하나 
 # 제어하고 싶다면 아래의 명령어로 제어가 가능하다. 
 ethtool -s eth0 autoneg [on|off] speed [10/100/1000] duplex [half|full]
 
 # 드라이버 정보는  
 ethtool -i eth0 
 
fuser 사용법

 # fuser는 파일이나 소켓이 사용하는 프로세스를 확인할때 사용한다. 
 # -v : verbose, -k : 해당 프로세스를 킬한다. -i옵션을 같이 쓰면 킬할지를 물어본다.  
 fuser -v /var/log/httpd/access_log 
                      USER        PID ACCESS COMMAND
 /var/log/httpd/access_log:
                     root       1196 F.... httpd
                     nobody     1199 F.... httpd
                     nobody     1200 F.... httpd
                     nobody     1201 F.... httpd
                     nobody     1202 F.... httpd
                     nobody     1203 F.... httpd
                     nobody     1204 F.... httpd
                     nobody     1205 F.... httpd
                     nobody     1206 F.... httpd
 
 # 파일, udp, tcp등에 대한 검색을 실행할때 
 fuser -vn tcp 80
                      USER        PID ACCESS COMMAND
 80/tcp:              root       1196 F.... httpd
                     nobody     1199 F.... httpd
                     nobody     1200 F.... httpd
                     nobody     1201 F.... httpd
                     nobody     1202 F.... httpd
                     nobody     1203 F.... httpd
                     nobody     1204 F.... httpd
                     nobody     1205 F.... httpd
                     nobody     1206 F.... httpd



Home | Linux | Network | About Me |