리눅스 명령어!!!! (보기전에 심호흡 한번 하세요. ^^) > 개발자팁

개발자팁

개발과 관련된 유용한 정보를 공유하세요.
질문은 QA에서 해주시기 바랍니다.

리눅스 명령어!!!! (보기전에 심호흡 한번 하세요. ^^) 정보

MySQL 리눅스 명령어!!!! (보기전에 심호흡 한번 하세요. ^^)

본문

* 문서
1. 패스워드 관리장부
2. 서버자원관리부
3. 백업관리장부
4. 서버작업이력부
5. 서버점검이력부
* 절대로 서버를 믿어서는 안된다. 여러분 자신을 믿으셔야 합니다.

* 한글 사용
# cat /etc/sysconfig/i18n
LANG="ko_KR.eucKR"
SUPPORTED="en_US.UTF-8:en_US:en:ko_KR.eucKR:ko_KR:ko"
SYSFONT="lat0-sun16"
SYSFONTACM="8859-15"
* 네트워크 통신테스트 단계
1. gateway까지 통신에 이상이 없는가?
2. 외부망까지의 통신에 이상이 없는가?
3. DNS까지의 통신에 이상이 없는가?
4. 도메인을 통한 외부망까지의 통신에 이상이 없는가?
* 게이트웨어 설정
route add default gw 게이트웨이_IP주소 dev 네트워크_인터페이스_장치명
예) # route add default gw 192.168.0.1 dev eth0
예) # ifconfig eth0 192.168.1.1 netmask 255.255.255.0 broadcast 192.168.1.255 up
    # route add -net 192.168.1.0 netmask 255.255.255.0 eth0
    # route add default gw 192.168.1.254 dev eth0
* route 명령을 통한 routing 규칙
# route
Kernel IP routing table
Destination Gateway  Genmask  Flags Metric Ref Use Iface
192.168.0.0 *  255.255.255.0 U 0 0 0 eth0
169.254.0.0 *  255.255.0.0 U 0 0 0 eth0
127.0.0.0 *  255.0.0.0 U 0 0 0 lo
default  192.168.1.254 0.0.0.0  UG 0 0 0 eth0
1. 위의 첫번째행부터 다음행으로 차례대로 한 행씩 읽어 들여서 처리할 퍀시을 보낼 수 있는가를 확인합니다.
2. default라는 것이 이 서버의 기본 게이트웨이 설정해을 의미하며 그 행의 Gateway 항목값이 기본게이트웨이의 IP주소입니다. default는 0.0.0.0을 의미합니다.
3. 보낼 데이터의 목적지 IP주소와 Genmask값(SubnetMask)과의 AND연산을 해서 그 결과가 해당행의 Destination항목과 동일할 겨웅에 해당 행의 Iface에 있는 인터페이스로 해당 패킷을 전송하게 됩니다.
4. Iface항목의 값이 lo인 행(Destination값이 127.0.0.0인 행)은 이 서버의 루프백(loopback) 데이터를 처리하기 위한 설정입니다. 즉, 자기 자신에게로 데이터를 보낼 때에 처리를 담당하는 인터페이스입니다.
* 기본게이트웨이 정보:
# cat /etc/sysconfig/network
NETWORKING=yes   # 통신이 되도록 지원할 것인가의 여부
HOSTNAME=ns.superuser.co.kr # 서버의 호스트네임(hostname)
GATEWAY=192.168.1.254  # 시스템 전체에 대한 Global한 기본게이트웨이
GATEWAYDEV=   # 기본게이트웨이 장치명
FORWARD_IPV4=no   # 리눅스 서버가 라우터역할을 할 것인가의 여부. 즉, 패킷포워딩을 수행학자 할 경우에는 yes로 설정하고 패킷포워딩을 하지 않을 경우에는 no로 설정한다. 일반적이 서버역할을 수행할 경우에는 거의 대부분 no로 설정한다.
* IP관련 네트워크 정보:
# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0   # 네트워크 디바이스 장치명
BOOTPROTO=static  # 이 네트워크 디바이스에 유동IP를 동적(dynamic)으로 할당하고자 할 경우에는 dhcp를 주소 정적(static)한 고정IP를 할당하고자 할 경우에는 static이라는 값을 준다.
IPADDR=192.168.1.101  # 이 서버의 IP주소
BROADCAST=192.168.1.255  # 브로드캐스트 주소
NETMASK=255.255.255.0  # 넷마스크값
NETWORK=192.168.1.0  # 네트워크주소
ONBOOT=yes   # 해당 네트워크 인터페이스(eth0)를 서버 부팅시에 활성화하여 사용할 것인가를 결정한다.
#USERCTL=no
#GATEWAY   # 해당 네트워크 인터페이스(eth0)의 기본 게이트웨이를 설정. /etc/sysconfig/network 에 있는 GATEWAY보다 우선순위가 높다.
* 네임서버관련 정보:
# cat /etc/resolv.conf
search superuser.co.kr
nameserver 168.126.63.1
nameserver 164.124.101.2

* ifconfig 명령어
1. eth0 인터페이스 down/up
# ifconfig eth0 down
# ifconfig eth0 up
2. 네트워크 설정
- 설정할 network device : eth0
- 호스트 IP Address     : 192.168.0.100
- Netmask               : 255.255.255.0
- Broadcast IP          : 192.168.0.255
- Network IP            : 192.168.0.0
# ifconfig eth0 192.168.0.100 netmask 192.168.0.0 broadcast 192.168.0.255 up
* 네트워크 주소 설정파일
- /etc/sysconfig/network
- /etc/sysconfig/network-scripts/ifcfg-eth0
- /etc/rc.d/init.d/network start|restart|stop
* 리부팅
# reboot
# shutdown -r now
# init 6
* IP앨리어싱
# cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0:0
# cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0:1
# cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0:2
# cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0:3
# 각 파일 편집
# cat /etc/sysconfig/network-scripts/ifcfg-eth0:0
DEVICE=eth0:0   # -> 이 부분 수정 (원래 eth0)
BOOTPROTO=static
BROADCAST=192.168.0.255
IPADDR=192.168.0.211  # -> 이 부분 수정 (원래 192.168.0.210)
NETMASK=255.255.255.0
NETWORK=192.168.0.0
ONBOOT=yes
TYPE=Ethernet
# cat /etc/sysconfig/network-scripts/ifcfg-eth0:1
DEVICE=eth0:1   # -> 이 부분 수정 (원래 eth0)
BOOTPROTO=static
BROADCAST=192.168.0.255
IPADDR=192.168.0.212  # -> 이 부분 수정 (원래 192.168.0.210)
NETMASK=255.255.255.0
NETWORK=192.168.0.0
ONBOOT=yes
TYPE=Ethernet
# /etc/rc.d/init.d/network restart
* hostname 변경
- 영구적으로 변경
# vi /etc/sysconfig/network -> HOSTNAME 수정 (재부팅 필요)
- 일시적으로 변경
# hostname hostname.you_want.com -> 지금 즉시 수정
* netstat
- a 옵션 : --all과 같으며 listen되는 소ㅔㅅ정보와 listen되지 않는 소켓정보 모두를 보여줌.
- n 옵션 : --numeric과 같으며 10진수의 수치정보로 결과를 출력해줌.
- r 옵션 : --route과 같으며 설정된 라우팅정보를 출력해줌
- p 옵션 : --program과 같으며 실행되고 있는 각 프로그램과 PID정보를 출력함.
- i 옵션 : --interface=iface과 같으며 모든 네트워ㅡ인터페이스정보를 출력함. 또는 특정 네트워크인터페이스를 지정할 수도 있음.
- c 옵션 : --continuous과 같으며 netstat결과를 연속적으로 출력함.
- l 옵션 : --listening과 같으며 현재 listen되고 있는 소켓정보를 출력
- s 옵션 : --statistics과 같으며 각 프로토콜에 대한 통계정보를 출력
- t 옵션 : --tcp와 같으며 tcp 정보를 출력
- u 옵션 : --udp와 같으며 udp 정보를 출력
* netstat 연결상태
- LISTEN : 연결이 가능하도록 관련데몬이 떠있으며 연결이 가능함을 나타냄.
- SYN-SENT : 연결을 요청한 상태
- SYN_RECEIVED : 연결요구에 의한 응답을 준 후에 확인메시지를 기다리고 있는 상태.
- ESTABLISHED : 앞의 3단계 연결과정이 모두 종료된 후에 연결이 완료된 상태
- FIN-WAIT1, CLOSE-WAIT, FIN-WAIT2 : 연결종료를 위해 종료 요청을 받은 후의 종료 과정임.
- CLOSING : 전송된 메시지가 유실된 상태를 나타냄.
- TIME-WAIT : 연결종료 후에 한동안 유지하고 있는 상태.
- CLOSED : 연결이 완전히 종료됨.
* 국내도메인 사용기관 정보 조회
리눅스 쉘         : whois -h whois.krnic.net 대상도메인(or IP Address)
                    ex) whois -h whois.krnic.net 202.86.12.129
