1.55k likes | 1.89k Views
UNIX. 이 재 광 한남대학교 컴퓨터공학과. 목 차. 1. 유닉스란 ? 2. 일반 사용자를 위한 유닉스 3. 유닉스 쉘 4. 유틸리티 5. 네트워킹. 1. 유닉스란 ?. 정 의 AT&T 의 Bell 연구소에서 개발된 하나의 운영체제 역 사 1960 년대 초 MIT, Bell 연구소 등이 공동으로 MULTICS 개발 1969 년 Bell 연구소의 Ken Thompson 이 MULTICS 를 기초로 Unics 개발 , 이후로 UNIX 로 수정
E N D
UNIX 이 재 광 한남대학교 컴퓨터공학과
목 차 1. 유닉스란? 2. 일반 사용자를 위한 유닉스 3. 유닉스 쉘 4. 유틸리티 5. 네트워킹
1. 유닉스란? • 정 의 AT&T의 Bell 연구소에서 개발된 하나의 운영체제 • 역 사 • 1960년대 초 MIT, Bell 연구소 등이 공동으로 MULTICS 개발 • 1969년 Bell 연구소의 Ken Thompson이 MULTICS를 기초로 Unics개발, 이후로 UNIX로 수정 • 1973년 Dennis Ritchie가 Unix를 C언어로 개정
1. 유닉스란?(계속) • UNIX의 특징 • 다중 사용자(Multiuser)와 멀티 태스킹(Multitasking)기능을 가진 대화형 시스템 • 이식성과 확장성 용이 • 트리 형태의 계층적 구조로 된 파일 시스템 • 네트워킹 기능 • 자원의 공유 • 프로세스가 CPU시간을 “시간조각”으로 나누어 CPU를 공 유한다. • 메모리를 페이지 단위로 나누어 프로세스간에 공유한다.
유닉스 System V 계열 (AT&T의 Bell연구소) BSD 계열 (Berkeley 대학) V.2 V.2 IBM AIX V.3 V.3 Apollo V.4 OSF/1 V.4.1 Sun OS (Solaris) HP/UX 1. 유닉스란?(계속) • UNIX의 계보
파일 시스템 쉘 커널 H/W 1. 유닉스란?(계속) • 유닉스 시스템의 구성
1. 유닉스란?(계속) • 커널(Kernel) • 운영체제의 핵심 부분 • 디바이스, 메모리, 프로세서, 데몬(daemon)을 관리 • 응용프로그램과 시스템간에 정보 전송을 제어 • 쉘(Shell) • 표준 유닉스 명령 인터프리터(Interpreter) • 사용자와 커널간의 인터페이스 담당
/ usr bin test.c doc james glass myfile.txt 디렉토리 계층 구조 1. 유닉스란?(계속) • 파일 시스템( File system) • UNIX 시스템의 파일은 디렉토리로 분류 • UNIX 파일 시스템은 트리 구조
디렉토리 의 미 / Unix커널의 실행 파일 및 시스템관리에 필요한 파일 포함 /bin Unix의 기본 명령어 파일 포함 /etc 시스템 관리용 명령어나 데이터 파일 포함 /lib 명령어가 사용하는 기본적인 파일 포함 /temp 임시 파일을 위한 디렉토리 /usr 일반적으로 시스템 관리자 파일 포함 1. 유닉스란?(계속) • 파일의 종류 • 일반(Ordinary)파일 a.txt, index.html와 같은 일반파일 • 디렉토리(Directory) 파일
디렉토리 의 미 /usr/bin 워드, DB 관리 프로그램과 개발된 프로그램 등 포함 /usr/home 사용자의 홈 디렉토리 /usr/include 시스템 관리용 명령어나 데이터 파일 포함 /usr/man 명령어가 사용하는 기본적인 파일 포함 /usr/spool 임시 파일을 위한 디렉토리 /usr/adm 일반적으로 시스템 관리자의 파일 포함 1. 유닉스란?(계속) • 특수 파일 • 프린터, 터미널, 디스크 등의 입출력 장치를 접근하고, 관리하는 • 채널에 대한 정보를 가지고 있는 파일
1. 유닉스란?(계속) • 파일명과 경로명 • 파일명(File name) • 255문자이내에서 사용 가능 • 대,소문자 구분 • “.”, “_”로 시작되는 파일명은 시스템 파일들이 많이 사용하기 때문에 사용하지 않는 것이 바람직하다. • 경로명(Path name) • 절대 (Absolute)경로: 루트 디렉토리로부터 목적 경로 이름 • 상대 (Relative)경로: 현재 디렉토리로부터 목적 경로 이름
1. 유닉스란?(계속) / usr bin File C 현재 위치 File B kim kang . : 현재 디렉토리 .. : 부모 디렉토리 File A 화 일 절대 경로 이름 화 일 상대 경로 이름 File A A /usr/kim/ File A A .. / File B B /usr/ File B B /bin/ File C .. /.. /bin/ File C C C
2. 일반 사용자를 위한 유닉스 • 시동과 종료 • 로그인(login) • 사용자ID와 패스워드를 입력 • 사용자ID는 다른 사용자와 구분해 주는 고유 이름 login: // 사용자ID 입력 password: // 사용자 패스워드 입력
2. 일반 사용자를 위한 유닉스(계속) • 로그인 실패 시 • 로그인 후 첫번째 메시지 Login incorrect login://다시 로그인 시도 Last login: Mon Mar 8 16:13:30 from netwk.hannam.ac.kr Sun Microsystems Inc. SunOS 5.5.1 Generic May 1996 # _
2. 일반 사용자를 위한 유닉스(계속) • 패스워드 설정과 변경 • 일반적으로 6문자 이상 입력 • /etc/passwd에 암호화된 형태로 저장 # passwd passwd: Changing password for james Enter login password: // 현재 패스워드 입력 New password: // 새로운 패스워드 입력 Re-enter new password: // 새로운 패스워드 재입력 # _
2. 일반 사용자를 위한 유닉스(계속) • 로그아웃(logout) 사용자가 컴퓨터 시스템 사용을 종료하고자 할 경우, 그 시스템으로 부터 빠져 나오는 과정 # logout 또는 # exit 또는 # ^D
2. 일반 사용자를 위한 유닉스(계속) • 유닉스 명령 형식 • 명령어는 반드시 소문자로 입력한다. • 명령어와 옵션, 옵션과 인수 사이에는 한 개 이상의 공백이 있어야 한다. 명령어[ - 옵션인수] 명령 수행의 대상 명령 수행의 방법 작업 지시어
2. 일반 사용자를 위한 유닉스(계속) • 온라인 도움말 정보(man: manual page) man [ chapter ] word man -k keyword -k: 키워드 검색 • # man -k mode //키워드를 mode로 가지는 도움말 정보 출력 chmod chmod (1) - change the permissions mode of file chmod chmod (2) - change access permission mode of a file def_prog_mode curs_kernel (3x) - low-level curses routines def_shell_mode curs_kernel (3x) - low-level curses routines ….
2. 일반 사용자를 위한 유닉스(계속) • 특수 문자 (메타 문자) • 터미널에 입력되었을 때 특수하게 해석되는 문자 • 메타 문자 목록 얻기 stty all or -a //모든 메타 문자 목록 얻기
2. 일반 사용자를 위한 유닉스(계속) # stty -a // 모든 메타 문자 목록 출력 erase kill werase rprnt flush lnext susp intr quit stop eof ^H ^U ^W ^R ^O ^V ^Z/^Y ^C ^\ ^S/^Q ^D # stty kill ^k // 줄 삭제를 ^k로 변경 # stty -a erase kill werase rprnt flush lnext susp intr quit stop eof ^H ^k ^W ^R ^O ^V ^Z/^Y ^C ^\ ^S/^Q ^D # _
2. 일반 사용자를 위한 유닉스(계속) • 프로세스의 종료: Control-C 작업 완료 이전에 프로세스의 종료 • # man man //man에 대한 도움말 정보 man(1) User Commands man(1) NAME man - find and display reference manual pages SYNOPSIS man [ - ] [ -adFlrt ] [ -M path ] [ -T macro-package ] [-s section ] name ... man [ -M path ] -k keyword … ^c // 작업의 종료 # _
2. 일반 사용자를 위한 유닉스(계속) • 출력의 정지: Control-S / Control-Q • ^S: 터미널 출력의 일시 중시 • ^Q: 터미널 출력의 재개 • # man ls ls(1) User Commands ls(1) NAME ls - list contents of directory SYNOPSIS ^S //터미널 출력의 일시 중지 ^Q // 터미널 출력의 재개 /usr/bin/ls [ -aAbcCdfFgilLmnopqrRstux1 ] [ file... ] /usr/xpg4/bin/ls [ -aAbcCdfFgilLmnopqrRstux1 ] [ file... ] SUNWcsu
2. 일반 사용자를 위한 유닉스(계속) • 입력의 끝: Control-D # cat > test In my dreams that fill the night, I see our eyes ^D // 입력의 끝 # _
2. 일반 사용자를 위한 유닉스(계속) • 작업 디렉토리 확인(Print Working Directory) pwd # pwd // 현재 작업 디렉토리를 출력 /user/james # _
cat -n { filename } -n: 출력에 줄 번호 표시 2. 일반 사용자를 위한 유닉스(계속) • 화일 생성: cat 표준 입력이나 파일로부터 입력 받아 이를 표준 출력에 표시한다. # cat > test // 키보드 입력을 test파일에 저장 hi! I hope that you get this file. ^D # cat -n test //줄 번호를 포함한 파일의 내용보기 1 hi! 2 I hope that you get this file. # _
2. 일반 사용자를 위한 유닉스(계속) # cat test // 줄번호를 포함시키지 않고, test파일 보기 hi! I hope that you get this file. # _
2. 일반 사용자를 위한 유닉스(계속) • 디렉토리 내용 보기: ls ls -adglsFR {filename} {directoryname} -a : 숨겨진 파일 나열 -d: 디렉토리 자체의 상세 정보 -g: 파일의 그룹 정보 -l: 허가정보, 소유권, 최종변경일자를 포함하는 긴 목록 제공 -s: 파일들이 차지하는 크기를 디스크 블록 단위로 제공 -F:파일 이름 다음에 파일의 특성을 나타내기 위한 문자 제공 -R: 디렉토리의 내용과 그 서브 디렉토리의 내용을 재귀적으로 제공
2. 일반 사용자를 위한 유닉스(계속) # ls // 현 디렉토리의 모든 파일 출력 heart heart1 heart2 tmp # ls -a // 숨겨진 파일 출력 . .. heart heart1 heart2 tmp # ls -l // 허가정보, 소유권 등을 포함한 긴 목록 제공 -rw-r--r-- 1 james netwk 106 5월 16일 14:25 heart -rw-r--r-- 2 james netwk 135 5월 27일 11:19 heart1 -rw-r--r-- 2 james netwk 133 5월 27일 11:19 heart2 drwxr-xr-x 2 james netwk 512 5월 27일 16:55 tmp # ls -R // 디렉토리 내용과 그 서브 디렉토리 내용을 재귀적으로 출력 . : heart heart1 heart2 tmp . /tmp: test1 test2 test3 # _
more -f { +lineNumber} {fileName} -f: 긴 라인을 연속적으로 출력 +lineNumgber: 시작 번호 명시, 디폴트는 첫번째 줄부터 시작 2. 일반 사용자를 위한 유닉스(계속) • 파일의 내용보기: more/ page/ head/ tail • more: 한번에 한 페이지씩 출력 • page: 각 페이지를 화면에 표시하기 전에 전체 화면을 지우는 것을 제외하고는 more와 동일
head -n {fileName} -n: n 번째 라인까지 출력, 디폴트는 10 tail -n {fileName} -n: 마지막 줄에서 n번째 라인의 줄부터 출력 2. 일반 사용자를 위한 유닉스(계속) • head: 파일의 처음 n줄을 출력 • tail: 파일의 마지막 n 줄부터 출력
2. 일반 사용자를 위한 유닉스(계속) # cat > heart //heart 파일 생성 I hear her breathing, I'm surrounded by the sound. Floating in this secret place, I never shall be found. ^D # head -2 heart //heart 파일의 첫번째 두줄 출력 I hear her breathing, I'm surrounded by the sound. # tail -2 heart // heart 파일의 마지막 두줄 출력 Floating in this secret place, I never shall be found. # _
2. 일반 사용자를 위한 유닉스(계속) • 파일의 이름 변경 및 이동: mv mv -i oldfile newfile // oldfile을 newfile로 변경 mv -i {filename} directoryname // filename을 directoryname으로 이동 mv -i olddirectory newdirectory // olddirectory을 newdirectory로 변경 -i : 새로운 파일 이름이 이미 존재하는 경우를 위한 확인 프롬프트 생성
2. 일반 사용자를 위한 유닉스(계속) # ls -R // 현재 디렉토리 목록을 재귀적으로 출력 . : old.txt tmp ./tmp: test # mv old.txt new.txt // old.txt를 new.txt로 이름을 변경 # ls new.txt tmp # mv tmp temp // tmp 디렉토리를 temp 디렉토리로 변경 # ls new.txt temp # mv -i new.txt temp // new.txt를 temp 디렉토리로 이동 # ls -R . : temp ./temp: new.txt test # _
2. 일반 사용자를 위한 유닉스(계속) • 디렉토리 만들기: mkdir mkdir Directoryname # ls -l -rw-r--r-- 1 james netwk 133 5월 27일 11:19 temp.txt # mkdir newdir // newdir 디렉토리 생성 # ls -l drwxr-xr-x 2 james netwk 512 5월 30일 22:01 newdir -rw-r--r-- 1 james netwk 133 5월 27일 11:19 temp.txt # _
2. 일반 사용자를 위한 유닉스(계속) • 다른 디렉토리로 이동: cd cd [Directoryname] Directoryname의 인수가 없는 경우에, 사용자의 홈 디렉토리로이동 # pwd /user/james/tmp # cd temp //temp디렉토리로 이동 # pwd /user/james/tmp/temp # cd // 사용자의 홈 디렉토리로 이동 # pwd /user/james # _
2. 일반 사용자를 위한 유닉스(계속) • 파일 복사: cp cp -i oldfile newfile cp -r olddirectory newdirectory - i : 이미 존재하는 경우를 위한 확인 옵션 - r : olddirectory내에 있는 모든 파일과 서브디렉토리를 재귀적 으로 newdirectory에 복사
2. 일반 사용자를 위한 유닉스(계속) • # ls -l drwxr-xr-x 2 james netwk 512 6월 17일 10:30 tmp -rw-r--r-- 1 james netwk 124 6월 17일 19:37 text • # cp text newtext // text를 newtext로 복사 • # ls • text newtext tmp • # cd tmp • # ls -l drwxr-xr-x 2 james netwk 512 6월 20일 19:37 sub_tmp -rwxr-xr-x 3 james netwk 215 6월 20일 10:30 data.txt # cd .. # cp -r tmp tmp2 // tmp를 tmp2에 재귀적으로 복사 # cd tmp2 # ls -l drwxr-xr-x 2 james netwk 512 6월 22일 16:07 sub_tmp -rwxr-xr-x 3 james netwk 215 6월 22일 16:07 data.txt # _
2. 일반 사용자를 위한 유닉스(계속) • 디렉토리 제거 rmdir {directoryname} • 디렉토리가 제거 되기 전, 그 디렉토리내에 있는 모든 파일은 제거되 • 어야 한다. • rm -r : 디렉토리와 그 내용 모두를 재귀적으로 제거 # rmdir temp rmdir: 디렉토리 ”temp": 디렉토리가 비어 있지 않음 # rm -r temp # ls # _
-f : 어떤 에러 메시지나 지시 사항도 나타내지 않는다. -r: 서브디렉토리를 포함한 모든 내용을 재귀적으로 삭제 -i: 화일 삭제 전 사용자에게 확인 요구 2. 일반 사용자를 위한 유닉스(계속) • 파일의 삭제 rm -fir {filename} # ls file1 file2 file3 # rm * //해당 디렉토리내의 모든 파일 삭제 # ls -a . .. // 해당 디렉토리내에 파일이 존재하지 않음 # _
2. 일반 사용자를 위한 유닉스(계속) • 파일 내 단어 수 세기: wc wc -lwc {filename} - l : 줄 수 - w : 단어 수 - c : 문자 수 • # cat heart I hear her breathing, I'm surrounded by the sound. Floating in this secret place, I never shall be found. # wc -lwc heart 4 19 106 heart // 줄, 단어, 문자 순으로 출력 # _
필드 값 -rw-r--r-- 1 james netwk 106 5월 16일 14:25 heart 2. 일반 사용자를 위한 유닉스(계속) • 화일 속성 • 필드의 속성 # ls -l heart -rw-r--r-- 1 james netwk 106 5월 16일 14:25 heart 의 미 허가권 모드 하드 링크 갯수 파일 소유자의 사용자 ID 파일의 그룹ID 파일의 크기, 단위는 바이트 파일이 마지막으로 변경된 시간 파일 이름
문 자 파일 유형 - 일반 파일 d 디렉토리 파일 b (디스크 드라이브와 같이) 버퍼된 특수 파일 c (터미널 같이) 버퍼되지 않은 특수 파일 l 심볼릭 링크 p 파이프 s 소켓 2. 일반 사용자를 위한 유닉스(계속) • 파일 유형 첫번째 필드의 첫번째 문자는 다음과 같이 부호화된 파일의 유형을 나타내고 있다.
읽 기 허가 쓰기 허가 실행 허가 r w x 2. 일반 사용자를 위한 유닉스(계속) • 화일 허가권 • 하드 링크 계수 : 얼마나 많은 레이블이 동일한 물리적 파일을 가리키는 가를 표시 r w - r - - r - x User group others
2. 일반 사용자를 위한 유닉스(계속) • 그룹 목록 보기: groups groups [userID] # groups netwk # _
2. 일반 사용자를 위한 유닉스(계속) • 파일 그룹 변경: chgrp chgrp -R groupID {fileName} -R: 디렉토리내에 있는 모든 파일의 그룹을 재귀적으로 변경 # ls -l heart -rw-r--r-- 1 kang netwk 106 5월 16일 14:25 heart # chgrp ce heart // 파일의 그룹을 ce로 변경 # ls -l -rw-r--r-- 1 kang ce 106 5월 17일 10:05 heart
2. 일반 사용자를 위한 유닉스(계속) • 화일의 허가권 변경: chmod • mode chmod -R mode {filename} -R: 디렉토리내에 있는 파일 모드를 재귀적으로 변경 형식: 대상 + 허가권 대상 - 허가권 대상 = 허가권 대상: u(user), g(group), o(others), a(all) 허가권: r(read), w(wirte), x(excute)
허가권모드 요구 사항 g+w 그룹 쓰기 허가권 추가 u-rw 사용자 읽기 및 쓰기 허가권 제거 a+x 모든 사람에게 실행 허가권 추가 2. 일반 사용자를 위한 유닉스(계속) • mode 예
2. 일반 사용자를 위한 유닉스(계속) # ls -l heart -rw-r--r-- 1 kang netwk 106 5월 16일 14:25 data.txt # chmod g+w data.txt //그룹에게 쓰기 허가권 부여 # ls -l data.txt -rw-rw-r-- 1 kang netwk 106 5월 16일 14:25 data.txt # chmod +x data.txt // 실행 허가권을 모두에게 부여 # ls -l data.txt -rwxrwxr-x 1 kang netwk 106 5월 16일 14:25 data.txt # chmod -w data.txt // 모든 사람에게 쓰기 허가권 제한 # ls -l data.txt -r-xr-xr-x 1 kang netwk 106 5월 16일 14:25 data.txt
사용자(user) 그룹(group) 모든 사용자(all) 설정 rwx r-x --- 2진수 111 101 000 8진수 7 5 0 2. 일반 사용자를 위한 유닉스(계속) • 8진수를 이용한 파일 허가권 설정 • 각 8진수는 세 단위(u,g,a) 의 허가권을 나타낸다.
2. 일반 사용자를 위한 유닉스(계속) # ls -l heart -rw-r--r-- 1 kang netwk 106 5월 16일 14:25 heart # chmod 750 heart # ls -l heart -rwxr-x--- 1 kang netwk 106 5월 16일 14:25 heart # chmod 777 heart # ls -l heart -rwxrwxrwx 1 kang netwk 106 5월 16일 14:25 heart # chmod 111 heart # ls -l heart ---x--x--x 1 kang netwk 106 5월 16일 14:25 heart