본문 바로가기

Web/LINUX

리눅스 서버관리 요약

반응형

출처 : http://lanplaza.net

* 문서
1. 패스워드 관리장부
2. 서버자원관리부
3. 백업관리장부
4. 서버작업이력부
5. 서버점검이력부

* 절대로 서버를 믿어서는 안된다. 여러분 자신을 믿으셔야 합니다.

* 리눅스 배포판
www.redhat.com
www.debian.org
www.slackware.com
www.linux-mandrake.com
www.wowlinux.com
www.alzzalinux.com
www.suse.com
www.haansoftlinux.com
www.hancom.com
www.sulinux.net


* 한글 사용
# 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 서버의 호스트명을 표시함.(예: www.superuer.co.kr에서 www부분)
\H 서버의 도메인명을 표시함.(예: 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 이라는 디렉토리에 위치하고 있다.
/lib/modules/<커널버전>/kernel/drivers/net이라는 디렉토리에는 네트워크 관련 커널모듈들이 있다.
레드햇 리눅스에서는 /boot/modules-info라는 파일내에 리눅스 커널모듈에 관한 정보를 저장하고 있다.
이렇게 확인 모듈을 커널에 올린다.
# modprobe 3c509 io=0x300 irq=13
# insmod 3c509 io=0x300 irq=13
대부분의 PCI카드는 io옵션과 irq옵션은 자동검색되므로 생략가능하다.
단 NE2000계열의 네트워크드라이브를 사용한다면 io옵션과 irq옵션을 지정해 주어야 한다.
그리고, io포트와 irq번호는 현재 사용중이 아닌 값으로 지정한다.
사용중인 io포트번호 확인
# cat /proc/ioports
사용중이 irq번호 확인
# cat /proc/interrupts
서버 재부팅후에 지속적으로 적용하기 위해서는 /etc/modules.conf파일에 (또는 /etc/modprobe.conf 파일)
관련 모듈 설정을 입력해 주어야 한다.
# cat /etc/modules.conf
alias eth0 e100
alias scsi_hostadapter aic7xxx
alias usb-controller usb-uhci

* 하드디스크 배드블록 검사
# badblocks -v /dev/sdb5
# badblocks -v /dev/sdb5 -o badlocks.txt
# badblocks /dev/fd0H1440 1440
- 디스크의 배드블록 마크하기
# e2fsck -cv /dev/sdb5

* 하드디스크 속도점검
- 버퍼링되어 있지않은 데이터의 디스크 ACCESS 속도 검사
# hdparm -t /dev/hda
- 버퍼링되어 있는 데이터의 디스크 ACCESS속도 검사
# hdparm -T /dev/hda
- CD-ROM 드라이브 읽는속도 검사
# hdparm -t /dev/cdrom

* fdisk : 디스크 파티션 작업 프로그램
현재 모든 디스크의 파티션설정현황 파악하기
# fdisk -l
특정 파티션을 대상으로 한 fdisk 시작과 종료
# fdisk /dev/sdb

The number of cylinders for this disk is set to 4462.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): m
Command action
a toggle a bootable flag -> 부팅파티션을 설정할 수 있음.
b edit bsd disklabel -> BSD로 디스크라벨 설정
c toggle the dos compatibility flag -> DOS호환가능한 플래그 설정
d delete a partition -> 파티션을 삭제할 수 있음.
l list known partition types -> 설저가능한 파티션 타입을 보여줌.
m print this menu -> 파티션 설정도움말을 보여줌.
n add a new partition -> 새로운 파티션을 생성할 수 있음.
o create a new empty DOS partition table -> 새로운 도스파티션 테이블을 생성함.
p print the partition table -> 현재 설정된 파티션정보를 보여줌.
q quit without saving changes -> 설정된 정보를 저장하지 않고 fdisk를 종료.
s create a new empty Sun disklabel -> SUN 디스크라벨을 생성함.
t change a partition's system id -> 파티션 타입을 변경할 수 있음.
u change display/entry units -> 유닛(UNITS)정보를 열람하거나 변경할 수 있음.
v verify the partition table -> 지정된 파티션을 검사함.
w write table to disk and exit -> 현재까지 설정한 파티션정보를 저장하고 fdisk 종료.
x extra functionality (experts only) -> 파티션 전문가 모드로 들어감. 실린터수나 헤드수 그리고 트랙당 섹터수를 변경할 수 있음.