웹에서의 조회 URL : http://whois.nic.or.kr/
* 국제도메인 사용기관 정보 조회
리눅스 쉘         : whois -h whois.internic.net 대상도메인(or IP Address)
                    ex) whois -h whois.internic.net cnn.com
웹에서의 조회 URL : http://www.networksolutions.com/en_US/whois/index.jhtml
* ethtool (이더넷카드의 설정의 상황출력과 변경을 하는 명령어)
- 이더넷 설정확인 : ethtool eth0
- 이더넷 설정변경 : ethtool -s eth0 [speed 10|100|1000] [duplex half|full] [autoneg on|off]
# ethtool eth1
# ethtool -s eth1 speed 100 duplex full autoneg off
* mii-tool (Media Independent Interface Tool)
# mii-tool
eth0: no autonegotiation, 10baseT-HD, link ok
eth1: 100 Mbit, full duplex, no link
# mii-tool eth0
eth0: no autonegotiation, 10baseT-HD, link ok
# mii-tool eth1
eth1: 100 Mbit, full duplex, no link
# mii-tool -v eth0
eth0: no autonegotiation, 10baseT-HD, link ok
  product info: Intel 82555 rev 4
  basic mode: autonegotiation enabled
  basic status: autonegotiation complete, link ok
  capabilities: 100baseTx-FD 100baseTx-HD 10baseTx-FD 10baseTx-HD
  advertising: 100baseTx-FD 100baseTx-HD 10baseTx-FD 10baseTx-HD flow-control
  link partner: 10baseT-HD
# mii-tool -R -> 네트워크 인터페이스의 기본설정내용대로 재설정
# mii-tool -r -> 네트워크 인터페이스의 autonegotiation설정을 재시작
* modprobe를 이용한 랜카드 모드 설정확인 및 변경하기
# lsmod
Module  Size Used by
eepro100 18144 1
# cat /etc/modules.conf
alias eth0 eepro100
alias scsi_hostadapter aic7xxx
# modprobe 랜카드모듈명 speed_duplex=설정번호
- speed_duplex=0 : auto detection 모드로 설정
- speed_duplex=1 : 10M, half duplex로 설정
- speed_duplex=2 : 10M, full duplex로 설정
- speed_duplex=3 : 100M, half duplex로 설정
- speed_duplex=4 : 100M, full duplex로 설정
ex) modprobe eepro100 speed_duplex=1
* tcpdump
# tcpdump -i eth0  -> 특정 ethernt(eth0) 으로 송수신 되는 데이터 패킷 덤프하여 확인
# tcpdump -i eth0 -w TCPDUMP -> 특정 ethernet으로 송수신 되는 패킷들 파일에 저장 및 확인
# tcpdump -r TCPDUMP  -> TCPDUMP에 저장된 패킷헤드들을 확인
# tcpdump -i eth0 -c 10  -> 특정 ethernet에서 지정한 개수만큼의 네트워크 패킷 덤프하여 확인
# tcpdump -w tcpdump.log -s 1500 tcp port 22 and host 192.168.0.1
    -> 서버의 특정포트로 송수신되는 모든 데이터패킷 전체를 확인
    -> 이 명령의 의미는 현재 로컬서버와  192.168.0.00서버사이의 통신데이터패킷 중 tcp 22번포트의 모든 패킷을 1500길이로 캡쳐하여 tcpdump.log파일에 저장
  -w tcpdump.log 결과를 tcpdump.log파일에 저장
  -s 1500  캡쳐할 패킷의 길이로서 1500은 패킷의 전체길이를 의미하므로 모든 패킷을 캡쳐하게 된다.
  tcp port 22  캡쳐할 대상 프로토콜과 포트를 지정한 것으로 TCP 포트 22번으로 송수신되는 데이터를 캡쳐하다.
  host 192.168.0.100 192.168.0.100서버와 송수신되는 데이터를 대상으로 캡쳐한다.
# tcpdum -Xqnr tcpdump.log -> 캡쳐한 tcpdump.log파일의 내용을 ASCII모드로 확인

