[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를 설치하기 위해서는 다음과 같은 명령을 순서대로 실행한다.
    • 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'와 같이 메일의 최대 크기를 설정한다.

댓글

이 블로그의 인기 게시물

[유니티] 오류 사례 "Moving file failed", "Temp"

[유니티 사례] 비주얼 스튜디오(Visual Studio) 실행 오류

[유니티] 구글 지도 출력 샘플