Command (m for help): q

* 리눅스 파일시스템 포맷(생성)하기
- mke2fs로 파일시스템을 생성하면 다음과 같은 세부항목들이 파일시스템내에 생성됩니다.
1. Block size 크기
2. Fragment size 크기
3. indoe의 수
4. 수퍼유저가 사용할 block의 수(전체 block의 5%를 차지함)
5. 첫 번째 데이터블록
6. Block group의 수
7. 그룹당 블록수
8. 그룹당 fragment의 수
9. 그룹당 inode의 수
# mke2fs [-c|-l 파일명] [-b 블로그기] [-f 프레그먼트ㅡ기] [-i 노드당바이트수] [-m 예약블록퍼센트] [-q] [-v] [-F] [-S] 장치명 [블록갯수]
# mke2fs -t ext2 /dev/hdb1 -> /dev/hdb1을 ext2 타입의 파일시스템으로 생성
# mke2fs -j /dv/hdb1 -> /dev/hdb1을 ext3 타입의 파일시스템으로 생성
# mke2fs -j -b 4096 /dev/hdb1 -> /dev/hdb1에 대해서 ext3타입의 파일시스템을 생성하면서 블록의 크기를 4069byte로 생성
# mke2fs -c /dev/hdb1 -> /dev/hdb1에 대한 배드블록을 점검한 후에 ext2파일시스템을 생성
# mke2fs -i 4096 /dev/hdb1 -> 아이노드 당 바이트수를 지정하여 파일시스템을 생성. -i옵션으로 주어지는 값은 최소 1024이상이다. 기본값은 4096
# mke2fs -j -m 20 /dev/hdb1 -> ext3파일시스템(-j)을 생성하면서 수퍼유저(root)의 예비블록으로 20%를 남겨둔다.
# mke2fs /dev/sdb1 -j -L /data
- 디스크 추가 장착시 작업 순서
1. 디스크 장착
2. fdisk로 파티션 생성
3. mkfs or mk2fs로 파일시스템 생성
4. mount 작업
5. 부팅시 자동마운트를 위하여 /etc/fstab에 등록
- mkfs로 리눅스 파일시스템 생성
# mkfs [-V] [-t 파일시스템타입] [파일시스템옵션] 장치이름 [블록]
옵션설명
-V : 자세한 정보를 보여준다.
-t : 생성할 파일시스템타입(ext2, ext3)
파일시스템옵션
-c : 파일시스테을 생성하기 전에 배드블록을 검사
-l 파일명 : 지정된 파일명으로부터 배드블록목록을 읽는다.
-v : 작업상태와 결과를 자세히 보여준다.
장치이름 : 자치명
# mkfs -t ext3 /dev/hdb1 -> ext3 타입의 파일시스템 생성
=> # mkfs.ext3 /dev/hdb1
# mkfs -t ext2 /dev/hdb1 -> ext2 타입의 파일시스템 생성
=> # mkfs.ext2 /dev/hdb1
# mkfs -V -t ext3 -j -L /data /dev/sdb1

* mount : 파일시스템 마운트하기
# mount -a [fnrvw] [-t 파일시스템타입]
# mount [-fnrvw] [-o 옵션[,...]] 장치 디렉토리
# mount [-fnrvw] [-t 파일시스템타입] [-o 옵션[,...]] 장치 디렉토리
# mount -t iso9660 /dev/cdrom /mnt/cdrom
# mount -r /dev/hdb1 /backup -> /dev/hdb1 파티션을 /backup디렉토리로 마운트를 하면서 -r옵션을 사용히여 쓰기 금지옵션을 사용하여 마운트한다. /backup디렉토리는 읽기만 가능하다.
# mount -w /dev/hdb1 /backup -> /dev/hdb1 파티션을 /backup디렉토리로 마운트하면서 -w옵션을 사용하여 쓰기가 가능하도록 마운트한다.
# mount -t ext3 /dev/hdb1 /backup
# mount -t vfat /dev/fd0 /mnt/floppy
# mount -t nfs 192.168.0.200:/web_data /web_data -> 마운트가 되면 192.168.0.200서버의 /web_data디렉토리를 현재 서버의 /web_data디렉토리처럼 사횽할 수 있다.
# mount -t nfs 192.168.0.201:/db_data /db_data