*** 리눅스 서버관리 유틸리티 ***
* 시스템 설정과 셋업 유틸리티
# setup
시스템설정과 셋업 파일들을 한데 모은 유틸리티.
* 리눅스 인증설정 유틸리티(NIS와 Shadow패스워드를 설정하는 텍스트 모드 도구)
# authconfig
# systemp-config-authentication
# pwconv -> shadow 패스워드 사용
# pwunconv -> shadow 패스워드 사용
MD5 Passwords 를 사용해서 문자수를 최대 256byte까지 사용할 수 있다.
* 시스템 날짜와 시간을 수정하는 그래픽 인터페이스
# redhat-config-date
# system-config-date
#system-config-time
* httpd 웹 서버에 대한 그래픽 설정 도구
# redhat-cofig-httpd
# system-config-http
* 키보드를 수정하는데 사용되는 그래픽 인터페이스
# redhat-config-keyboard
# system-config-keyboard
* 언어를 수정하는데 사용되는 그래픽 인터페이스
# redhat-config-language
# system-config-language
* 마우스 설정 그래픽 인터페이스
redhat-config-mouse
system-config-mouse
* Red Hat Linux 네트워크 설정 도구에 사용되는 그래픽 사용자 인터페이스. (참고: )
# netconfig
# redhat-config-network
# system-config-network
* NFS 서버 설정 도구
# redhat-config-nfs
# system-config-nfs
* Red Hat Linux에 사용되는 패키지 관리자
# redhat-config-packages
# system-config-packages
* 프린타 설정 백엔드/프론트엔드 조합
# printconf
# redhat-config-printer
# system-config-printer
* 루트 암호를 수정하는데 사용되는 그래픽 인터페이스
# redhat-config-rootpassword
# system-config-rootpasswd
* Samba 서버 설정 도구
# redhat-config-samba
# system-config-samba
* 시스템 보안 수준을 수정하는데 사용되는 그래픽 인터페이스 (lokkit 유틸리티와 같은 기능)
# redhat-config-securitylevel
# system-config-securitylevel
* redhat-config-services는  initscript와 xinetd 설정 유틸리티
# chkconfig
# ntsysv
# redhat-config-services
# system-config-services
이 유틸리티에서 설정가능한 서비스들
- amanda : 서버클라이언트 환경의 네트워크 백업시스템
- amd  : 자동마우트서비스(automatically mount file system)
- anacron : 주기적인 작업을 설정할 수 있는 서비스
- apmd  : 전원관리 데몬. 즉 전원감시 데몬
- arpwath : 네트워크인터페이스 하드웨어주소(MAC주소)와 IP주소를 쌍으로 모니터링하는 툴로서 보안도구로도 사용됨.
- atd  : 지정된 시간에 특정 작업을 실행할 수 있는 프로그램.
- bootparamd : 디스크가 없는 서버의 부팅정보제공을 하는 데몬
- chargen : character generate 서비스(보안에 취약함)
- chargen-udp : character generate 서비스(udp)
- comsat : 메일도착알림이나 사용자 알림사항등이 있을 때 알려주는 biff server
- crond  : 주기적인 작업실행을 할 수 있는 cron데몬
- daytime : daytime 서비스
- daytime-udp : daytime udp 서비스
- dhcpd  : ADSL과 MODEM사용자들에게 IP를 할당해주는 DHCP서버데몬
- finger : 로컬이나 원격서버의 계정사용자 정보 확인하는 finger서비스.
- gated  : 라우팅 데몬
- gpm  : 문자의 복사나 붙일 수 있는 가상콘솔을 위한 마우스서버
- gssftp : GSS FTP 서버데몬 프로그램
- identd : TCP/IP IDENT 프로토콜 서버 프로그램.
- imapd  : POP과 함께 메일수신데몬으로 사용되는 IMAP데몬
- imaps  : SSL을 지원하는 IMAP데몬
- innd  : 인터넷 NEWS 데몬
- ipchains : IP firewall 관리데몬 프로그램
- ipop3  : 서버에서 클라이언트로 메일을 보내주는 POP서버
- iptables : IP 패킷필터링 관리 프로그램.
- kadmin : kerberos V5 데이터베이스 관리 프로그램
- keytable : 키보드설정 데몬 프로그램
- kprop  : 마스터 KDB와 복제를 동기화시키는 서버유티리티
- kudzu  : 하드웨어 장치설정 프로그램
- ldap  : 디렉토리서비스 엑세스를 위한 클라이언트-서버 프로토콜 데몬
- linuxconf : 리눅스설정 유틸리티인 linuxconfi데몬 프로그램.
- lpd  : 프린터서버 데몬 프로그램.
- mysqld : Mysql데이터베이스 데몬 프로그램.
- named  : DNS데몬 프로그램
- nessusd : 보안프로그램인 nessus 데몬프로그램.
- netfs  : 네트워크 파일시스템을 지원하기 위한 데몬프로그램.
- network : 네트워크 설정 제어 프로그램
- nfs  : network file system 데몬 프로그램.
- nfslock : NFS지원을 위한 데몬 프로그램.
- nscd  : Name Service Cache 데몬 프로그램.
- ntalk  : 네트워크상에서 talk로 대화를 할 수 있는 데몬프로그램.
- ntpd  : Network Time Protocol(NTP) 데몬 프로그램.
- pop3s  : SSL을 지원하는 POP3S 데몬 프로그램
- portmap : rpc를 TCP/IP포트로 변환하는 rpc portmapper
- proftpd : ftp데몬의 일종인 proftp데몬 프로그램.
- rarpd  : RARP(Reverse Address Resolution Protocol)데몬 프로그램.
- routed : 라우팅데몬 프로그램
- rstatd : rpc rstatd 데몬 프로그램(kernel statistics server)
- rsync  : 디스크동기화나 네트워크백업을 위한 rsync 데몬 프로그램
- rusersd : rpc rusers 데몬 프로그램
- rwalld : 로그인한 사용자에게 메시지를 보내는 rpc rwalld 데몬
- rwhod  : 서버에 로그링ㄴ한 사용자 확인(rpc rwhod 데몬 프로그램)
- sendmail : sendmail 데몬 프로그램
- smb  ; 삼바(samba)데몬 프로그램
- snmpd  : 네트워크관리 프로토콜인 snmpd 데몬 프로그램.
- sshd  : Secure Shell(SSH) 데몬 프로그램
- swat  : 삼바(samba) 웹관리툴 데몬 프로그램
- syslog : 로그시스템 데몬 프로그램
- telnet : 텔넷(telnet)데몬 프로그램
- webmin : 웹에서 시스템관리를 할 수 있는 webmin 데몬 프로그램.
- xfs  : X윈도우를 위한 폰트(font)서버 데몬
- xinetd : 인터넷수퍼데몬 xinetd 데몬 프로그램.
- ypbind : NIS 바인딩 데몬 프로그램
- yppaswdd : NIS서버/클라이언트간 패스워드갱신 데몬
- ypserv : NIS 서버데몬 프로그램.
* 사운드카드를 감지하고 설정하는 그래픽 인터페이스
# redhat-config-soundcard
# system-config-soundcard
* 사용자와 집단들을 관리하느데 사용되는 그래픽 인터페이스
# redhat-config-users
# system-config-users
* 시스템 모니터 셋팅 프로그램
# sytem-config-display

* 서버관리자의 역할
1. 현재 운영중인 서버의 하드웨어와 운영체제에서 가질 수 있는 최대의 성능을 낼 수 있도록 "시스템을 최적화" 해야합니다.
2. 주기적이고 반복적인 작업들은 쉘프로그램이나 C, Perl 등의 언어를 사용하여 "반복업무의 업무자동화"를 해야합니다.
3. 서버 운영체제와 사용자의 데이터보호를 위하여 "확실한 보안대비"를 구축하고 있어야 합니다.
4. "체계적이고 주기적인 백업정책"을 적용하고 있어야 합니다.
5. 서버 장애발생시에 가장 빠르게 복구가 가능하도록 "빠른 복구정책"을 마련하고 있어야 합니다.
* 리눅스 서버의 종료 및 재시작
- shutdown을 이용한 시스템 종료 및 재시작
# /sbin/shutdown [-t sec] [-rkhncfF] time [warning-messages]
  -k : 실제로 종료하지 않고 모든 사용자에게 경고 메시지만을 보냅니다.
  -r : 시스템 종료후에 재부팅을 합니다.(reboot)
  -h : 시스템을 종료하며 재부팅을 하지 않습니다.(halt)
  -f : 재부팅할 때 파일시스템체ㅡ를 (fsck: file system check)를 하지 않습니다.
  -c : 이전에 내렸던 shutdown명령을 취소합니다.
  time : 몇분 후에 시스템을 종료할 것인가를 지정합니다.
  warning-messages : 사용자에게 보내질 종료 메시지.
