[Linux] CentOS 명령어 모음
- 리눅스 명령어
- su : root 또는 다른 사용자 계정의 권한을 가질 수 있는 명령이며 해당 계정의 패스워드가 필요
- su 명령 사용법
- #] su [사용자계정]
- #] su [사용자계정] → 루트계정 인증, 패스워드 문의)
- #] su - [사용자계정] → 환경파일까지 사용(profile .cshrc .exec .login)
- useradd [옵션] 사용자계정
- 옵션
- #] useradd -u 100 jaurim → UID 지정
- #] useradd -d home/work jaurim → 홈디렉토리 지정
- -M: 홈디렉토리 생성 불가, -s: 사용 쉘 지정, -g: 그룹 지정, -G: 멀티 그룹에 추가, -f: 기간 지정, -e: 날짜 지정
- 예
- #] useradd - u 300 -g bforge -d /home/builder -p 1234 jaurim
→ userID는 300, 그룹은 bforge, 홈 디렉토리는 /home/builder 비밀번호는 1234로 설정 된 사용자 jaurim을 생성한다
- '/home/사용자계정' 디렉터리와 기본 파일들이 생성됨
- '/var/spool/mail/사용자계정' 파일 생성됨
- userdel [옵션] 사용자계정
- -r : 계정 삭제와 동시에 홈 디렉터리와 홈 디렉터리의 파일들, 메일파일도 삭제
- 예 : #] userdel –r jaurim
- usermod [옵션] 사용자계정
- 사용자가 속해 있는 그룹을 변경하거나 홈 디렉터리를 변경
- -e YYYY-MM-DD : 계정 사용 만료일 지정
- -g GROUP : 사용자의 소속 그룹을 변경
- -s SHELL : 로그인 쉘을 변경(/bin/bash, /bin/csh, /bin/ksh 등)
- 예
- #] usermod –s /bin/csh jaurim
- #] usermod –g staff jaurim
- groupadd [옵션] 그룹명: 그룹추가
- -g GID : 그룹의 ID를 GID로 지정, 기존 GID와 중복되지 않아야
- #] groupadd staff
- #] groupadd –g 510 foo
- ls [옵션] [파일명]: 디렉토리의 화일들을 보여줌.
- 파일명 : 나열할 파일 이름 또는 디렉터리 이름, 여러 파일명 사용 가능
- -a : 숨겨진 파일과 숨겨진 디렉터리 등 모든 이름을 포함
- -l : 파일종류/디렉터리/링크 구분, 접근 권한, 링크 수, 소유자, 그룹명, 파일 크기, 최종 수정된 시간, 이름 등 자세한 정보를 나열
- -F : 실행 가능한 파일은 '*", 디렉터리는 '/'를 붙여서 보여줌
- -i : inode 번호를 보여줌
- -s : 파일 또는 디렉터리의 블록 수(간접 블록 포함)를 보여줌
- -u : 파일 또는 디렉터리가 최종 사용된 시간
- -al : Hidden속성의 파일 표시(a옵션),파일의 종류, 사용권한
- -c : 도스의 dir /w명령과 같음
- -R : 도스의 dir/s 같음
- cd [이동할 디렉토리 명]: cd (change directory) 디렉토리(윈도우에선 폴더) 변경할때 사용
- chmod [옵션] [권한 파일명] : (change mode) : 파일의 허가상태 변경
- -R : 하위 경로에 있는 파일들과 디렉터리까지 권한을 변경
- 권한
- 읽기 (r) : 파일 및 디렉터리 내용 보기
- 쓰기 (w) : 파일의 쓰기 및 디렉터리 안에 파일 생성 및 삭제
- 실행 (x) : 파일 실행 및 디렉터리 접근
- 파일 및 디렉터리의 권한 표시
- 사용자 권한 : 첫 번째 열 (예: rwx)
- 그룹 권한 : 두 번째 열 (예: r-x)
- 다른 사용자들 권한 : 세 번째 열 (예: r-x)
- 8진수 모드로 권한 지정
- 허가는 1, 불허는 0으로 하여 2진수로 표시한 후 8진수로 변환 (예 :rwxr-xr-x 111101101 755)
- 예 : chmod 755 test
- 기호모드로 권한 지정
- [ugoa][+-=][rwx] 형식
- ugoa : 각각 user, group, other, all을 의미, 생략하면 all
- +-= : 각각 권한 추가, 권한 삭제, 권한 지정을 의미
- rwx : 각각 read, write, execute를 의미, = 뒤에서 생략되면 아무 권한도 없음을 의미
- #] chmod go-rx test
→ test파일의 일기와 실행 권한을 그룹과 아더 유저에 대해서 빼앗겠다
- #] chmod o= java
→ java라는 파일 or 디렉토리에 아무권한도 없애겠다
- chattr [옵션] [+-=속성] 파일명…(파일 속성변경, change attributes)
- -R : 하위 경로에 있는 파일들과 디렉터리까지 속성 변경
- +-= : 각각 속성 추가, 속성 삭제, 속성 지정을 의미
- i : 읽기 전용 모드, root 만 속성 변경 가능
- a : 추가 전용 모드. root 만 속성 변경 가능
- 용도 : 파일의 소유자도 읽기 전용으로만 파일을 열 수 있게, root도 설정을 해제하지 않으면 파일을 지울 수 없게 지정
- lsattr 명령으로 속성 확인 가능
- chown [소유자 계정/.그룹이름] [파일 네임]: chown (change owner)파일 소유권 병경
- cp [옵션] <복사할파일/디렉토리명>: cp (copy) : 파일이나 디렉토리 복사시 사용.
- cp [옵션] 복사할파일명... 대상디렉터리명
- cp –r [옵션] 복사할디렉터리명 대상디렉터리명
- 옵션
- -a : 파일의 속성, 링크 정보들을 유지하면서 복사
- -b : 파일이 존재하면 백업을 만들고 복사
- -f : 기존의 파일을 강제로 삭제하고 복사
- -i : 파일이 존재하면 덮어쓰기 여부를 확인
- -r : 디렉터리를 복사
- 예
- #] cp test1.txt test2.txt
→ 현재 디렉터리의 test1.txt 파일을 test2.txt로 복사
- #] cp /home/test.txt .
→ /home 디렉터리의 test.txt 파일을 현재(‘.’) 디렉터리로 복사
- #] cp –r * backup
→ 현재 디렉터리의 숨김 파일을 제외한 모든 파일과 디렉터리를 backup 디렉터리로 복사
- date : 현재시작 표시
- echo : 표준출력에 문자열을 출력
- exit : 작업종료
- finger : 현재 로그인되어있는 사용자들의 인적사항출력
- find [옵션] [경로] [표현식] : 조건에 맞는 파일 및 디렉터리를 찾는 명령
- -maxdepth n : 검색할 디렉터리 깊이, 1이면 하위 디렉터리를 검색하지 않음
- -follow : 심볼릭 링크된 디렉터리도 검색
- 경로 : 검색할 위치, 하위 디렉터리도 검색
- 표현식은 다음 요소로 구성됨
- test : 파일을 찾는 조건
- -name : 파일 이름으로 찾음
- -perm : 파일의 접근 권한으로 찾음
- -user : 파일의 소유자로 찾음
- -group : 파일의 그룹으로 찾음
- -type : 파일의 유형, 파일(f), 디렉터리(d), 링크(l) 등
- -mtime –n +n : 변경(m)된 날짜, 생성(ctime), 접근(atime)
- -mmin –n +n : 변경된(m) 시간, 생성(cmin), 접근(amin)
- action : 조건에 일치하는 파일에 대해 수행할 작업
- -print : 파일 이름을 화면에 출력
- -fprint file : 파일 이름을 파일에 출력
- -exec : 파일에 특정 명령을 수행, 주로 -exec command {}; 형식
- operator : 표현식을 연산자로 조합
- ! 표현식 : NOT 표현식
- 표현식1 표현식2 : 표현식1 AND 표현식2
- 표현식1 –o 표현식2 : 표현식1 OR 표현식2
- 예
- find / -name passwd –print
- find /etc –name passwd –exec cat {} \;
- find /sbin –type l –print
- find /var –user jaurim –print
- find /home –name '*.bak' –exec rm –f {} \;
- ftp (file transfer protocol) : 파일을 주고받을때 사용
- file : 파일의 종류를 알아보는 명령어
- kill : 수행중인 프로세서를 죽인다
- last : 최근 접속한 사용자의 이름과 장소, 시간 등을 알려주는 명령어
- jobs : 백그라운드에서 실행되고 있는 작업들의 작업번호, 작업상태등을 보여줌
- lp : 프린트 명령
- mail : 다른 사용자에게 편지 보내기
- mkdir [옵션] [생성할 디렉토리명]: 새로운 디렉토리(폴더) 만드는 명령
- #] mkdir [옵션] [생성할 디렉토리명]
- -p : 하위 디렉터리를 동시에 생성 (mkdir –p backup/java)
- -m 접근권한 :디렉토리를 생성하면서 접근 권한 부여
- #] mkdir –m 755 test
- rmdir [옵션] [삭제할 디렉토리명]: rmdir (remove directory) : 디렉토리 삭제
- #] rmdir [옵션] [삭제할 디렉토리명]
- -p : 하위 디렉터리를 동시에 삭제
- #] rmdir –p backup/java
- 비어 있는 디렉터리만 삭제 가능
- 디렉터리 안에 파일이나 다른 디렉터리가 없어야 함
- 비어 있지 않은 디렉터리는 rm -r 또는 rm –ri 명령으로 삭제
- #] rm –r Sub
- man : 명령어나 각종 자원들의 매뉴얼을 출력
- #] ls --help | more
- #] Is man
- more [옵션] [+줄번호] [파일명] : 파일을 페이지 단위로 출력
- 파일명 : 출력할 파일 이름, 여러 파일명 사용 가능
- -숫자 : 한 페이지의 줄 수 지정, Space bar를 누를 때 이동하는 줄 수
- +줄번호 : 파일의 줄 번호에서부터 출력
- Space : 다음 페이지로 진행
- q : 출력을 중단하고 more 명령을 마침
- /pattern : 특정 단어 등 패턴을 검색
- #] more /etc/services (실행 후 /를 누르고 tcp 입력 후 Enter)
→ /etc/service 파일을 한 페이지씩 출력하며 문자열 tcp를 찾음
- #] more –20 +10 /etc/services (Space로 페이지 전환)
→ /etc/services 파일을 20줄을 한 페이지로 10번째 줄부터 출력
- head: 파일의 앞부분을 지정한 행 수만큼 출력하는 명령
- rm head -3 /etc/*.conf
- tail: 파일의 뒷부분을 지정된 행 수만큼 출력하는 명령
- tail –f /var/log/messages
- rm [옵션] <삭제할 파일이나 디렉토리명>: rm (remove) 파일이나 디렉토리를 삭제할 때 사용.
- -r : 디렉토리까지 삭제하기 위한 옵션.
- -f : 삭제하기 전에 확인과정없이 삭제.
- shutdown : 컴터 끔
- telnet : 네트웍상에서 다른 시스템으로 원격으로 접속하기 위한 명령어
- time : 명령수행시간 측정
- who: 로그인된 사용자 목록을 보여준다( whoami 현재 사용자정보)
- sort : 파일 정렬
- sleep : 지정한 시간만큼 쉰다.
- shutdown -h now : 당장 종료
- shutdown -r now : 시스템을 리부팅하는 명령
- sort -r 파일명 : 파일을 역순으로 정렬
- cal 월 년 : 지정된 달의 달력출력
- rm [옵션] 파일명
- -i : 파일 삭제 여부를 확인
- -f : 파일을 강제로 삭제
- -r : 디렉터리인 경우 하위 경로에 있는 파일들과 디렉터리까지 삭제
- 디렉터리를 하위 디렉터리 및 파일과 함께 삭제하는 방법
- #] rm –r [디렉터리명]
- #] rm –f *.tmp
→ 현재 디렉터리의 .tmp로 끝나는 파일을 모두 강제로 삭제
- mv [옵션] <복사할파일명 대상파일명/복사할파일명... 대상디렉터리명>
- -i : 같은 이름이 존재할 경우 덮어쓰기 여부를 확인
- -f : 강제로 이동
- #] mv test1.txt test2.txt
→ 현재 디렉터리의 test1.txt 파일을 test2.txt로 이름 변경)
- #] mv /home/nipark/test.txt /home/nipark/Sub
→ /home/nipark 디렉터리의 test.txt 파일을 /home/nipark/Sub 디렉터리로 이동
- ln [옵션] (파일을 다른 이름으로 연결하는 명령)
- -s 원본파일명 대상파일명
- cat /proc/cpuinfo: cpu 정보
- cat /proc/meminfo : 메모리 정보
- free: 메모리 용량
- df: 디스크 정보
- du:자기 계정의 디스크 사용량을 볼 때 사용.
- #] du <옵션> <사용자아이디>>
- -s : 전체 사용량을 간략히 표시
- -h : 용량단위로 표시하여 좀 더 알기 쉬움.
- uname -a : 리눅스 커널 정보
- ifconfig : 네트워크 정보
- iwconfig : 무선네트워크 정보
- lsmod/lspci/lsusb : 모듈/PCI/USB 장치 정보
- netstat | > netstat -na : 네트워크 상태 정보
- nslookup: 네임 서버 조회
- traceroute : 상대 서버까지 경로 출력
- top, 접속한 전체 사용자, CUP 사용 현황, 실행 프로세스 등의 정보
- hostname, ip 설정: > netconfig, (호스트 정보)
- dmesg, 화면지우기: > clear (팅시 커널에 출력되는 정보)
- last -10 [계정명] (최근 10회 로그인한 날짜와 목록 출력)
- RPM 정보
- #] rpm -i <파일명.rpm> → 기본설치:
- #] rpm -ivh <파일명.rpm> → 정교한 설치:
- #] rpm -Uvh <파일명.rpm> → 패키지 업그레이드:
- #] rpm -qa → 패키지 목록 보기:
- #] rpm -qa | grep glibc → glibc 버전 확인:
- #] rpm -qa | grep gcc → gcc 버전 확인:
- #] rpm -q sendmail → sendmail 어떤 패키지에 속해 있는지?:
- #] rpm -ql sendmail → sendmail 관련 파일 목록 보기:
- #] rpm -e -nodeps sendmail → sendmail 패키지 삭제:
- 프로세스 정보
- #] ps au 모든 프로세스
- #] ps u 현재 작동중인 프로세스
- #] ps | grep [계정] 사용자 프로세스
- tar [옵션] [묶음 또는 해체 할 파일 또는 디렉토리]
- 백업 등의 목적을 위해 여러 파일과 디렉터리를 묶은 것
- 예
- #] tar cvf → 압축파일.tar 대상파일 및 디렉토리 묶음
- #] tar xvf → 압축파일.tar 풀때
- #] tar cvf abc.tar a.txt b.txt c.txt
→ 현재 디렉터리에 있는 a.txt, b.txt, c.txt 파일을 abc.tar 파일로 묶음
- #] tar tvf abc.tar
→ abc.tar에 포함된 파일 및 디렉터리의 목록을 보여줌
- #] tar xvf abc.tar
→ 현재 디렉터리에 abc.tar 파일을 풀어놓음
- #] tar cvf backup.tar backup
→ backup이 디렉터리인 경우 디렉터리의 내용을 backup.tar로 묶음
- 옵션
- -c : tar 파일을 생성할 때
- -d : tar 파일과 해당 파일시스템간의 차이점을 확인하고자 할 때 사용.
- -r : tar 파일에 다른 파일들을 추가하고자 할 때 사용.
- -t : tar 파일의 내용을 확인하고자 할 때 사용.
- -f : tar 파일을 사용할 때 반드시 사용.
- -p : tar 파일을 생성할 때 당시의 파티션을 그대로 하여 풀어줄 때 사용.
- -v : 묶을 때나 풀어줄 때 파일들의 내용을 자세하게 보려고 할 때 사용.
- -Z : compress로 압축파일 사용할 때 압축이나 해제까지 한번에 할 때 사용.
- -z : gzip과 관련하여 압축이나 해제를 한꺼번에 할 때 사용.파일 시스템
- tar 명령을 이용한 압축과 압축 해제
- 아카이브와 압축을 동시에 실행
- tar cvfz 압축아카이브명 파일명…
- 압축해제와 아카이브에서 추출을 동시에 실행
- tar xvfz 압축아카이브명
- 백업과 복원
- 관련 명령어cpio, dump, tar 등의 명령어를 사용
- cpio 명령
- 파일을 테이프에 저장하기 위한 유틸리티
- 디렉터리를 다루지 못하기 때문에 파일 목록은 find 등을 사용
- cpio 명령의 사용 방법
- 생성 : cpio -o < 파일목록 > <아카이브명>
- 추출 : cpio -i < 아카이브명>
- 예
- find 명령의 결과를 cpio의 표준 입력으로 사용
- /home 디렉터리 아래 모든 파일을 테이프 드라이브(/dev/st0)로 백업
- find /home -print | cpio -o > /dev/st0
- find 명령의 -mtime, -newer 옵션을 사용하여 변경분 백업
- find . -mtime –1 -name '*.bak' -print | cpio -o > /dev/st0
- find . -newer timefile -print | cpio -o > /dev/st0
- dump 명령
- 파일 시스템 전체를 백업 가능, 복구는 restore 명령 사용
- 수준별 백업 기능 제공
- 0 은 모든 파일을 백업
- n 수준 백업은 더 낮은 수준의 백업 이후에 생성, 변경된 파일만 백업
- dump 명령의 사용 방법
- dump [옵션] 파일시스템 →파일시스템이 mount된 디렉터리, 디바이스
- dump [옵션] 파일명
- dump 명령
- 옵션
- -n : n이 0이면 전체 백업, 0보다 크면 더 낮은 수준의 백업 이후에 추가, 변경된 내용만 백업
- -f : 지정한 파일 또는 디바이스(/dev 디렉터리 파일)에 백업
- #] dump -0f mydump mydir
→ mydir 디렉터리를 mydump 파일로 백업
- #] dump -1f hda2_level1 /dev/hda2
→ /dev/hda2 파일 시스템을 1 수준에서 hda2_level1 파일로 백업
- dump 명령의 장점
- 여러 개의 테이프에 백업 가능, 어떤 타입의 파일도 백업 및 복구 가능
- 파일의 접근 권한, 소유주 등의 사항도 복구됨
- dump 명령의 단점
- 각 파일 시스템은 개별적으로 dump 되어야 함 (파티션마다 별도)
- NFS 파일 시스템은 dump 불가 (로컬 파일 시스템만 dump 가능)
- 활동 중인 파일 시스템은 제대로 백업이 되지 않을 수 있음
- 파일을 압축 / 압축 해제하는 명령
- gzip [옵션] [파일명]
- -n : n은 1~9 사이의 숫자, 압축률 (1:속도 빠름 ~ 9:압축률 높음)
- -d : 압축 해제
- gzip으로 압축하면 원래 파일명에 .gz 확장자가 추가됨
- gunzip [옵션] [압축파일명]...
- .gz, .z, .Z, .tgz, .taz 등의 확장자를 가진 압축파일을 풀어 확장자를 제거 (tgz은 tar.gz, taz는 tar.Z을 의미)
- bzip2와 bunzip2 명령
- 일반적으로 gzip보다 60~70% 이상의 높은 압축률, 압축 해제 속도는 느림
- 사용방법은 gzip / gunzip과 같음 (.bz2 확장자)
- 파일시스템의 종류
- minix : Minix의 파일 시스템, 기본적인 파일 시스템
- xiafs : minix의 제한을 보완한 수정 버전
- msdos : FAT(File Allocation Table) 파일 시스템
- umsdos : msdos 파일 시스템을 긴 파일명과 소유자, 접근허가, 링크와 장치 파일 등을 사용할 수 있도록 확장
- isofs : ISO 기준을 따르는 표준 CD-ROM의 파일 시스템
- hpfs : OS/2의 파일 시스템, 읽기 전용
- nfs (Network File System) : 네트워크상의 컴퓨터가 파일을 공유
- sysv : System V/386, Xenix, Coherent 파일 시스템
- ext : 리눅스 초기의 파일 시스템
- ext2 : 리눅스의 기본 파일 시스템으로 사용되었음
- 파일 시스템 생성 시 블록 크기를 선택 가능
- 1,024~4,096byte
- 파일 시스템 생성 시 i-node 개수 결정 가능
- 주어진 크기의 파티션에 얼마나 많은 파일을 저장할 수 있는가에 따라
- 디스크 블록을 그룹으로 분할
- 정규 파일이 저장되기 전에 데이터 블록을 미리 할당 가능
- 고속의 심볼릭 링크를 지원
- ext3 : ext2파일 시스템에 기반을 두어 저널링(Journaling)을 지원하도록 확장
- 현재 리눅스에서 가장 많이 사용
- 리눅스에서 사용 가능한 파일 시스템 중 가장 신뢰할 수 있는 저널링 파일 시스템 중 하나
- 저널링 : 변경을 기록하는 로그를 두어 시스템 비정상 종료 시 파일 시스템 복구를 쉽게 하는 방법
- reiser 파일 시스템
- 저널링 파일 시스템의 일종
- B*Tree에 기반으로 모든 파일 시스템의 객체가 하나의 B*Tree안에 존재
- ext4 : ext3의 확장이면서 ext2와 비슷한 속도를 자랑한다
- 파일 시스템
- 특정
- 파일 이름 길이는 255자까지
- 파일의 확장자는 필요 없으나 파일의 특성을 알리기 위해 확장자 사용 가능
- '.' 은 현재 디렉토리, '..'는 부모 디렉토리
- 파일 시스템의 크기는 최대 2TiB~16TiB (변동 가능)
- 파일의 크기는 최대 16GiB~2TiB (변동 가능)
- mount 명령의 기능
- 장치에 구성된 파일 시스템을 지정된 디렉터리(마운트 지점)에 붙여 파일 시스템을 사용할 수 있게 함
- 명령 형식
- mount -a [-fnrvw] [-t 파일시스템유형 ]
- mount [-fnrvw] [-o 옵션 [,...] ] 장치 | 디렉터리
- mount [-fnrvw] [-t 파일시스템유형 ] [-o 옵션 ] 장치 디렉터리
- 옵션
- -f : 실제 마운트 하지 않고 마운트 가능한지 점검
- -r : 읽기 전용으로 마운트
- -w : 읽기, 쓰기 모드로 마운트
- -t type : 파일 시스템 유형을 type으로 지정
- -a : /etc/fstab에 나열된 모든 파일 시스템을 마운트
- -o options : 마운트 옵션을 지정, 옵션이 여러 개일 경우 ','로 구분
- mount 관련 파일 :
- #] /dev/cdrom /mnt/cdrom iso9660 noauto,user,ro 0 0
→ CD롬 드라이브를 /mnt/cdrom 경로에 디렉토리를 생성하고 iso9660파일시스템 타입으로 하고 noauto일반 유저도 마운트트 할 수 있고, 백업을 하지 않고, 파일 시스템 체크를 하지 않겠다
- #] mount [-t ext3 ]
→ 현재 마운트 된 [ ext3 유형의 ] 모든 파일 시스템을 보여줌
- #] mount -t iso9660 /dev/cdrom /mnt/cdrom
→ CD-ROM 드라이브를 /mnt/cdrom 디렉터리에 마운트
- #] mount -a [-t iso9660 ]
→ /etc/fstab에 나열된 [ iso9660 유형의 ] 모든 파일 시스템을 마운트
- #] mount /dev/cdrom 또는 mount /mnt/cdrom
→ /etc/fstab에 기술된 파일 시스템을 마운트 할 경우 장치명 또는 마운트 포인트만 명시
- 운영체제 별 파일 시스템을 mount하는 예
- 해당 장치가 존재하는지, 파일 시스템 종류가 맞는지 확인
- mount 명령을 실행하기 전 마운트 지점 디렉터리를 생성
- 사용 예
- mount –t msdos /dev/hda2 /mnt/msdos
- mount –t vfat /dev/hda3 /mnt/win98
- mount –t ntfs /dev/hda4 /mnt/win2000
- mount –t ext2 /dev/hda5 /mnt/linux
- umount 명령
- 디렉터리에 마운트 되어 있는 저장 장치를 해당 디렉터리로부터 분리
- 명령 형식
- umount -a [-nv] [-t 파일시스템유형]
- umount [-nv] 장치 | 디렉터리
- 옵션
- -a : /fstab에 나열된 모든 파일 시스템을 언마운트
- -t type : 해당 파일 시스템 유형에만 적용
- umount 명령의 사용 예
- umount /mnt/cdrom 또는 umount /dev/cdrom
- 현재 /mnt/cdrom 디렉터리에 마운트 되어 있는 CD-ROM드라이브를분리
- umount –a –t iso9660
- /etc/fstab에 나열되어 있는 파일 시스템 중 iso9660 유형을 모두 언마운트
- mkfs 명령의 사용법(파일시스템 생성)
- mkfs [ -t 파일시스템유형 ] [ fs-options ] 장치이름 [ 블록 ]
- 옵션
- -t : 만들어질 파일 시스템의 유형 지정
- fs-options : 파일 시스템 옵션
- 블록 : 파일 시스템을 위해 사용되는 블록의 개수
- #] mkfs –t ext3 /dev/hdb
→ 하나의 파티션으로 이루어진 IDE primary slave 디스크에 ext3 파일시스템을 생성
- fsck 명령
- 파일 시스템의 일관성을 검사하고 대화식으로 파일 시스템을 복원
- 명령 수행 시 유효한 데이터가 유실될 가능성이 있는 조작은 피함
- 명령 형식
- fsck [-AVRTNP] [-s] [-t 파일시스템유형] [옵션] 파일시스템
- 관련 파일
- /etc/filesystems
- fdisk 명령
- 하드 디스크 파티션을 관리하는 대화식 유틸리티
- 명령 형식
- fdisk [옵션] [하드디스크장치명]
- fdisk 명령의 종류
- p : 파티션 테이블 출력
- n : 새로운 파티션 추가
- d : 파티션 삭제
- w : 파티션 테이블 기록하고 끝냄
- mkswap 명령
- 지정한 특정 장치나 파일을 리눅스용 스왑 영역으로 지정
- mkswap 명령 형식
- mkswap [옵션] 장치또는파일명 [블록크기]
- 장치이름 인자로 사용될 수 있는 장치이름 : /dev/hda[1-8],/dev/hdb[1-8], /dev/sda[1-8], /dev/sdb[1-8]
- 블록크기는 원하는 블록 단위 크기
- swapon / swapoff 명령
- 스왑 영역 사용 설정 / 해제
- du(disk usage) 명령
- 파일에 사용되는 블록 수를 표시
- 명령 형식
- du [옵션] [파일명...]
- #] du
- #] du –s → 하위 디렉터리 내역을 생략하고 총 블록 수만 표시
- #] du --max-depth=1 → 바로 아래 디렉터리까지만 블록 수 표시
- #] du /home → /home 디렉터리와 하위 디렉터리의 블록 수 표시
- df(disk free) 명령
- 지정한 파일이 있는 파일 시스템의 디스크 공간 정보를 보여줌
- 명령 형식
- df [옵션] [파일명...]
- #] df → 모든 파일 시스템의 공간 정보
- #] df –i → 모든 파일 시스템의 i-node 사용 정보
- #] df /home → /home 디렉터리가 있는 파일 시스템의 공간 정보
- quota 명령
- 사용자의 디스크 사용량 한도를 설정
- 파일 디렉토리 관리
- 파일 출력
- ls 명령 사용 예
- 현재 디렉터리의 파일 나열
- ls
- /home/nipark 디렉터리의 모든 파일 나열
- ls –a /home/nipark
- 현재 디렉터리의 .c로 끝나는 모든 파일의 자세한 정보 나열
- ls –al *.c (*는 .을 제외한 모든 문자열을 의미)
- /home/nipark 디렉터리의 이름이 한 글자인 파일 나열
- ls /home/nipark/? (?는 .을 제외한 모든 문자 의미)
- 현재 디렉터리를 알려주는 명령(print working directory)
- pwd [옵션]
- 파일의 내용을 화면에 출력하는 명령 (concatenate)
- cat [옵션] [파일명]...
- 파일명 : 출력할 파일 이름, 여러 파일명 사용 가능
- -n : 줄 번호를 파일 내용과 같이 출력
- #] cat –n ~/.bashrc → 홈 디렉터리의 .bashrc 파일 내용을 줄 번호와 같이 출력
- 사용자 계정
- 슈퍼 유저(root)
- 시스템 관리자 계정, 모든 권한을 가짐
- /etc/passwd 파일
- amilpark:x:501:501::/home/namilpark:/bin/bash
(사용자 계정 : 패스워드 : UID : GID : 코멘트 : 홈 디렉터리 : 쉘의 종류)
(‘::’사이에 코멘트가 있다.)
- 사용자 계정 : 사용자의 고유한 계정
- 패스워드 : 패스워드가 있음을 ‘x’로 표시
- UID (User ID) : 사용자 계정 ID
- 시스템에서는 UID로 사용자를 구분 (예 : 501)
- GID(Group ID) : 사용자가 속한 그룹의 ID
- 그룹에 따라 부여된 권한이 다름 (예 : 501)
- 사용자 계정 삭제
- 사용자 계정의 삭제는 바람직하지 않음
- 삭제 후 새로운 사용자가 기존의 UID를 할당 받을 수 있으므로
- 사용자를 삭제하지 않고 로그인을 막는 방법
- /etc/passwd 파일의 사용자 계정 줄 앞에 ‘*’로 주석 처리
- vi 편집기
- 각종 문서를 편집할 수 있는 텍스트 기반의 편집기
- vi 편집기의 모드 (1)
- 명령모드 (command mode)
- 라인 모드 또는 입력 모드에서 Esc를 눌러서 전환
- 한 글자 또는 두 글자 명령을 사용하여 커서를 이동
- 글자/단어/줄 삭제 및 교체, 문자열 검색 등 기능 수행
- 라인모드 (line mode)
- 명령 모드에서 : 를 눌러서 전환
- 명령 프롬프트에서 저장, 편집, 검색 기능 등 다양한 명령 수행
- 입력모드(insert mode)
- 명령 모드에서 다음 키를 눌러서 전환
- a : 커서 위치의 다음부터 입력 시작
- A : 커서 위치 줄의 끝에서 입력 시작
- i : 커서 위치의 앞에서부터 입력 시작
- I : 커서 위치 줄의 처음에서 입력 시작
- o : 커서 위치 줄의 다음 줄에서 입력 시작
- O : 커서 위치 줄의 위에서 입력 시작
- vi 편집기의 실행
- vi [파일명]
- vi 편집기의 종료
- 명령 모드에서 키보드 명령을 입력
- ZZ : 변경 내용을 저장하고 종료
- 라인 모드에서 종료하는 명령
- q : 그대로 종료(변경 내용이 저장되어 있는 경우)
- q! : 저장하지 않고 종료
- wq [파일명] 또는 x [파일명] : 변경 내용을 저장하고 종료
- 파일 불러오기
- 라인 모드에서 파일을 불러오는 명령
- r [파일명] : 파일을 불러들여와 현재 위치에 삽입
- 파일 저장하기
- 라인 모드에서 파일을 저장하는 명령
- w : 문서의 내용을 현재 파일에 저장
- w 파일명 : 문서의 내용을 지정한 파일에 저장
- w! 파일명 : 문서의 내용을 지정한 파일을 지우고 저장
- begin, end 파일명 : begin 행과 end 행 사이의 내용을 지정한 파일에 저장
- 명령 모드에서 기본적인 커서의 이동
- h, j, k, l : 왼쪽, 아래, 위, 오른쪽으로 한 칸 이동
- 단어 단위 커서 이동
- e : 다음 단어 끝 글자
- b : 이전 단어의 첫 글자
- w : 다음 단어의 첫 글자로 이동
- 줄 단위 커서 이동 방법
- - : 이전 줄의 처음으로 이동
- + 또는 Enter : 다음 줄의 처음으로 이동
- 0, $: 현재 줄의 처음, 현재 줄의 끝으로 이동
- ^ : 현재 줄의 공백이 아닌 첫 글자로 이동
- 문단 단위 커서 이동 방법
- (, ) : 문장의 시작, 문장의 끝으로 이동
- {, } : 문단의 시작, 문단의 끝으로 이동
- G : 문서의 마지막으로 이동
- nG : 문서의 n 번째 줄로 이동
- ’ ’ : 이전의 커서 위치로 이동
- M : 화면의 중간 줄에 커서 이동
- vi 편집기 삭제 명령
- 삭제 명령
- x : 커서가 위치한 문자 삭제
- X : 커서 앞의 문자 삭제
- D : 커서부터 줄의 끝까지 삭제
- dd : 현재 줄을 삭제
- dmove : 커서부터 move 이동까지 삭제
- dw : 커서가 위치한 단어 삭제
- db : 커서 앞의 한 단어 삭제
- dG : 커서부터 문서 마지막까지 삭제
- 문자 및 문자열 단위의 치환
- r : 커서가 위치한 문자 치환
- R : 입력 모드 전환되며 줄의 끝까지 한 문자씩 덮어 씀
- s : 커서가 위치한 문자를 삭제하고 입력모드로 전환
- S : 커서가 위치한 줄을 삭제하고 입력모드로 전환
- u : 변경 내용 취소
- cw : 커서 위치의 문자열 치환
- cW : 공백으로 구분된 뒤 단어를 삭제하고 입력모드로 전환
- cB : 공백으로 구분된 앞 단어를 삭제하고 입력모드로 전환
- 텍스트 붙여 넣기 명령
- p : 삭제되거나 복사된 부분을 커서 다음(줄)에 붙여넣기
- 예 : dd 명령(커서가 위치한 줄 삭제)을 실행한 후 커서를 이동하여 p 명령(커서위치 아래에 삭제된 줄 삽입)
- P : 삭제되거나 복사된 부분을 커서 앞(줄)에 붙여넣기
- 예 : dw 명령(커서위치부터 단어 끝까지 삭제)을 실행한 후 커서를 이동하여 P 명령(커서 위치 앞에 삭제된 단어 삽입) 실행
- 텍스트 복사 명령
- ymove : 커서 위치부터 move 이동 위치까지 복사
- yy : 커서 위치의 한 줄 복사
- 텍스트 검색 명령
- /pattern : 문서에서 pattern 검색
- 예 : 명령어모드에서 /Unix<Enter> 하면 문서에서 커서 위치에서 뒤쪽으로 가장 가까운 Unix 를 찾음
- Unix 뿐만 아니라 unix도 같이 검색하려면?
- n : 이전 검색 반복
- 예 : 명령어모드에서 n을 누르면 문서의 다음 Unix를 찾음
- N : 반대 방향으로 이전 검색 반복
- 예 : 명령어모드에서 N을 누르면 문서의 이전 Unix를 찾음
- vi 옵션 설정하기 - set 명령
- 라인모드에서 실행 (명령모드에서 : 키를 누름)
- vi 편집기 set 명령 주요 옵션
- autoindent : set ai / set noai (자동 들여쓰기 설정 / 해제)
- ignorecase : set ic / set noic (대소문자 미구분 검색 / 구분)
- number : set nu / set nonu (줄 번호 표시 / 표시 안 함)
- tapstop : set ts=number
- <Tab>키에 number개의 공백만큼 이동
- 사용 가능한 옵션과 현재 설정 목록 표시
- set all
- vi 가 실행될 때마다 미리 설정한 set 명령이 자동으로 적용
- .exrc 파일 또는 EXINIT 환경변수를 이용
- .exrc 파일
- 홈 디렉터리에 .exrc 파일을 생성
- set number 등 필요한 옵션을 설정
- EXINIT 환경변수 : 쉘에서 다음 두 줄을 실행하거나 .bashrc에 두 줄을 추가
- EXINIT='set number'
- export EXINIT
- vi 사용법 정리
- 주요 명령어
- u (명령 취소), . (명령 반복)
- 0 (줄의 처음으로 이동), $ (줄의 끝으로 이동)
- ' ' (이전 커서 위치로 이동, 홑 따옴표 두 번)
- 모드 전환
- 명령모드 : 라인모드 또는 입력모드에서 <Esc> 누름
- 라인모드 : 명령모드에서 : 누름
- 입력모드 : 명령모드에서 a(append), i(insert), o(open) 실행
- vi 편집기 사용 예 (1)
- 쉘에서 vi myfirst.txt 명령을 실행
- i 누름 : 입력모드로 전환
- 다음 두 줄을 입력
- Linux can be installed on a wide variety of computer hardware, ranging from mobile phones, tablet computers,
- routers and video game consoles, to desktop computers,
- mainframes and supercomputers.
- <Esc> 누름 : 명령모드로 전환
- / (누른 후) computer (입력하고 ) <Enter>누름
- computer를 찾음
- vi 편집기 사용 예 (2)
- yy 누름 : 커서 위치의 한 줄을 복사
- p 누름 : 복사된 줄을 커서 아래 줄에 붙여 넣기
- n 누름 : 이전 찾기 계속 (다음 computer를 찾음)
- cw (누른 후) Linux (입력하고) <Esc> 누름
- 해당 단어가 Linux로 바뀌고 다시 명령모드가 됨
- : (누른 후) w mysecond.txt (입력하고) <Enter> 누름
- 다른 이름(mysecond.txt)으로 저장
- o 누름 : 커서 위치 아래 줄이 열리고 입력모드로 전환
- 적당한 내용을 입력 후 <Esc> 누름
- vi 편집기 사용 예 (3)
- dd 누름 : 커서 위치의 줄이 삭제됨
- p 누름 : 삭제된 줄을 커서 아래 줄에 붙여 넣기
- : (누른 후) q! (입력하고) <Enter> 누름
- • 고친 내용을 저장하지 않고 끝냄
- 프로세스
- 프로세스(process) 의 정의
- 실행되고 있는 프로그램
- 커널에 등록되어 관리를 받는 작업
- 커널은 프로세스 관리 블록(PCB, Process Control Block) 에 정보를 저장
- 프로세스 관리 블록 개요
- 커널에 등록된 각 프로세스에 대한 정보를 저장하는 영역
- 프로세스들은 모두 커널 공간에 자신의 PCB를 가지며 커널이 PCB를 관리함
- 프로세스 고유 번호(PID)
- 커널이 시스템 내의 프로세스마다 고유하게 부여하는 번호
- 프로세스가 생성 시 부여
- 프로세스의 우선순위(priority)
- 프로세스 스케줄링을 위한 정보
- 프로세서를 할당할 프로세스를 선정하는데 참조
- 현재 상태(current state)
- 프로세스가 할당 받은 자원과 현재 상태
- 프로세스가 할당 받은 자원에 대한 정보
- 어느 자원이 어느 프로세스에 할당되는지 알 수 있음
- 자원 관리에 참고
- 문맥 저장 영역(context save area)
- 프로세스가 실행을 중지해야 할 때 각종 레지스터(register)들의 값을 보관하기 위하여 사용
- 해당 프로세스가 다시 실행될 때 레지스터의 값을 복원
- 프로세스 상태 전의도
- 활동(active) / 지연(suspended) 상태
- 활동 상태 : 프로세스가 기억 장치를 할당 받은 상태
- 지연 상태에서 resume 또는 swap-in 으로 활동 상태가 됨
- 지연 상태 : 프로세스가 기억 장치를 할당 받지 못한 상태
- 활동 상태에서 suspend 또는 swap-out 으로 지연 상태가 됨
- 준비 (ready) / 대기 (blocked) 상태
- 준비 상태 : 실행에 필요한 모든 자원을 할당 받은 상태
- 대기 상태 : 실행에 필요한 자원을 요청하고 기다리는 상태
- 생성(created) 상태
- 커널 공간에 PCB 등이 만들어지고 프로세스가 처음 생성되는 상태
- 준비(ready) 상태
- 기억 장치 등 필요한 모든 자원을 할당 받은 상태에서 프로세서 를 할당 받으려고 대기하는 상태
- 프로세서를 할당 받게 되면 즉시 실행이 가능
- 디스패치(dispatch) 또는 스케줄(schedule)
- 준비 상태에서 실행 상태로 전이되는 것
- 실행(running) 상태
- 프로그램 코드가 프로세서에 의해 실행되고 있는 상태
- 프로세스가 필요한 모든 자원을 할당 받은 상태
- 선점(preemption)
- 실행 상태의 프로세스가 프로세서 시간 할당량이 끝나거나 우선순위가 높은 프로세스가 들어왔을 때 프로세서를 반납하고 준비 상태로 전이 되는 것
- 시간 종료(time runout) : 시간 할당량의 종료로 선점되는 경우
- 대기(block)
- 실행 상태의 프로세스가 자원을 요청하여 대기 상태로 전이되는 것
- 대기(blocked) 상태
- 프로세스가 필요한 자원을 요청하고 이를 할당 받을 때까지 기다리는 상태
- 웨이크업(wakeup)
- 프로세스에 요청한 자원이 할당되어 준비 상태로 전이되는 것
- 지연 대기 상태
- 프로세스가 대기 상태에서 기억 장치를 잃은 경우 지연 대기 상태로 전이됨
- 지연 준비 상태
- 프로세스가 기억장치를 제외한 다른 모든 필요한 자원들을 보유한 상태
- 지연 준비 상태로 전이되는 경우
- 생성 상태의 프로세스가 기억 장치 공간이 부족하여 전이
- 준비 상태의 프로세스가 기억 장치를 반납하고 전이
- 실행 상태의 프로세스가 선점 당할 때 기억 장치까지 반납하고 전이
- 리눅스 시스템의 실행 레벨(runlevel) : 0~6
- 백그라운드(background) 프로세스
- 백그라운드로 실행
- 쉘 프롬프트에서 명령을 입력하고 ‘&’를 명령 뒤에 적고 <Enter>
- 백그라운드로 프로세스를 실행시키면 쉘은 즉시 명령 대기 상태가 됨
- 키보드 입력을 받을 수 없음
- 입력 없이 장시간 실행되어야 하는 경우 주로 사용
- 포어그라운드로 전환 : 쉘에서 fg 명령 실행
- ps 명령으로 백그라운드 프로세스의 상태를 점검
- 포어그라운드(foreground) 프로세스
- 포어그라운드 모드로 실행
- 쉘 프롬프트에서 명령을 입력하고 <Enter>
- 키보드 입력 및 화면 출력 가능
- 포어그라운드로 실행 중인 프로세스 강제 중지 : <Ctrl>+<C>
- 백그라운드로 전환 : <Ctrl>+<Z>
- 프로세스 모니터링
- ps
- 실행 중인 프로세스에 관한 정보를 보여줌
- ps 명령의 사용 방법
- ps [옵션]
- l : 세부적인 정보 (교재 참고)
- a : 다른 사용자의 프로세스 포함
- u : 상세한 사용(자)정보 포함
- x : 터미널(tty)이 할당되지 않은 프로세스 포함
- -p pid : PID가 pid인 프로세스만 해당
- -u uid : uid 사용자의 프로세스만 해당
- top
- 시스템에서 실행되고 있는 프로세스들의 실시간 정보를 보여줌
- CPU 사용, 메모리 사용, 시스템 부하 등
- top 명령의 사용 방법
- top [옵션]
- top의 명령
- d : 화면 갱신 주기 조정
- p : 특정 사용자의 프로세스로 한정
- S : CPU time 누적
- kill / killall
- 프로세스에 종료하라고 시그널(기본 SIGTERM)을 보냄
- kill은 PID로 프로세스를 지정, killall은 명령 이름으로 지정
- kill 명령의 사용 방법
- kill [옵션] pid
- -s signal : 프로세스에 signal 시그널을 보냄 (SIGHUP, SIGKILL 등)
- -l : 지정 가능한 시그널 이름을 보여줌
- killall 명령의 사용 방법
- killall [옵션] 명령이름
- exec
- exec 명령을 호출하는 프로세스를 새로운 프로그램을 수행하도록 변경
- 쉘에서 'exec 명령'을 실행하면 명령의 실행이 종료된 후 쉘이 종료됨
- 쉘이 아닌 새로운 명령을 수행하는 프로세스가 되었고 명령이 종료되면 프로세스의 수행이 끝난 것
- exec 명령의 사용 방법
- Exec [옵션] [ 명령 [인수] ]
- 예 : exec top
- nice (관련 명령 renice)
- 프로세스를 실행할 때 우선순위 값을 설정
- nice를 통해 조정될 수 있는 범위
- -20(가장 높은 우선권)에서 +20(가장 낮은 우선권)까지, 기본은 0
- 일반사용자는 0 이상 지정 가능
- nice 명령의 사용 방법
- nice [옵션] [명령 [인수]]
- -n adjustment 또는 –adjustment : 조정 수치를 adjustment 로 지정
- 실행 예 : nice –n -10 top 또는 nice --10 top
- nohup
- 터미널을 빠져나가도(예 : 로그아웃) 실행 중인 프로그램을 종료되지 않고 계속 수행되게 함
- nohup으로 명령을 실행하는 경우 명령 행의 끝에 ‘&’를 붙여 백그라운드로 실행하고 로그아웃 함
- nohup 명령의 사용 방법
- nohup 명령 [인수]
- 실행 예 : nohup script.sh &
- cron
- 특정 시간에 특정 작업을 자동으로 수행하도록 지정 가능
- 일반적으로 작업을 수행할 쉘 스크립트를 작성함
- cron을 이용한 자동 스케줄
- /etc/crontab 파일
- 시스템에서 주기적으로 수행될 작업을 설정
- crontab 명령
- 개별 사용자를 위해 주기적으로 수행될 작업을 설정
- 옵션
- 분: 0-59, *
- 시간: 0:-23, *
- 일: 1-31, *
- 월: 1-12, *
- 요일: 0-6(0=일요일)
- run-parts: 해당 디렉토리에 있는 명령을 수행
- 예
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
#run-parts ( ‘/ect/conrn.hourly’디렉토리에 쉘스크립트 들을 run-parts 즉 실행 시켜라)
01 **** root run-parts /ect/conrn.hourly (매시 1분이면)
02 4*** root run-parts /ect/conrn.hourly (매일 새벽 4시 2분)
22 4**0 root run-parts /ect/conrn.hourly (요윌별로 위와 같이 해라)
42 41** root run-parts /ect/conrn.hourly (매월 1일에 4시 42분에 해라, 요일과 연도에 관계 없이)
- crontab 명령의 사용 방법
- crontab [-u 사용자ID] [옵션]
- -l : crontab 파일 내용 보기
- -e : crontab 파일 편집
- -r : crontab 파일 삭제
- 예 1 : 매월 1일부터 10까지 매일 4시 0분에 ‘명령1’을 수행
- 0 4 1-10 * * 명령1
- 예 2 : 매 분마다 시간을 홈디렉터리의 date.txt에 추가
- * * * * * date >> ~/date.txt
- crontab 명령 사용 예
- crontab –e (crontab 파일 생성)
- * * * * * date >> ~/date.txt
- crontab –l (crontab 파일 확인)
- * * * * * date >> ~/date.txt
- cat ~/date.txt (홈디렉터리의 date.txt 파일을 확인)
- Wed Sep 28 14:00:02 KST 2011
- Wed Sep 28 14:01:01 KST 2011
- crontab –r (crontab 파일 삭제)
- 데몬
- 백그라운드로 실행되며 커널 요청 시 작동하는 프로세스, 주로 시스템의 서비스를 제공
- 주요 데몬의 종류와 기능
- crond : 시간에 따라 등록된 명령을 정기적으로 실행
- dhcp : 동적인 IP 주소와 네트워크 정보를 지원
- httpd : 웹 서버
- lpd : 프린트 작업 처리
- sendmail : 메일 전송 서버
- 쉘
- 리눅스의 대화형 사용자 인터페이스
- 명령어 해석기
- 사용자의 명령을 해석하여 운영체제에 전달
- 명령 수행 결과를 보여줌
- 스크립트를 작성할 수 있음
- 프로그램과 유사
- 사용자 쉘 확인 및 변경: /etc/passwd 파일 수정 예 : C Shell을 사용
- nipark:x:502:502::/home/nipark:/bin/csh
- 해당 사용자의 로그인을 막으려고 할 때는 마지막 필드를 /bin/false로
- 사용하는 쉘을 확인하는 방법: echo $SHELL 명령을 수행
- 명령 완성 기능
- 명령어 일부만 입력하고 <Tab> 키를 누름
- 파일 이름의 일부만 입력하고 <Esc> 키를 누름
- History 기능
- ! history번호 <Enter> 또는 커서 키로 이동하여 <Enter>
- history 파일 위치: ~/.bash_history (저장된 명령어 개수는 HISTSIZE 변수에 지정)
- 메타 문자의 지원: ?' : 임의의 한 문자, '*' : 문자 수와 상관없는 임의의 문자
- 특수 문자 기능
- > : 표준 출력을 기록할 파일 지정( ls > result)
- >> : 표준 출력을 덧붙일 파일 지정
- < : 표준 입력을 읽을 파일 지정
- * : 0개 이상의 문자와 대응
- ? : 하나의 문자와 대응
- | : 어떤 프로세스의 출력을 다른 프로세스로 보냄 (파이프)
- ls | more
- ; : 명령 순서
- || : 이전 명령이 실패하면 실행하는 조건부 실행
- && : 이전 명령이 성공하면 실행하는 조건부 실행
- & : 명령을 백그라운드 프로세스로 실행
- # : 주석 처리
- $ : 변수 접근 기호
- 예: $PATH, $LANG
- 환경설정 파일
- bashrc : 새로운 쉘이 실행될 때 설정
- bash_profile : 로그인 시 설정
- bash_logout : 로그인 쉘이 종료되면서 실행
- /etc/profile : 로그인 시 설정, 시스템 전역에 영향
- /etc/bashrc : 새로운 쉘이 실행될 때 실행, 시스템 전역에 영향
- 주요 환경 변수
- $HOME : 사용자 홈 디렉터리 $PATH : 명령어 프로그램 탐색 경로
- $MAIL : 메일 보관함 경로 $MAILCHECK : 메일 확인 간격(초)
- $SHELL : 현재 쉘의 경로 $HOSTNAME : 컴퓨터 이름
- $LINES : 터미널의 행 수 $COLUMNS : 터미널의 열 수
- $PWD : 현재 디렉터리 $PS1 : 프롬프트
- $UID : 사용자 UID $USER : 사용자 이름
- $HISTFILE : 히스토리 파일 $LANG : 사용 언어
- 환경 설정
- 환경 변수 값 확인: echo $환경변수
- 환경 변수 값을 모두 확인: printenv
- 환경 변수 값 설정: export [환경변수 [= 변수값] ]
- 일반 변수 값 설정: 변수 = 변수값 (set 명령으로 값을 모두 확인)
- 패키지 관리자
- RPM (Redhat Package Manager)
- GNU의 GPL에 의해 배포되는 소프트웨어 패키지 관리자
- RPM의 용도 : 패키지 설치, 업그레이드, 제거, 정보 검색 및 검증
- 예: rpm [옵션] [패키지명]
- 옵션
- 설치: -i, --install
- 업그레이드: -U, --upgrade
- 삭제: -e, --erase
- 정보검색: -q, --query
- 검증: -V, --verify
- 서명확인: -K, --checksig
- 재설치: --replacepkgs
- 의존성: --nodeps
- YUM (Yellowdog Updater Modified)
- rpm 기반의 시스템을 위한 자동 패키지 설치, 업그레이드 및 삭제 도구
- RPM 명령의 어려운 부분인 패키지 의존성 문제를 해결
- 설치되어 있거나 저장소에서 설치 가능한 패키지에 관한 정보를 검색
- 저장소 URL 목록은 /etc/yum.repos.d 디렉터리에 있음
- 예, [-y] 는 yes/no를 묻지 말아라
- 패키지 설치 여부 확인: yum list installed [패키지명]
- 패키지 설치: yum install [-y] 패키지명
- 패키지 업데이트: yum update [-y] [패키지명]
- 패키지 삭제: yum remove 패키지명
- 네트워크
- 회선 교환망(Circuit Switched Network)
- 전화망과 같은 원리로 운영되는 통신망을 Circuit Switched Network이라고 한다.
- 통신이 이루어지려면 송수신 측 사이에 전송 경로를 연결하여 물리적인 회선(circuit)이 만들어져야 한다.
- 송수신 측 사이에 설정된 전용의 전송 경로를 통해 음성, 또는 데이터를 전송한다.
- 패킷 교환망(Packet Switched Network)
- 인터넷망과 같은 원리로 운영되는 통신망을 Packet Switched Network이라고 한다.
- 데이터를 잘게 쪼개어 패킷으로 전송하며 송수신 측 사이에 전용의 전송 경로가 존재하지 않는다.
- 패킷은 라우팅(routing)을 통해 목적지로 전달된다.
- 통신 선로를 공유하므로 access control(한 라인에서 여러 컴퓨터가 서로 충돌 없이 통신하는 방법)이 필요하다.
- ifconfig 명령의 기능과 사용법
- ifconfig 명령을 이용하여 네트워크 인터페이스 정보를 확인하거나 설정할 수 있다.
- 네트워크 인터페이스 카드(NIC)는 랜(LAN) 카드, 이더넷(Ethernet) 카드라고도 하며 고정된 이더넷 주소를 가지고 있으며 IP 주소가 할당된다.
- ifconfig로 확인 및 설정 가능한 정보
- MAC 주소 : Ethernet H/W 주소 또는 어댑터 주소라고도 하며 48bit로 구성된다.
- IP 주소 : 32bit로 구성된다. 예를 들어 192.168.0.5, 10.0.2.15 등과 같이 구성된다.
- 브로드캐스트 주소 : 같은 네트워크에 속한 모두에게 메시지를 보낼 때 사용하는 주소이며 ARP(Address Resolution Protocol), DHCP(Dynamic Host Configuration Protocol) 등에 사용된다. 서브넷 마스크가 255.255.255.0이고 IP 주소가 192.168.0.5라면 브로드캐스트 주소는 192.168.0.255이다.
- 서브넷 마스크 : 서브 네트워크의 범위를 나타내는 값이다. 서브넷 마스크가 255.255.255.0이고 IP 주소가 192.168.0.5라면 서브 네트워크의 범위는 192.168.0.1 ~ 192.168.0.254이다.
- MTU : 패킷의 최대 크기, 보통 1500 값을 가짐
- RX packets : 받은 패킷 수, TX packets : 보낸 패킷 수
- RX bytes : 받은 바이트 수, TX bytes : 보낸 바이트 수
- Interrupt 주소
- ifconfig 명령의 예
- 모든 네트워크 인터페이스의 정보를 출력하는 명령
ifconfig
- 네트워크 인터페이스 eth1의 IP 주소를 192.168.56.101로 설정하는 명령
ifconfig eth1 192.168.56.101
- 리눅스에서 사용하는 네트워크 설정 파일의 내용을 설명하시오.
- /etc/sysconfig/network 파일
- HOSTNAME 항목으로 시스템의 호스트명을 설정한다.
- hostname 명령으로 호스트명을 확인하거나 설정할 수 있다.
- /etc/resolv.conf 파일
- nameserver 항목에 DNS 서버 주소가 기록되어 있다. DNS는 도메인명이나 호스트명에 대응되는 IP 주소를 알려주는 서비스이다.
- search로 도메인 뒷부분을 제외하고 앞부분 호스트명 만으로 사용할 수 있게 설정할 수 있다. 예를 들어 /etc/resolve.conf 파일에 'search knou.ac.kr' 행을 추가하고 쉘 프롬프트에서 'nslookup www' 명령을 실행하면 'www'를 'www.knou.ac.kr'로 인식하여 IP 주소를 찾는다.
- /etc/hosts 파일 IP 주소에 할당된 호스트명 및 별명을 설정한다. 파일에 설정된 IP 주소는 DNS를 사용하지 않고 직접 접속한다. 예를 들어 /etc/hosts 파일에 '203.232.172.70 www.knou.ac.kr' 행을 추가하면 DNS와 관계없이 호스트명 'www.knou.ac.kr'을 바로 IP 주소 '203.232.172.70'으로 해석한다.
- 네트워크를 점검하는 각종 리눅스 명령
- ping 명령
- ICMP를 이용하여 원격 호스트와의 연결 여부와 네트워크의 상태 정보를 점검한다.
- ping을 통해 알 수 있는 내용은 보낸 패킷 수, 받은 패킷 수, 유실된 패킷 수, 응답속도 등이다.
- ping 명령의 예 (주요 사이트들은 ping 요청에 응답하지 않으므로 자기 자신에게 ping을 수행)
ping localhost
- traceroute 명령
- 특정 호스트까지 통신이 이루어지는 경로를 확인한다. traceroute로 확인할 수 있는 정보는 대상 호스트까지 통신 가능 여부, 대상 호스트까지 hop수, 대상 호스트까지 통신 지연 구간 등이다.
- traceroute 명령의 예 (TCP 옵션을 사용하여 www.knou.ac.kr까지 경로를 확인)
traceroute -T www.knou.ac.kr
- 참고: VirtualBox 가상머신에 리눅스를 설치한 경우 NAT(Network Address Translation)을 통해 외부 네트워크와 연결하기 때문에 traceroute로 경로 정보를 확인할 수 없다.
- netstat 명령
- 네트워크 연결 상태, 시스템 라우팅 테이블, 네트워크 인터페이스 통계, 멀티캐스팅 등 시스템의 네트워크에 관한 정보를 확인한다.
- netstat 명령의 예 (TCP socket 연결을 보여주는 명령)
netstat -t
- nslookup 명령
- DNS를 이용하여 호스트의 IP 주소를 확인한다.
- nslookup 명령의 예 (www.knou.ac.kr의 IP 주소 확인)
nslookup www.knou.ac.kr
- Telnet 서버를 설치하고 Telnet에 접속
- Telnet 서버 설치
- yum 명령을 이용하여 설치한다.
yum -y install telnet-server
- elnet이 설치되었는지 rpm 명령으로 확인한다.
rpm -qa | grep telnet
rpm -qi telnet-server
rpm -ql telnet-server
- Telnet 서버 설정
- Telnet 서버를 직접 실행하지 않고 xinetd 데몬이 Telnet 서비스를 제공하도록 설정하는데 이를 위하여 /etc/xinetd.d/telnet 파일의 disable 부분을 no로 설정하고 쉘 프롬프트에서 'service xinetd restart' 명령을 실행하여 xinetd를 재실행시킨다.
- Telnet 클라이언트를 이용한 서버 접속
- 다음 명령으로 Telnet 클라이언트를 실행시키고 localhost에 접속한다. telnet localhost
- 사용자명과 password를 입력하여 로그인한다.
- exit 또는 logout 명령을 이용하여 로그아웃한다.
- Secure Shell(SSH)의 기능과 특징
- SSH는 원격 시스템에 로그인하여 쉘 명령을 수행할 수 있게 해 주는 Telnet과 비슷한 프로그램이다.
- SSH는 전자 서명을 이용하여 클라이언트와 서버 간 연결을 인증하며 클라이언트와 서버 간에 주고받는 메시지를 암호화하여 Telnet에 비하여 보안이 강화되었다.
- SSH는 TCP port 번호 22를 사용하여 연결한다. 원하는 경우 port 번호를 변경할 수 있다.
- OpenSSH는 널리 사용되는 SSH 서버이고 'yum install openssh' 명령으로 설치 가능하다.
- 다음은 널리 사용되는 SSH 클라이언트이다.
- PuTTY :http://www.putty.org (공개 S/W)
- 한글 PuTTY : http://kldp.net/projects/iputty (공개 S/W)
- XShell : http://www.netsarang.com/products/xsh_overview.html (개인 사용자에게만 무료)
- SSH 접속/종료
- 접속
- ssh [원격시스템주소]
- ssh lochlhost, 로컬호스트 접속:
- ssh -I [사용자계정][원격시스템주소], 원격연결
- ssh jaurim@localhost, 다른 호스트 원격연결
- PuTTY, 주로 윈도우에서 사용하는 공개 소프트 웨어
- 진행/종료
- 접속 후 확인 메시지 ‘yes’
- 계정 입력
- exit, logut
- File Transfer Protocol(FTP)
- FTP는 파일 전송을 위한 프로토콜로 클라이언트가 서버에 접속하여 파일을 업로드하거나 다운로드 할 수 있는 프로그램이다.
- FTP 클라이언트와 서버는 TCP 연결을 생성하는데 명령을 위한 연결과 데이터를 위한 연결을 별도로 관리한다.
- 명령 전송은 서버 측에서 제공하는 port 번호 21을 사용한다. 원하는 경우 port 번호를 변경할 수 있다.
- 데이터 전송은 클라이언트와 서버 간에 임의의 port 번호를 사용하는데 active, passive mode에 따라서 port를 열고 기다리는 측이 달라진다.
- FTP는 데이터 전송 방식
- Active mode에서는 데이터를 전송할 때 클라이언트 측에서 열어놓은 임의의 port에 서버가 접속한다.
- Passive mode에서는 데이터를 전송할 때 서버 측에서 열어놓은 임의의 port에 클라이언트가 접속한다.
- ProFTP는 널리 사용되는 FTP 서버이다. CentOS에서 yum 명령으로 ProFTP를 설치하기 위해서는 다음과 같은 명령을 순서대로 실행한다.
- cd /etc/yum.repos.d
- vi /etc/yum.repos.d/kbsingh-CentOS-Extras.repo 명령으로 파일을 편집하여 enabled = 0'을 'enabled = 1'로 고친다.
- yum -y install proftpd
- FTP 클라이언트
- FTP 클라이언트로 서버에 접속하여 'ftp>' 프롬프트에서 사용하는 명령 중 많이 사용하는 것은 다음과 같다. ▷ help : 사용할 수 있는 명령을 보여주고 각 명령의 사용법을 조회할 수 있다.
- dir : 작업 디렉터리의 내용을 보여준다.
- cd : 서버 측 작업 디렉터리를 변경한다..
- lcd : 클라이언트 측 작업 디렉터리를 변경한다.
- get : 파일을 remote 서버에서 local 클라이언트로 받는다.
- put : 파일을 local 클라이언트에서 remote 서버로 보낸다.
- mget : 여러 파일을 remote 서버에서 local 클라이언트로 받는다. 파일 이름에 wildcard 문자를 사용할 수 있다.
- mput : 여러 파일을 local 클라이언트에서 remote 서버로 보낸다. 파일 이름에 wildcard 문자를 사용할 수 있다.
- rompt : mget이나 mput에서 각각의 파일을 전송할 것인지 묻지 않도록 설정하는 'Interactive mode Off'나 전송 여부를 매번 묻도록 설정하는 'Interactive mode On'을 선택할 수 있다.
- 주요 FTP 클라이언트
- FileZilla : http://filezilla-project.org (공개 S/W)
- 알 FTP : http://www.altools.co.kr/Product/ALFTP_Intro.aspx (개인 사용자에게만 무료)
- Smart FTP : http://www.smartftp.com (유료)
- /usr/bin/ftp : 리눅스 기본 제공
- ftp.exe : Windows 기본 제공
- HTTP
- HTTP는 클라이언트와 서버 간의 요청(request)과 응답(response) 프로토콜이다. 일반적으로 클라이언트는 웹 브라우저이고 서버는 Apache와 같은 웹 서버이다. HTTP는 전송 프로토콜로 대부분 TCP를 사용하며 port 번호는 일반적으로 80번을 사용한다.
- HTTP 요청은 클라이언트가 서버에게 특정 자원(주로 웹 페이지)에 대한 요청 명령(GET, POST 등)을 보내는 것이다
- HTTP 응답은 클라이언트의 요청에 대한 서버의 응답이며 응답코드(200 OK, 404 Not Found 등)와 요청한 자원이 전달된다. 요청한 자원을 전달할 수 없을 경우 오류코드가 반환된다.
- HTTP/1.0까지는 한 쌍의 요청과 응답이 끝나면 TCP 연결을 끊어졌지만 1.1 버전부터는 keep-alive 기능이 제공되어 클라이언트가 한 번의 연결로 서버에게 여러 번 요청을 보내고 응답을 받을 수 있다.
- HTTP는 상태 정보를 유지하지 않는 stateless 프로토콜이다. 따라서 로그인 등의 상태 정보를 표현하기 위하여 cookie, session 등이 필요하다.
- APM
- 설치
- 설치 진행은 Apache, MySQL, PHP 순으로 설치
- yum -y install mttpd
- yum -y install mysql
- yum -y install php
- 관련 라이브러리
- yum -y install gd gd-devel
- yum -y install libpng [libpng/libjpeg]-devel
- yum -y install freetype freetype-devel
- yum -y install fontconfig fontcpnfig-devel
- yum -y install libxml2 libxml2-devel
- yum -y install openssl openssl-devel
- yum -y install gmp gmp-devel
- yum -y install mhash mhash-devel
- yum -y install libmcrypt libmcypt-devel
- yum -y install mysql-server
- yum -y install php-[mysql/devel/gd/mbstring/mhash]
- APM의 구성요소는 Apache HTTP 서버, PHP 스크립트 처리기, MySQL 데이터베이스관리시스템이다.
- 클라이언트가 웹 문서를 Apache 웹 서버에게 요청하면 웹 문서 내에 있는 PHP 스크립트가 PHP 모듈 등에 의하여 처리되고 HTML 문서가 생성되어 클라이언트에게 응답으로 보내진다.
- PHP 스크립트 처리 과정에 MySQL 데이터베이스에 접근하여 데이터를 검색하거나 추가, 변경, 삭제하는 등 질의를 수행할 수 있다.
- Apache HTTP 서버
- Apache는 현재 가장 널리 사용되는 웹 서버이다. Apache Software Foundation에 의해 개발되고 관리된다.
- Apache Tomacat은 Apache 웹 서버와 다르다. Apache Tomcat은 Java Servlet과 JSP(JavaServer Pages) 기능을 제공하는 서버이다.
- PHP 스크립트 처리기
- PHP(PHP: Hypertext Processor)는 동적으로 웹 페이지를 생성할 수 있게 고안된 HTML 내장 스크립트 언어이다. 공개 소프트웨어이며 the PHP Group에 의하여 관리된다.
- PHP의 시초인 PHP/FI(Personal Home Page / Forms Interpreter)는 1995년에 Rasmus Lerdorf에 의해 만들어졌고 현재 PHP의 모습을 가진 PHP3는 1997년 Andi Gutmans 와 Zeev Suraski에 의해 완전히 재 작성되었다.
- PHP5는 Zend 2.0 엔진 기반의 객체지향 프로그래밍 모델을 지원한다.
- MySQL 데이터베이스관리시스템
- MySQL Community Server는 공개 소스 데이터베이스 관리 시스템이다. MySQL Enterprise Edition은 유료로 제공된다.
- MySQL은 C, C++, C#, Java, PHP 등 다양한 프로그래밍 언어 인터페이스를 제공한다.
- MySQL은 1995년 설립된 MySQL AB에 의해 개발되었으며 2008년 Sun Microsystem이 MySQL AB를 인수하였고 2010년 Oracle Corporation이 Sun Microsystem을 인수하였다.
- Apache 웹 서버의 설정파일 및 주요 설정항목
- Apache 웹 서버의 설정파일은 httpd.conf이며 Apache 서버가 /etc/httpd에 설치되었을 경우 /etc/httpd/conf 디렉터리에 위치한다.
- httpd.conf 파일에서 설정할 수 있는 주요 설정항목
- ServerRoot : Apache 서버가 설치된 디렉터리
- KeepAlive : 클라이언트와 한 번의 연결로 서버와 여러 번의 요청과 응답을 주고받을 수 있도록 지속적인 연결을 허용할지 여부
- KeepAliveTimeout : 클라이언트와 지속적인 연결을 유지할 최대 대기 시간
- MaxRequestsPerChild : 자식 서버 프로세스를 종료하기 전에 처리할 최대 요청 수, 자식 서버 프로세스가 처리한 요청 수가 MaxRequestsPerChild 값을 초과하면 프로세스를 종료시킴
- StartServers : 초기에 생성하는 자식 서버 프로세스 수
- MinSpareServers / MaxSpareServers : 유휴 자식 서버 프로세스 수가 부족 또는 초과 시 자식 서버 프로세스를 생성하거나 종료시키는 기준
- Listen : 서버가 사용할 TCP port 번호, 일반적으로 80번을 사용함
- DocumentRoot : 웹 페이지의 문서가 위치하는 디렉터리
- UserDir : 리눅스 사용자별 웹 문서의 기본 디렉터리 위치
- DirectoryIndex : 클라이언트가 요청한 경로에 파일 이름이 포함되지 않았을 경우 기본으로 사용할 웹 페이지 파일 이름
- APM 연동
- Apache 웹 서버는 httpd.conf 파일(보통 /etc/httpd/conf 디렉터리에 위치)의 설정항목에서 DocumentRoot로 지정된 디렉터리에서 웹 문서를 찾는다. DocumentRoot 값은 보통 /var/www/html 이다.
- DocumentRoot가 /var/www/html인 경우 /var/www/html/index.html, /var/www/html/phpinfo.php 등의 파일을 생성하고 웹 브라우저 주소창에 'http://localhost', 'http://localhost/phpinfo.php' 등을 입력하여 시험한다.
- APM 연동을 시험하는데 사용할 수 있는 PHP 명령과 함수
- echo 명령
- echo는 표현식의 값을 문자열로 출력하는 명령이다.
- phpinfo() 함수
- phpinfo()는 PHP의 설정 상태를 보여주는 웹 페이지를 생성하는 함수이다.
- Apache 웹 서버와 PHP의 연동을 시험할 수 있는 함수이다.
- mysql_connect() 함수
- PHP에서 MySQL DBMS와 연결하는 함수이다.
- $connection = mysql_connect("locahost", "root", "***")과 같이 host명, 사용자명, 암호를 인수로 사용하며 성공하면 DB연결 식별자를 반환하며 실패하면 FALSE를 반환한다.
- mysql_select_db() 함수
- 연결된 DBMS에서 DB를 선택하는 함수이다.
- mysql_select_db('test_db', $connection)와 같이 DB명과 DB연결 식별자를 인수로 사용한다.
- mysql_query() 함수
- SQL 질의를 수행하는 함수이다.
- $result = mysql_query("SELECT * FROM test_table", $connection)과 같이 질의문과 DB연결 식별자를 인수로 사용한다. SELECT문의 경우 성공하면 질의 결과가 반환되며 INSERT, DELETE, UPDATE문의 경우 성공하면 TRUE가 반환된다. 어느 경우에나 실패하면 FALSE가 반환된다.
- SELECT문의 경우 반환된 레코드(row)의 개수는 mysql_num_rows() 함수로 알 수 있고 mysql_fetch_array() 함수, mysql_result() 함수 등을 이용하여 각 레코드의 필드(column) 값을 얻을 수 있다.
- INSERT, DELETE, UPDATE문의 경우 mysql_affected_rows() 함수로 영향을 받은 레코드(row)의 수를 알 수 있다.
- 메일 서버의 기능과 종류
- 메일 서버는 Mail Transfer Agent(MTA)라고 하며 메일을 송수신하는 서버 프로그램이다.
- MTA는 Simple Mail Transfer Protocol(SMTP)를 이용하여 클라이언트로부터 메일을 받거나 다른 서버에게 메일을 전송한다.
- SMTP는 TCP port 25번을 사용하였으나 최근에는 TCP port 587번을 사용하는 경우도 많이 있다.
- 널리 사용되는 메일 서버의 종류는 다음과 같은 것이 있다.
- Sendmail : 메일 서버 중 현재 가장 많이 사용됨
- Qmail : sendmail보다 기능적인 장점이 많으며 사용자가 늘어나고 있음
- MS Exchange Server : Microsoft의 메일 서버
- Sendmail의 주요 설정항목
- 설정파일은 보통 /etc/mail 디렉터리에 위치한 sendmail.cf 이다.
- 메일 중계(relay) 규칙 지정 파일 설정 스팸 메일을 전송을 막기 위하여 relay 규칙을 지정할 수 있다.
- /etc/mail/relay-domains 또는 /etc/mail/access 파일을 이용하도록 다음과 같이 'FR-o /etc/mail/relay-domains', 'Kaccess hash /etc/mail/access'로 설정한다.
- /etc/mail/relay-domains 파일에 relay 규칙을 설정하였을 경우 sendmail 서버를 다시 시작 하여야 하며 /etc/mail/access 파일에 설정한 경우 서버를 다시 시작할 필요는 없으나 access 파일 변경 후 makemap 명령으로 /etc/mail/access.db 파일을 다시 생성하여야 한다.
- 메일 전달(forward) 규칙 지정 파일 설정 받은 메일을 다른 메일 주소로 보내도록 forwarding 규칙을 지정할 수 있다.
- 일반적으로 사용자 홈 디렉터리의 .foward 파일에 규칙을 지정할 수 있도록 'O ForwardPath=$z/.forward.$w:$z/.forward'와 같이 설정한다.
- 메일 최대 크기 설정
- O MaxMessageSize=1000000'와 같이 메일의 최대 크기를 설정한다.
댓글
댓글 쓰기