* /etc/fstab : 파일시스템 자동마운트 정보파일
# cat /etc/fstab
LABEL=/ / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
LABEL=/data /data 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
- /etc/fstab 파일 구조
[파일시스템장치명] [마운트포인트] [파일시스템] [옵션] [dum관련설정] [파일점검옵션]
[파일시스템장치명] : 파일시스템의 장치명. 만약 레이블(LABEL)이 설정되어 있다면 장치명 대신 에이블명으로 지정할 수도 있다.
[마운트포인트] : 파일시스템이 마운트될 위치.
[파일시스템] : 파일시스템의 종류
ext 초기 리눅스에서 사동되었던 파일시스템
ext2 현재 많이 사용하고 있는 파일시스템
ext3 저널링파일시스템으로서 ext2에 비해 파일시스템 복구기능과 보안부분을 크게 향상시킨 파일시스템
iso9660 CD-ROM의 표준 파일시스템
nfs Network File System으로서 원격서버를 마운트할 때 사용.
swap 스왑파일시스템
ufs UNIX FileSystem으로서 UNIX SYSTEM 5계역ㄹ에서는 표준파일시스템이다.
vfat 윈도우 95나 98, 그리고, NT를 지원하기 위한 파일시스템
msdos MS-DOS파티션을 사용하기 위한 파일시스템
hpfs HPFS 파일시스템
ntfs 윈도우NT나 200의 NTFS 파일시스템
sysv 유닉스시스템 V를 지원하기 위한 파일시스템
hfs Mac 컴퓨터의 hfs파일시스템
ramdisk RAM 디스크를 지원하는 파일시스템
[옵션] : 파일시스템을 용도에 맞게 사용하기 위한 파일시스템 속성을 설정하는 옵션이다.
defaults rw, nouser, auto, exec, suid 속성을 모두 가지는 속성임. 가장 일반적인 파일시스템에서 사용하는 속성임.
auto 부팅시 자동마운트됨
exec 실행파일이 실행되는 것을 허용하는 파일시스템
suid SetUID와 SetGID의 사용을 허용하는 파일시스템
ro 읽기전용 파일시스템으로만 사용됨(Read Only)
rw 일고 쓰기 파일시스템으로 사용됨(Read, Write)
user 일반 계정사용자들도 마운트를 할 수 있는 파일시스템.
nouser 일반 계정사용자들은 마운트 할 수 없는 파일시스템. root만 mount할 수 있다.
noauto 부팅시 자동마운트되지 않게 한다.
noexec 실행파일을 실행되지 못하게 하는 파일시스템
nosuid SetUID와 SetGID의 사용을 허용하지 않는 파일시스템
usrquota 개별 계정사용자의 quota설정이 가능한 파일시스템
grpqutoa 그룹별 quota설정이 가능한 파일시스템
[dum관련설정] : 0또는 1을 가질 수 있다. 1은 데이터백업등을 위해 dump가 가능한 파일시스템이며, 0은 dump명령으로 덤프되지 않는 파일시스템이다.
[파일점검옵션] : 0또는 1, 그리고 2가 올 수 있다. 0은 부팅시 실행되는 fsck가 실행되지 않는 설정이며, 1은 루트파일시스템을 의미하며, 2는 루트파일시스템이외의 파일시스템을 의미한다. 여기서 설정된 파일시스템의 순서를 기준으로 부팅시 실행되는 fsck의 순서가 결정된다.