# shutdown -h 5 "system rebooting..." -> "system rebooting..." 메시를 뿌리면서 현재부터 5분 후에 시스템을 종료
# shutdown -c -> shutdown 종료명령 취소
# shutdown -r +5 "system rebooting..." -> 5분 후에 시스템을 재시작
# shutdown -r now -> 시스템을 즉시 재부팅
# shutdown -h now -> 시스템을 즉시 종료
- reboot(= shutdown -r now)으로 서버 재시작하기
- poweroff로 서버 종료하기
- halt(= shutdown -h now)로 서버 종료하기
- init을 원하는 실행레벨로 서버 종료 및 재시작
레벨0 : 시스템종료(init 0, 그리고 halt와 shutdown -h now와 동일함)
레벨1 : 싱글모드(관리모드), ㅗㄴ솔로서만 접근가능하며 수퍼유저(root)만이 사용할 수 있다. 시스템관리나 root패스워드를 벼경하고자할 때에 사용함(init 1)
레벨2 : NFS를 지원하지않는 멀티유저 실행모드(init 2)
레벨3 : NFS를 지원하는 멀티유저 실행모드(init 3)
레벨4 : 사용하지않는 실행레벨(사용자가 지정하여 사용할 수 있음)
레벨5 : X윈도우 환경으로 실행된 멀티유저 시행모드(init 5)
레벨6 : 서버 재부팅되는 실행모드(init 6, reboot, shutdown -r now)
* CDROM 마운트
# mount -t iso9660 /dev/hdc /media/cdrom
# mount -t iso9660 /dev/cdrom /mnt/cdrom
# umount /media/cdrom
* 리눅스 복구(부팅)디스켓 제작하기
1. mkbootdis
# mkbootdisk --device /dev/fd0 2.6.9-.667smp
2. dd
# fdformat /dev/fd0H1440
# dd if=/boot/vmlinuz-2.6.9-1.667 of=/dev/fd0
# rdev /dev/fd0 /dev/hda1
* 리눅스 디렉토리 구조
/ : 최상의 디렉토리인 루트디렉토리
/bin : 중요하고 꼭 필요한 명령어가 있는 디렉토리
/boot : 커널(vmlinux등) 시스템 부팅에 관련된 파일을 저장하고 있는 디렉토리.
/dev : 시스템 디바이스(device)파일을 저장하고 있는 디렉토리.
/etc : 패스워드파일등 시스템의 전체 환경설정파일을 저장하고 있는 디렉토리.
/home : 사용자의 ㅎㅁ디렉토리, 대부분 ID와 동일한 이름의 디렉토리를 가짐.
/lib : 프로그램(C, C++등)에 필요한 각종 라이브러리를 저장
/media : 플로피, CD-ROM등 마운트를 위한 디렉토리.(/mnt in redhat9)
/proc : 실행중인 프로세스나 현재 시스템정보를 파일형태로 저장하고 있는 가상디렉토리.
/root : root의 홈디렉토리.
/sbin : 시스템 관리자용 명령어를 저장하고 있는 디렉토리.
/tmp : 일시적인 저장을 위한 디렉토리.
/usr : 각종 어플리케이션등이 설치되어 있는 디렉토리.
/var : 시스템운용 중에 생성되었다가 삭제되는 데이터를 일시적 저장을 위한 디렉토리.
/usr/bin : 일반사용자들이 사용가능한 명령어 파일들이 존재하는 디렉토리.
/usr/X11R6 : X 윈도우 시스템의 루트 디렉토리.
/usr/include : C 프로그램에 필요한 헤드파일(*.h) 디렉토리.
/usr/lib : /lib에 들어가지 않은 라이브러리 디렉토리.
/usr/man : 명령어들의 도움말을 주는 매뉴얼(manual)페이지 디렉토리.
/usr/sbin : /bin에 제외된 명령어와 네트워크관련 명령어가 들어있는 디렉토리.
/usr/src : 프로그램 소스(주로 커널소스)가 저장되는 디렉토리.
/usr/local : MYSQL, Apache등과 같은 어플리케이션들이 설치되는 장소.
/var/log : 각종 로그파일(messages 파일등)이 저장되는 디렉토리.
/var/spool/mail : 각 계정사용자들의 메일파일이 저장되는 디렉토리
/var/spool/lpd : 프린트를 하기 위한 임시 디렉토리(스풀링 디렉토리).
/var/spool/mqueue : 발송을 위한 메일 일시저장 디렉토리
/var/spool/cron : 각 사용자들의 cron 설정파일들이 저장된 디렉토리
/var/spool/at : atd 즉, 예약작업에 간한 파일들이 저장되는 디렉토리
/var/ftp : FTP서비스를 위한 다운로드될 파일들 즉, FTP홈디렉토리
/var/www : RPM으로 설치된 아파치의 홈페이지 파일들이 저장되는 디렉토리 즉, 아파치 홈페이지 디렉토리
/var/named : BIND 즉, DNS에서 사용하는 zone파일들이 저장되는 디렉토리
/etc/mail : sendmail.cf나 access파일등의 sendmail의 설정파일들이 존재하는 디렉토리
/etc/ssh : SSH서비스, 즉 sshd데몬에서 사용하는 각종 설정파일들이 존재하는 디렉토리
/etc/squid : squid 프락시서버의 설정파일들이 저장된 디렉토리
/etc/samba : 삼바관련 설정파일들이 저장된 디렉토리
/etc/skel : 계정사용자 생성시의 초기화파일들이 저장된 디렉토리(useradd에서 사용함)
/etc/rd.d : 부팅레벨별 부팅스크립트파일들이 존재하는 디렉토리
/etc/pam.d : PAM설정 정보파일들이 저장된 디렉토리
/etc/httpd : RPM으로 설치된 아파치 설정파일(httpd.conf등)들이 저장된 디렉토리
* 리눅스 부팅과정
1. 전원스위치 ON
2. BIOS프로그램 실행
3. ROM-BIOS의 POST(자체진단기능) 수행
4. ROM-BIOS가 부트로더(GRUB)를 불러들임
5. ROM-BIOS의 실행종료와 GRUB의 실행시작
   검색된 부팅매체의 0번 섹터(대부분 MBR 이라고 부름)에서 Boot Program을 읽어들여 메모리로 적재(로드, load)합니다.
6. GRUB의 실행초기 단계
   GRUB의 메뉴, 입력대기상태
7. GRUB에 의한 부팅메뉴 선택
   여기서 선택한 부팅메뉴로 GRUB은 부팅을 계속해 나갑니다.
   GRUB 설정 파일(/boot/grub/grub.conf, /boot/grub/menu.lst)
8. GRUB이 커널이미지를 메모리로 적재와 swapper 호출
   GRUB은 입력된 커널이미지를 메모리로 불러들입니다.(적재, load) 메모리로 load된 커널은 swapper를 호출합니다.
9. swapper의 장치 드라이브 초기화
   GRUB에 의해 swapper라는 pid 0번인 프로세스가 실행이 되며 swapper는 각 장치 드라이브들을 초기화 합니다.
10. swapper의 init프로세스 실행
    swapper라는 프로세스튼 다시 pid 1인 init프로세스(/sbin/init)를 실행하게 됩니다. 즉, swapper가 init프로세스를 실행시키고 본연의 swapper로서의 기능을 수행하기 시작합니다.
11. init프로세스의 /etc/inittab파일 호출
    init프로세스는 /etc/inittab파일을 읽어들입니다. 특, init프로세스는 제일먼저 /etc/inittab 파일을 읽어서 init프로세스가 무엇을 해야할 것이가를 결정하게 됩니다.
    /etc/inittab파일내의 각 행의 포맷
    name: level-number:options:process -options
    세번째 항목인 options 에 올 수 있는 것들
    - respawn  : 프로세스가 종료될때마다 재실행됩니다.
    - wait  : 지정된 프로세스가 실행되면 init은 프로세스가 종료될 때까지 기다린 후에 다음 작업으로 넘가도록 하는 옵션입니다.
    - once  : 해당 프로세스를 한번만 실행되도록 하는 옵션입니다.
    - boot  : 시스템이 부팅되는 동안 해당 프로세스가 실행되며, init은 실행레벨필드를 무시합니다.
    - bootwait  : 시스템이 부팅되는 동안 해당 프로세스가 실행되며, init은 프로세스가 종료될 때까지 기다립니다.
    - off  : 아무런 동작도 발생하지 않도록 하는 옵션입니다.
    - ondemand  : 실행레벨이 1, 2, 3인 경우에만 ㅇ용합니다. init은 이 세개의 실행레벨과 함께 호울될 때만 프로세스가 작동합니다. 잘 사용되지 않는 옵션입니다.
    - initdefault : 시스템이 부팅되면서 어떤 실행레벨로 부팅을 할 것인가를 결정하게 하는 옵션입니다. 즉, 시스템의 실행레벨을 결정하는 옵션입니다.
    - sysinit  : 시스템이 부티오디는 동안 한번만 프로세스가 실행하는 옵션이니다. sysinit은 boot나 bootwait보다 우선권을 가집니다.
    - powerwait  : init은 SIGPWR신호를 받는 경우에만 프로세스가 가동됩니다.
    - powerfail  : powerwait과 같지만, init은 프로세스가 돤력도ㅚㄹ 때까지 기다리지 않습니다.
    - powerokwait : init가 SIGPWR신호를 받고 /etc/powerstatus라는 텍스트 파일에 OK라는 문자열이 있을 때 프로세스가 실행됩니다.
    - ctrlaltdel : 이 옵션은 init프로세스가 SIGINT신호를 받았을 때에 싱행되록 합니다.
    - kbrequest  : 이 옵션은 init프로세스가 키보드관리자로부터 keyboardsignal을 받았을 때에 해당프로세스를 실행되도록 합니다.
12. init에 의해 /etc/rc.d/rc.sysinit 실행
    /etc/rc.d/rc.sysinit 파일은 실행레벨가는 무관하게 부팅과 함께 일회만 실행이 됩니다.
    /etc/rc.d/rc.sysinit 파일의 역할
13. init에 의해 각 부팅 레벨별 스크립트 실행
    앞 단계에서 결정된 실행레벨에 따라서 설정되어 있는 모든 프로세스들을 실행하게 됩니다.
14. init에 의해 /etc/rc.d/rc.local 파일 실행
15. init에 의해 /sbin/update 실행
16. init에 의해 CRTL+ALT+DEL키 작동 설정
17. init에 의해 전원관리 설정
18. init에 의해 6개의 가상콘솔 실행
    콘솔 로그인을 위해 /sbin/mingetty를 실행합니다.
19. init에 의해 콘솔(첫번째 가상콘솔)로그인 프롬프트 실행됨
* 사용자 관리
1. 사용자 생성
# useradd bible
# passwd bible
# grep bible /etc/passwd
bible:x:500:500:/home/bible:/bin/bash
# grep bible /etc/shadow
bible:$akdsjflkjalkdjfakdjfa;dkjfqpijfa:12784:0:99999:7:::
# grep bible /etc/group
bible:x:500:
# ls /home/bible
# ls -l /var/spool/mail/bible
-rw-rw---- 1 bible mail 0 Jan 1 13:46 bible
# useradd -d /user/bible2 -u 1000 -s /bin/sh bible2
# grep bible2 /etc/passwd
bible2:x:1000:1000::/user/bible2:/bin/sh
# grep bible2 /etc/shadow
bible2:!!:12784:0:99999:7:::
# grep bible2 /etc/group
bible2:x:1000
# ls /user/bible2
# useradd -d /user/bible3 -u 2000 -s /bin/csh -c parkSungSoo -e 2011-12-3 -p 88888888 bible3
  -d /user/bible3 : 홈디렉토리 위치를 /user/bible3으로 지정함
  -u 2000  : UID를 2000으로 지정함
  -s /bin/csh  : bible3 사용자가 기본으로 사용할 쉘종류를 C쉘로 지정함
  -c ParkSungSoo : 계정사용자의 간단한 코멘트문(주로 이름이나 사무실명등을 지정함)
  -e 2011-12-31  : bible3 사용자의 계정사용 종료일자를 2011년 12월 31일로 지정함
  -p 88888888  : bible3사용자의 기본 패스워드를 88888888로 지정함
  bible3  : 생성할 계정명(bible3)을 지정함
# grep bible3 /etc/passwd
bible3:x:2000:2000:ParkSungSoo:/user/bible3:/bin/csh
# grep bible2 /etc/shadow
bible2:88888888:12784:0:99999:7::15339:
# grep bible2 /etc/group
bible3:x:2000
# ls /user/bible3
- useradd 명령이 참조하는 파일들
  a. /etc/default/useradd 파일
     이 파일은 useradd 명령어로 새로운 사용자를 생성할 때에 기본적으로 사용할 홈디렉토리와 사용할 쉘종류, 종료일자, 기본소속그룹, 홈디렉토리에 복사될 초기화 파일들의 위치등을 정의하고 있는 파일입니다.
     GROUP=100
     HOME=/home
     INACTIVE=-1
     EXPIRE=   # EXPIRE="2010-10-30"
     SHELL=/bin/bash
     SKEL=/etc/skel
  b. /etc/login.defs
     MAIL_DIR  각 계정사용자들의 메일파일이 저장될 위치를 지정
     PASS_MAX_DAYS 계정사용자들이 패스워드를 변경하지 않고 동일한 패스워드를 지속적으로 사용할 수 있는 최대일자
     PASS_MIN_DAYS 패스워드 변경없이 사용할 수 있는 최소일자
     PASS_MIN_LEN 각 계정사용자들이 패스워드문자로 지정할 수 있는 최소바이트수(영문자수)
     PASS_WARN_AGE 패스워드 종료일자가 다가오기 몇일 정부터 패스워드 사용불가에 대한 안내메시지를 알려줄 것인가를 지정한 것이다.
     UID_MIN  일반사용자의 UID번호를 할당할 때에 자동 할당할 최소 UID번호를 지정
     UID_MAX  리눅스 서버에서 생성할 수 있는 UID의 최대값
     GID_MIN  새로 생성되는 그룹의 GID 시작번호
     GID_MAX  새로 생성되는 그룹에서 지정할 수 있는 최대 GID번호
     CREATE_HOME 새로 생성되는 계정사용자의 홈디렉토리를 생성할 것인가를 결정하는 값
  c. /etc/skel
     사용자를 생성할 때, 이 디렉토리의 모든 파일들이 사용자의 홈디렉토리로 복사된다.