* tune2fs : 파일시스템 튜팅 프로그램
# tune2fs [-l] [-c 최대마운트횟수] [-e 에러발생시반응] [-i 각점검간의간격] [-m 예약블록 퍼센트] [-r 예약블록갯수] [-u 사용자] [-g 그룹] 장치명
# tune2fs -l /dev/sdb1 == # dumpe2fs -h /dev/sdb1
tune2fs 1.38 (30-Jun-2005)
Filesystem volume name: /dtc
Last mounted on: <not available>
Filesystem UUID: cfa85fdd-ba5b-461b-830b-b405810abcc4
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr filetype needs_recovery sparse_super
Default mount options: (none)
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 4480448
Block count: 8960764
Reserved block count: 448038
Free blocks: 7826381
Free inodes: 4478614
First block: 0
Block size: 4096
Fragment size: 4096
Blocks per group: 32768
Fragments per group: 32768
Inodes per group: 16352
Inode blocks per group: 511
Last mount time: Tue Mar 7 18:34:27 2006
Last write time: Tue Mar 7 18:34:27 2006
Mount count: 6
Maximum mount count: 35
Last checked: Thu Feb 23 18:50:02 2006
Check interval: 15552000 (6 months)
Next check after: Tue Aug 22 18:50:02 2006
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 128
Journal inode: 8
Journal backup: inode blocks
# tune2fs -c 100 /dev/hdb1 -> /dev/hdb1 파일시스템의 최대 마운트횟수를 100으로 설정
# tune2fs -r 1000000 /dev/hdb1 -> /dev/hdb1 파일시스템의 예약블록갯수가 1000000으로 변경
# tune2fs -g wheel /dev/hdb1 -> /dev/hdb1 예약블록을 wheel그룹이 사용가능하도록 설정
# tune2fs -g 10 /dev/hdb1 -> /dev/hdb1 예약블록을 GID가 10인 그룹이 사용가능하도록 설정
# tune2fs -u dhan /dev/hdb1 -> /dev/hdb1 파일시스템을 dhan이라는 사용자도 예약블록을 사용할 수 있도록 설정
# tune2fs -u 500 /dev/hdb1 -> /dev/hdb1 파일시스템을 UID가 500인 사용자도 예약블록을 사용할 수 있도록 설정
# tune2fs -m 20 /dev/hdb1 -> /dev/hdb1 파일시스템의 예약블록의 용량을 20%로 설정

* Swap 용량 늘이기
1. swap파일시스템을 이용하기
# free
total used free shared buffers cached
Mem: 255300 231464 23836 0 22816 34928
-/+ buffers/cache: 173720 81580
Swap: 1020116 199116 821000
# swapon -s
Filename Type Size Used Priority
/dev/sda3 partition 1020116 199116 -1
# umount /data
# fdisk /dev/sdb -> 기존에 사용하던 파티션중 하나를 swap 파티션으로 변경한다.

The number of cylinders for this disk is set to 4462.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): p

Disk /dev/sdb: 36.7 GB, 36703918080 bytes
255 heads, 63 sectors/track, 4462 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sdb1 * 1 4462 35840983+ 83 Linux

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 82
Changed system type of partition 1 to 82 (Linux swap)

Command (m for help): p

Disk /dev/sdb: 36.7 GB, 36703918080 bytes
255 heads, 63 sectors/track, 4462 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sdb1 * 1 4462 35840983+ 82 Linux swap

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
# mkswap /dev/sdb1 -> /dev/sdb1에 swap 파일시스템 생성
Setting up swapspace version 1, size = 36701159 kB
# swapon /dev/sdb1 -> /dev/sdb1 swap 파일시스템을 활성화한다.
# free
total used free shared buffers cached
Mem: 255300 249548 5752 0 23036 35388
-/+ buffers/cache: 191124 64176
Swap: 36861088 199116 36661972
# swapon -s
Filename Type Size Used Priority
/dev/sda3 partition 1020116 199116 -1
/dev/sdb1 partition 35840972 0 -2
# cat /etc/fstab
LABEL=/ / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
LABEL=/data /data 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/sdb1 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
# swapoff /dev/sdb1 -> /dev/sdb1 swap 파일시스템 해제.
# free
total used free shared buffers cached
Mem: 255300 234344 20956 0 21928 37092
-/+ buffers/cache: 175324 79976
Swap: 1020116 199116 821000
# swapon -s
Filename Type Size Used Priority
/dev/sda3 partition 1020116 199116 -1
2. swap파일을 이용하기
# dd if=/dev/zero of=swapfile bs=1024 count=1000 -> swap으로 사용할 파일 생성
1000+0 records in
1000+0 records out
# ls -l swapfile
-rw-r--r-- 1 root root 1024000 Mar 24 00:22 swapfile
# mkswap swapfile -> swap 파일에 swap 파일시스템생성
Setting up swapspace version 1, size = 1019 kB
# swapon swapfile -> swap 활성화
# free
total used free shared buffers cached
Mem: 255300 180912 74388 0 19836 23132
-/+ buffers/cache: 137944 117356
Swap: 1021108 199140 821968
# swapon -s
Filename Type Size Used Priority
/dev/sda3 partition 1020116 199140 -1
/data/swapfile file 992 0 -3
# swapoff swapfile
# free
total used free shared buffers cached
Mem: 255300 180968 74332 0 19932 23148
-/+ buffers/cache: 137888 117412
Swap: 1020116 199140 820976
# swapon -s
Filename Type Size Used Priority
/dev/sda3 partition 1020116 199140 -1