2. 사용자 삭제
# userdel [-r] 사용자명
# userdel bible2
# userdel -r bible3
3. 사용자 정보변경
# usermod -d /usr/sspark5 sspark5 -> 홈디렉토리 변경
# usermod -e 2006-12-31 sspark5 -> 계정사용종료일 설정
# usermod -s /bin/csh sspark5 -> 기본사용쉘 변경
# usermod -u 508 sspark5 -> UID 변경
# usermod -l bible5 -p 12345678 sspark5 -> 아이디를 bible5로 패스워드를 12345678로 변경
4. 사용자를 일시적으로 로그인하지 못하게 하기
# grep test00 /etc/shadow
# passwd -l test00
test00:$1$tAeIn2Ca$mLxnIr.n4VO/4jqa85F/8/:13229:0:99999:7:::
# grep test00 /etc/shadow
test00:!!$1$tAeIn2Ca$mLxnIr.n4VO/4jqa85F/8/:13229:0:99999:7:::
# passwd -u test00
# grep test00 /etc/shadow
test00:$1$tAeIn2Ca$mLxnIr.n4VO/4jqa85F/8/:13229:0:99999:7:::
5. 모든 일반사용자들의 일시적인 서버접속 금지방법
# touch /etc/nologin -> 이 파일이 있으면 root 를 제외한 일반사용자는 로그인할 수 없다.
* passwd : 사용자 패스워드 관리
# passwd [-k] [-l] [-u [-f]] [-d] [-S] [사용자 ID]
# passwd widemail -> widemail 사용자 패스워드 변경
# passwd -S widemail -> widemail의 패스워드를 MD5로 암호화한다.
# passwd -l widemail -> widemail 사용자의 패스워드에 lock를 건다. widemail 사용자는 로그인할 수 없다.
# passwd -u widemail -> widemail 사용자에게 걸었던 lock을 해제한다.
# passwd -d widemail -> widemail 사용자자의 패스워드를 삭제한다. widemail 사용자는 어떤 패스워드로도 로그인이 가능하다.
* 그룹 관리
1. 그룹생성
# groupadd [-g GID] [-o] [-r] [-f] 새로생성할그룹명
# groupadd chongmu
# tail -1 /etc/group
chongmu:x:505:
# groupadd -g 1000 youngup
# tail -1 /etc/group
youngup:x:1000:
# groupadd -r sysadmin -> -r 옵션으로 시스템여역의 GID를 할당받는다.
# tail -1 /etc/group
sysadmin:x:11:
2. 그룹삭제
# groupdel sysadmin
* 로그인 메시지 관리
- /etc/issue  : 콘솔(console)접속 시도시(접속완료전)에 보여줄 메시지파일
- /etc/issue.net : 원격지에서 접속 시도시(접속완료전)에 보여줄 메시지파일
- /etc/motd  : ID, 패스워드로 인증을 받은 후 즉, 접속완료후에 보여줄 메시지파일
* 프롬프트 변경
쉘프롬프트의 모양을 결정하는 것은 프롬프트의 변수인 PS1이라는 변수에 값을 변경함으로써 가능합니다.
# echo $PS1
[\u@\h \W]\$
PS1쉘변수의 값으로 사용할 수 있는 기호들
\t 24시간제로 현재시간을 나타냄. 표시형식은 시:분:초, 즉 "HH:MM:SS"의 형식임
\T 12시간제로 현재시간을 "HH:MM:SS"형식으로 표시함
\@ 12시간제로 현재시간을 "오전/오후"형식으로 표시함
\d 현재 날짜를 나타냄. 표시형식은 "요일 월 일"의 문자로 표시됨
\s 현재 사용중인 쉘의 이름을 표시함(C쉘이면 /bin/csh, bash쉘이면 /bin/bash임)
\w 현재디렉토리의 전체 절대경로를 모두 표시함
\W 현재 디렉토리의 전체 절대경로명중 마지막 디렉토리명만을 표시함. 즉, 현재 디렉토리명만을 표시함.
\u 사용자명을 표시함
\h 서버의 호스트명을 표시함.(예: http://www.superuer.co.kr/에서 www부분)
\H 서버의 도메인명을 표시함.(예: http://www.superuser.co.kr/에서 superuser.co.kr부분)
\# 접속한 순간부터 사용한 명령어의 번호를 1번부터 차례대로 표시함. 즉, 명령어를 사용한 횟수를 표시하기 위함이 목적임.
\! 사용한 명령어의 history번호를 표시함
\$ 현재 사용자가 root(UID가 0이면)이면 #을 표시하고 아니면 $를 표시함
\\ "\"문자 자체를 표시함
\a ASCII 종소리 무자(07)
\E ASCII의 escape문자(033)
\n 개행문자(줄바꾸기)
\v 사용중인 bash의 버전
\V 사용중인 bash의 배포, 번전+패치수준으로 버전을 상세히 표시함.
\r Carrage return
\nnn 8진수 nnn에 해당하는 문자
* 시간 관리
1. clock : CMOS의 시간을 설정
-u : CMOS의 시각을 국제시각으로 조정한다.
-r : CMOS의 시각을 출력한다.
-w : 리눅스시스템 시각으로 CMOS시각을 조정한다.
-s : CMOS의 시각으로 리눅스시스템시각을 조정한다.
-a : CMOS의 시각으로 리눅스시스템시각으로 조정하고 다시 CMOS에 조정한다.
# clock -r -> CMOS 시간을 읽기
Thu 23 Mar 2006 12:56:56 AM KST  -0.918420 seconds
# clock -w -> 리눅스의 시스템시간으로 CMOS 시간 설정
# clock -s -> CMOS 시간으로 리눅스의 시스템시간을 설정
2. date
   - date 로 시간설정
# date MMDDhhmmYY -> 시간 설정
MM 월
DD 월 중 일
hh 시
mm 분
CC 연도의 처음 두 숫자(선택적)
YY 연도의 나중 두 숫자(선택적)
ss 초(선택적)
# date 020301012005
# date
Thu Feb 3 0:01:03 KST 2005
   - date 로 시간츨력
     a. 시간 필드:
       %H     시 (00..23)
       %I     시 (01..12)
       %k     시 ( 0..23)
       %l     시 ( 1..12)
       %M     분 (00..59)
       %p     로케일의 AM 또는 PM
       %r     시간, 12-시간제 (hh:mm:ss [AP]M)
       %s     1970-01-01 00:00:00 UTC (비표준 확장기능)로 부터 경과된 초
       %S     초 (00..61)
       %T     시간, 24-시간 (hh:mm:ss)
       %X     로케일에서 정의한 시간 표현(%H:%M:%S)
       %Z     시간대 (에, EDT), 시간대를 결정할 수 없는 때는 아무 값도 출력하지 않는다.
     b. 날짜 필드:
       %a     로케일의 약식 요일 이름 (Sun..Sat)
       %A     로케일의 완전한 요일 이름, 가변 길이 (Sunday..Saturday)
       %b     로케일의 약식 월 이름 (Jan..Dec)
       %B     로케일의 완전한 월 이름, 가변 길이 (January..December)
       %c     로케일의 날짜와 시간 (Sat Nov 04 12:02:33 EST 1989)
       %d     월 중 일 (01..31)
       %D     날짜 (mm/dd/yy)
       %h     %b 와 동일
       %j     연 중 일 (001..366)
       %m     월 (01..12)
       %U     연 중 주 번호, 일요일을 주의 첫번째 날로 생각 (00..53)
       %w     요일 번호 (0..6), 0 은 일요일
       %W     연 중 주 번호, 월요일을 주의 첫번째 날로 생각 (00..53)
       %x     로케일의 날짜 표현식 (mm/dd/yy)
       %y     연 중 일의 마지막 두 숫자 (00..99)
       %Y     연 (1970...)
3. rdate : 운격타임서버로부터 날짜시간정보 구하기
# rdate [-p] [-s] [-u] -[l] [타임서버]
# rdate -p time.bora.net
rdate: [time.bora.net]  Thu Mar 23 01:06:43 2006
# rdate -s time.bora.net
# rdate -s time.kriss.re.kr
# crontab -l | grep rdate
00 01 * * * /usr/bin/rdate -s time.bora.net && /sbin/clock -w
* 리눅스의 커널버전 및 배포판버전 확인
# uname -a
Linux mail.jpd.co.kr 2.6.15-1.1833_FC4 #1 Wed Mar 1 23:41:37 EST 2006 i686 i686 i386 GNU/Linux
# uname -r
2.6.15-1.1833_FC4
# cat /etc/redhat-release
Fedora Core release 4 (Stentz)
# cat /proc/version
Linux version 2.6.15-1.1833_FC4 (bhcompile@hs20-bc1-1.build.redhat.com) (gcc version 4.0.2 20051125 (Red Hat 4.0.2-8)) #1 Wed Mar 1 23:41:37 EST 2006
# cat /proc/sys/kernel/osrelease
2.6.15-1.1833_FC4
* USB 장치 사용
1. USB장치를 리눅스서버에 꼽아두십시오.
2. USB장치를 마운트할 마운트포인트를 생성한다.
# mkdir /media/usb
3. modprobe명령어로 ide-scsi모듈을 로드한다.
# modprobe ide-scsi
4. 리눅스에서 대부분 USB장치는 /dev/sda 또는 /dev/sdb 또는 /dev/sdc등의 장치명을 사용하는데 현재 리눅스서버에서 사용되고 있지 않은 장치명을 USB장치명으로 사용할수 있다.
   어떤 장치명에 할당되었는가를 확인하기 위하여 다음과 같이 "fdisk -l"을 실행해 본다.
# fdisk -l
Disk /dev/sdc: 32M, 32768000 bytes
2 heads ...
5. USB장치가 /dev/sdc장치를 사용하는 것을 확인했으므로, 해당 장치를 마운트한다.
# mount -t vfat /dev/sdc /media/usb
6. 사용이 끝나면 마운트를 해제한다.
# umount /media/usb
* rename 명령어
# ls
test1  test2  test3  test4  test5
# rename test test0 test?
  - test : 변경전 파일패턴
  - test0 : 변경후 파일패턴
  - test? : 적용대상파일들, 여기서 ?는 임의의 문자를 의미한다.
# ls
test01  test02  test03  test04  test05
# rename test0 test test??
# ls
test1  test2  test3  test4  test5
* find 명령어
사용형식: find [찾을 디렉토리경로] [찾기옵션] [찾은후 수행할 작업]
[찾을 디렉토리경로]
.   : 현재 디렉토리 이하를 검색대상으로 한다.
/   : 루트디렉토리(파일시스템전체)이하를 대상으로 한다.
~ID : 지정된ID의 홈대렉토리이하를 대상으로 한다.
[찾기옵션]
-empty  : 비어있는 파일을 찾는다.
-uid UID : 지정된 UID를 갖는 파일을 찾는다.
-gid GID : 지정된 GID를 갖는 파일을 찾는다.
-group 그룹명 : 지정된 group을 가진 파일을 찾는다.
-name  : 지정된 형식의 패턴을 가지는 파일을 찾는다.
-newer  : 지정된 파일 이후에 생성된 파일을 찾는다.
-perm  : 지정된 퍼미션을 가진 파일을 찾는다.
-used 일자수 : 최근 n일 이후에 변경된 파일을 찾는다.
-user  : 지정된 파일을 소유하고 있는 소유자의 모든 파일을 찾는다.
[찾은후 수행할 작업]
-exec "수행명령어" : 검색된 파일을 대상으로 "수행명령어"(쉘명령어)를 실행한다.
1. 특정 사용자의 ID소유로된 모든 파일 찾기
# find / -user test01 -print
2. 특정 사용자의 홈디렉토리 내에서  특정 파일 찾기
# find /home/test01 -name *.html -print
# find ~test01 -name *.html -print
3. 시스템내의 특정파일들을 검색하여 자동삭제하는 방법
# find ~test01 -name *.bak -exec rm -f {} \;
4. 지정한 소유자의 모든 파일을 찾아서 확인하기
# find / -user test01 -exec ls -l {} \;
5. 서버내의 불필요한 파일들 모두 정리(삭제)하기
# find / -name access_log -exec rm -f {} \;
6. 특정용량 이상되는 파일들 모두 찾기(용량단위로 파일검색)
# find /usr -size +10000k -exec ls -l {} \;
7. 특정 퍼미션을 가지고 있는 파일들 모두 찾기
# find / -perm 4755 -exec ls -l {} \;
8. 특정디렉토리내에 존재하는 모든 디렉토리 목록만 확인하기
# find ~test01 -type d -print
9. 서버내에 존재하는 모든 링크파일 검사하기
# find / -type l -exec ls -l {} \;
10. 쓰기 권한이 있는 파일 및 디렉토리 찾기
# find / -type f \( -perm -2 -o -perm -20 \) -exec ls -lg {} \;
# find / -type d \( -perm -2 -o -perm -20 \) -exec ls -ldg {} \;
11. 특정문자를 포함하는 파일찾기와 그 문자가 속한 행 찾기
# find ~test01 type f -exec egrep -i "doc" /dev/null {} \;
* 하드디스크 추가
1. 현재 사용중인 하드디스크 확인(추가전)
# cat /etc/fstab
LABEL=/                 /                       ext3    defaults        1 1
LABEL=/boot             /boot                   ext3    defaults        1 2
none                    /dev/pts                devpts  gid=5,mode=620  0 0
LABEL=/home             /home                   ext3    defaults        1 2
LABEL=/jms              /jms                    ext3    defaults        1 2
none                    /proc                   proc    defaults        0 0
none                    /dev/shm                tmpfs   defaults        0 0
LABEL=/tmp              /tmp                    ext3    defaults        1 2
/dev/sda3               swap                    swap    defaults        0 0
/dev/cdrom              /mnt/cdrom              udf,iso9660 noauto,owner,kudzu,ro 0 0
/dev/fd0                /mnt/floppy             auto    noauto,owner,kudzu 0 0
# df -k
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda2              5036316    884644   3895840  19% /
/dev/sda1               101089     14577     81293  16% /boot
/dev/sda6              1004024     66172    886848   7% /home
/dev/sda7              9345096   3285944   5584436  38% /jms
none                    127648         0    127648   0% /dev/shm
/dev/sda5              1004024     16436    936584   2% /tmp
# mount
/dev/sda2 on / type ext3 (rw)
none on /proc type proc (rw)
usbdevfs on /proc/bus/usb type usbdevfs (rw)
/dev/sda1 on /boot type ext3 (rw)
none on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sda6 on /home type ext3 (rw)
/dev/sda7 on /jms type ext3 (rw)
none on /dev/shm type tmpfs (rw)
/dev/sda5 on /tmp type ext3 (rw)
2. 추가할 HDD를 HDD확장슬롯에 장착한다.
3. 새로운 HDD를 장착한 후에 서버를 재부팅한다.
4. 재부팅이 끝나고 나면 dmesg란 명령어를 사용하여 장착된 SCSI HDD의 정보를 확인한다.
SCSI device sdb: 71687340 512-byte hdwr sectors (36704 MB)
5. SCSI ID를 확인했다면 이제 fdisk를 실행시켜 파티션을 설정해 준다.
6. 작성된 파티션을 사용하기 위해 파일시스템을 생성한다.
# mke2fs /dev/sdb1 -> for ext2 filesystem
# mke2fs /dev/sdb1 -j -L /data -> for ext3 filesystem
7. 준비된 파티션을 마운트를 시키기 위해 디렉토리를 작성하고 마운트를 시킨다.
# mkdir /data
# mount -t ext2 /dev/sdb1 /data -> for ext2 filesystem
# mount -t ext3 /dev/sdb1 /data -> for ext3 filesystem
8. 부팅시 자동마운트 되게 하기 위한 파일시스템테이블 수정
LABEL=/                 /                       ext3    defaults        1 1
LABEL=/boot             /boot                   ext3    defaults        1 2
none                    /dev/pts                devpts  gid=5,mode=620  0 0
LABEL=/home             /home                   ext3    defaults        1 2
LABEL=/jms              /jms                    ext3    defaults        1 2
none                    /proc                   proc    defaults        0 0
none                    /dev/shm                tmpfs   defaults        0 0
LABEL=/tmp              /tmp                    ext3    defaults        1 2
/dev/sda3               swap                    swap    defaults        0 0
/dev/cdrom              /mnt/cdrom              udf,iso9660 noauto,owner,kudzu,ro 0 0
/dev/fd0                /mnt/floppy             auto    noauto,owner,kudzu 0 0
LABEL=/data             /data                   ext3    defaults        1 2
9. 파일시스템 생성 최종확인
# df -k
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda2              5036316    884644   3895840  19% /
/dev/sda1               101089     14577     81293  16% /boot
/dev/sdb1             35278540     32828  33453664   1% /data
/dev/sda6              1004024     66172    886848   7% /home
/dev/sda7              9345096   3285944   5584436  38% /jms
none                    127648         0    127648   0% /dev/shm
/dev/sda5              1004024     16436    936584   2% /tmp
* 서버 메모리상태 점검하기
# free
             total       used       free     shared    buffers     cached
Mem:        255300     178908      76392          0      17696      20380
-/+ buffers/cache:     140832     114468
Swap:      1020116     230444     789672
- Mem행은 시스템의 물리적인 메모리에 대한 사용량을 각 필드로 표시한 것이다.
  total은 전체 메모리의 용량
  used는 현재 시스템에서 사용중인 메모리의 용량
  free는 현재 시스템에서 사용중이지 않은 메모리의 용량
  shared는 현재 시스템에서 공유한 메모리의 용량
  buffers는 현재 시스템에서 버퍼링(buffering)된 메모리의 용량
  cached는 현재 시스템에서 캐싱(caching)된 메모리의 용량
- -/+ buffers/cache 는 현재 캐시메모리에서 버퍼링된 사용량을 표시한다.
- Swap메모리는 스왑메모리의 용량이다.
  total은 시스템의 전체 Swap메모리의 용량
  used는 전체 스왑메모리에서 현재 사용중인 스왑메모리의 용량
  free는 전체 스왑메모리에서 사용되지 않고 남았는 메모리의 용량
* ping 응답 설정/해제
# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all -> ping에 응답하지 않게 설정
# echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all -> ping에 응답하도록 설정
* Quota 설정
quota와 관련하여 알아두셔야하는 것은 다음과 같습니다.
- 커널쿼타지원여부 : 커널(kernel)에서 해당 파일시스템의 quota지원이 되는가?
- quota   : 설정된 각 사용자(그룹)의 quota를 확인한다.
- edquota  : 각 사용자(그룹)의 디스크 quota를 설정한다.
- quotaon  : 시스템에서 quota를 가동한다.
- quotaoff  : 시스템에서 quota를 중지한다.
- quotacheck  : 시스템에서 quota 상황을 확인한다.
- repquota  : 사용자들의 quota설정내역을 확인한다.
1. quota 적용을 위한 피일시스템 수정사항
quota를 적용할 파티션의 파일시스템 마운트시에 usrquota라는 속성을 넣어서 마운트한다.
# grep usrquota /etc/fstab
LABEL=/home  /home  ext3 defaults,usrquota 1 2
2. 시스템커널에서 quota지원여부 확인하기
/var/log/messages파일과 dmesg명령어로 quota관련 내용을 확인한다.
# dmesg | grep quota
VFS: Disk quotas dquot_6.5.1
3. 특정 사용자의 quota설정 내역을 확인하는 방법
# quota -v dhan
Disk quotas for user dhan (uid 500):
Filesystem blocks quota limit grace files quota limit grace
/dev/sda6 23680 0 50000 1887 0 0
quota에서 "Soft Limit"이란 일반적인 용량제한범위를 의미하는 것으로 여기서 설정된 용량을
넘기게 되면 일단은 유예기간(grace period)내에서는 허용은 하지만 경고를 받게 됩니다.
quota에서 "Hard Limit"이란 절대적으로 넘을 수 없는 용량제한을 의미합니다.
사용자에게 허용된 용량의 10%정도를 추갈 저장할 수 있도록 설정할 수 있다.
quota에서 "Grace Period"란 유예기간으로서 해당 사용자의 용량이 "Soft Limit"을 넘기는
시점부터 적용되어 용량초과를 허용할 시간을 의미합니다.
4. 일반사용자의 자기자신의 quota설정내역 확인하는 방법
# quota -u dhan
Disk quotas for user dhan (uid 500):
Filesystem blocks quota limit grace files quota limit grace
/dev/sda6 23680 0 50000 1887 0 0
5. 특정 그룹의 디스크용량 설정내용 확인하기
# quota -g dhan
Disk quotas for group dhan (gid 500): none
6. 디스크사용량 제한 설정하는 edquota
# edquota -u dhan
설정한 후 quota를 적용할 파일시스템에서 aquota.user 파일을 생성한다.
# cd /home
# touch aquota.user
# chmod 640 aquota.user
7. quota가동과 중지
# quotaon -avug
-a : quota옵션이 들어가 있는 파일시스템은 자동으로 가동한다.
-v : quota가 가동된 각 파일시스템들의 메시지를 출력한다.
-u : 기본으로 적용되는 것으로 각 개별 사용자들의 quota설정을 읽어 적용한다.
-g : 각 그룹별 quota설정을 읽어 적용한다.
# quotaoff -aug
8. quota가동여부 및 상태 확인
# quotaon -a -p
9. quota가 설저오딘 파티션의 quota설정 및 용량제한 내역 확인
# repquota -av
-a : 보고할 파일시스템 대상을 지정하는 것으로 /etc/fstab에서 usrquota, grpquota가 설정된 모든 파일시스템을 대상으로 한다는 옵션이다.
-v : 사용량이 없는 사용자들의 보고도 포함하게 한다.
-g : 그룹quota에 대한 보고를 한다.
-u : 사용자의 qutoa에 대한 보고를 한다.(기본값)
* 동종 프로세스 모두 죽이기
# ps -ef | grep httpd | awk '{ print $2 }' | xargs kill -9
# killall httpd
* whowatc 유틸리티 : 현재 접속한 사용자 실시간 감시법
* idled 유틸리티 : 일정시간 미사용시 강제 로그아웃시키기
* 리눅스 커널에 이더넷카드 인식시키기
리눅스 커널에 이더넷카드를 인식하도록 하려면 다음과 같은 사항들을 확인해야합니다.
- 이더넷카드의 모듈이름
- 이더넷카드의 I/O(입출력)주소, 일반적으로 0x300을 사용함.
- 이더넷카드의 IRQ번호
- DMA를 사용하는 카드라면 DMA번호
- modprobe, insmod, lsmod, rmmod명령어 사용법
리눅스에서 커널모듈들은 모두 /lib/modules/<커널버전>/kernel 이라는
추천
0
  • 복사

댓글 13개

꾸준히 자료를 모으고있지만.. 심호흡 한번으로는 읽기 힘든분량이네요..
시간을 두고 천천히 읽어봐야겠네요..감사합니다.. ^^
심호흡하고 마우스 스크롤 열나게 돌리니 [펌] http://gilgal.co.kr/231 <= 이 문구가 보입니다.
역시 심호흡 하고 돌리길 잘 했습니다. ㅋㅋㅋㅋ 내용은 나중에 읽어 볼께요.
© SIRSOFT
현재 페이지 제일 처음으로