* finger : 로컬/원격 서버의 사용자 계정정보 확인
# finger widemail -> 로컬 계정사용자(widemail)의 계정정보 출력
Login: widemail Name: (null)
Directory: /home/widemail Shell: /bin/bash
On since Thu Mar 23 14:55 (KST) on pts/1 from 192.168.0.11
8 hours 46 minutes idle
On since Thu Mar 23 22:12 (KST) on pts/2 from 192.168.0.12
No mail.
No Plan.
# finger @192.168.0.3 -> 192.168.0.3에 접속해 있는 계정사용자 모두를 확인
# findger widemail@192.168.0.2 -> 192.168.0.2에 접속해 있는 widemail 게정정보 출력

* 파일 복수
# cp
-a : 복사대상 원본파일의 속성과 링크정보등을 그대로 유지하면서 복사하는 옵션 (= -dpR)
-b : 복사하고자 하는 파일이 동일한 이름으로 이미 그 위치에 존재하고 있을 경우, 덮어쓰기 또는 원본을 지우고 복사할 경우에 원본파일의 복사본을 만든다.
-f : 복사대상파일이 이미 그 위치에 존재한다면 파일을 지우고 복사한다.
-i : 복사대상파일이 이미 그 위치에 존재한다면 덮어쓸 것인가 또는 복사하지 않을 것인가를 사용자에게 확인하는 절차를 가진다.
-P : 복사대상이 되는 원본파일이 디렉토리경로와 함께 지정되었을 경우에 지정된 디렉토리경로를 그대로 복사한다.
-u : 복사되는 원본파일의 이름과 동일한 파일이 대상위치에 존재할 경우에 온본파일과 변경날짜를 비교하여 최신파일일 경우에 복사하지 않는다.
# install : 관리자 전용 복사명령어
# install [옵션] [-s] [--strip] 원본파일 복사파일
# install [옵션] [-s] [--strip] 원본파일.. 복사파일
# install [옵션] [-d,--directory] 디렉토리
-c : 전총 유닉스 버전과 호환을 위한 옵션
-d,--directory : 지정한 파일이 복사될 경로를 지정하는 옵션으로서 만약 지정한 경로명의 디렉토리가 존재하지 않는다면 직접 만들어서 복사를 한다.
-g,--group : 지정한 파일 복사시에 이 옵션으로 지정한 그룹명을 복사되는 파일의 소유그룹으로 지정하여 복사한다.
-m,--mode : 지정한 파일 복사시에 이 옵션으로 지정한 퍼미션을 복사되는 파일의 퍼미션으로 한다.
-o,--owner : 지정한 파일복사시에 이 옵션으로 지정한 소유자를 복사되는 파일의 소유자로 한다.
-s,--strip : 지정한 파일복사시에 이 옵션이 사용되면 strip명령을 수행한다.

* 디스크 사용량 점검
- du : 특정 디렉토리의 용랴응ㄹ 확인
# du -sh /etc -> /etc 전체 파일 및 디렉토리 용량의 합을 표시
- df : 파일시스템별 디스크사용량 점검
# df -k -> 디스크사용량을 파티션별로 확인할 때 용량을 Kbyte 단위로 표시
# df -m -> 디스크사용량을 파티션별로 확인할 때 용량을 Mbyte 단위로 표시
# df -h -> 디스크사용량을 파티션별로 확인할 때 가장 적당한 용량단위로 표시
# df -a -> 디스크용량 확인시에 모든 파일시스템을 대상으로 점검
# df -i -> 파티션별 디스크용량 점검시에 inode사용정보를 표시
# df -T -> 디스크사용량을 출력할 때에 파일시스템의 종류와 함께 표시
# df -t ext3 -> 특정 파일시스템의 종류만을 대상으로 디스크사용량 조사
# df -x ext3 -> 특정 파일시스템의 종류를 제외한 디스크사용량 조사

* ls
-R : 지정한 디렉토리이하에 있는 하부디렉토리와 파일들을 모두 포함한다.
-r : 출력결과를 정열할 때에서 내림차순으로 정렬한다.
-S : 파일사이즈가 가장 큰 것부터 순서대로 나열하게 된다.
-l : 파일들을 나열할 때에 자세한 출력을 한다.
-a : 경로안의 ㅁ든 파일을 나열한다. '.'으로 시작하는 파일들도 포함한다.
-A : 출력결과의 파일들에서 .과 ..은 제외한다.
-h : 파일사이즈를 용량단위(Mb, Gb)를 붙여서 출력한다.
# ls -l -> 찰일정보 자세히 표시
# ls -lr -> 파일명을 기준으로 내림차순 정렬하기
# ls -al -> 특정 디렉토리의 모든 파일 확인하기
# ls -m -> 콤마로 파일들을 구분하기
# ls -lF -> 파일의 끝부분에 파일형태를 표시하는 특수문자 표시하기
일반적인 파일 : 아무런 표시도 하지 않는다.
실행파일 : "*"를 붙여서 표시
디렉토리 : "/"를 붙여서 표시
심볼릭링크 : "@"를 붙여서 표시
FIFO파일 : "|"를 붙여서 표시
소켓파일 : "="를 붙여서 표시
# ls -aAl -> 현재디렉토와 상위디렉토리를 제외하고 표시
# ls -n -> 파일의 UID, GID 표시
# ls -lG -> 소유그룹정보 제외하기
# ls -1 -> 한 줄에 한 파일씩만 표시
# ls -lB -> 파일의 끝에 '~'가 붙은 파일(백업파일)은 출력제외하기
# ls -w 60 -> 가로길이를 지정하여 표시
# ls -l -I b* -> 특정패턴의 파일은 나열에서 제외하기
# ls -lR -> 서브디렉토리내의 모든 파일 함께 표시
# ls -lS -> 파일의 용량별로 내림차순 정렬하여 표시
# ls -lSr -> 파일의 용량별로 오름차순 정렬하여 표시
# ls -lX -> 파일확장자순으로 정렬하여 표시
# ls -lU -> 디스크저장 순서대로 표시
# ls -lL -> 심볼릭 링크파일을 일반 파일형태로 표시
# ls -lc -> 최근 변경시간을 기준으로 정령하여 표시
# ls -lt -> 파일의 시간순서대로 표시
# ls -lu -> 파일의 사용시간 순서대로 표시 (파일을 언제 접근했는지 표시)
# ls --fule-time -> 시간표시를 자세히 표시
# ls -li -> 파일리스트 맨 앞에 파일 색인번호를 표시
# ls -x -> 가로로 나열하여 표시
# ls -ls -> 파일의 크기를 KB단위로 표시
# ls -alRSh /backup -> 특정디렉토리 이하의 모든 파일을 대상으로 용량별로 정렬하여 표시

* 문자열 검색 및 편집
- grep에서 사용되는 검색문자패턴 정규표현식
. : 아무문자나 한문자를 의미함.
* : 어떤문자열이나 문자길에 무관한 문자열을 의미함.
^ : 행의 시작 위치를 의미함.
$ : 행의 미지막 위치를 의미함.
[] : 한문자 길이의 패턴리스트
[^] : 지정된 문자들 이외의 문자들을 의히마(^는 여집합을 의미함)
\ : 위에 오는 문자를 문자 그대로 인식(특수문자를 그대로 표현할 때 사용함)
/< : 단어의 시작 위치를 의미함
/> : 단어의 마지막 위치를 의미함
# grep [옵션] 검색할문자표현식 [파일..]
# grep [옵션] [-e 검색할문자표현식 | -f 파일] [파일..]
# 지정된 파일내에서 특정문자 찾기
# grep apache README -> README 파일에서 apache가 있는 행을 출력
# 지정된 파일내에서 특정문자를 포함한 행의 개수 출력
# grep -c apache README -> README에서 apache라는 문자열있는 행의 개수 출력
# 지정된 파일내에서 특정문자가 존재하지 않는 행만 검색
# grep -v apache README -> README에서 apache라는 문자열이 없는 행을 출력
# 지정된 파일 내에서 대소분자 구분없이 특정문자 검색하기
# grep -i apache README
# 특정 디렉토리내에서 디렉토리리스트만 확인하기
# ls -l /etc/ | grep "^d"
# 특정 디렉토리내에서 파일리스트만 보기
# ls -l /etc/ | grep -v "^d"

* touch
# 특정 파일의 날짜시간정보 변경
# touch MMDDhhmm[[CC]YY][.ss]
$ ls -l a
-rw-r--r-- 1 widemail jms 21 Jan 1 10:10 a
$ touch -

반응형