750 likes | 1.02k Views
7. 유틸리티 (Utilities). 7.1 소개. 구분. Utilities. 구분. Utilities. grep, fgrep, egrep uniq (3 장 참조 ). compress, crypt, sed, uncompress, tr, ul. 화일 변환. 화일 여과. 화일 정렬. sort. 전자우편 검사. biff. cmp, diff. 화일 비교. 순수화일 내용보기. od. 화일 보관. tar, cpio, dump. 화일시스템 마운팅. mount, umount. su.
E N D
7.1 소개 구분 Utilities 구분 Utilities grep, fgrep, egrep uniq (3장 참조) compress, crypt, sed, uncompress, tr, ul 화일 변환 화일 여과 화일 정렬 sort 전자우편 검사 biff cmp, diff 화일 비교 순수화일 내용보기 od 화일 보관 tar, cpio, dump 화일시스템 마운팅 mount, umount su 사용자 대치 화일 보관 find whoami 셀 확인 명령어 스케줄 at, cron, crontab 텍스트 처리 awk (3장 참조) 문서 준비 nroff,spell,style,troff 하드 및 소프트링크 ln 7. 유틸리티
7.2 파일 여과 • 패턴여과 : egrep/fgrep/grep • 명시된 패턴(pattern)이 없는 줄만을 여과 • 반복 줄 제거 : uniq • 인접한, 반복줄을 여과 7. 유틸리티
7.3 화일 정렬 : SORT sort [ -tc -r ] {sortField -b -f -M -n}* {fileName}* -tc 정렬을 위한 비교 항목들을 구분하는 문자를 c로 새로이 설정 (default: 이 옵션이 생략되어있으면, blank 나 tab 으로 구분한다) -r 내림차순으로 정렬 (default: ASCII 표에 의한 오름차순) -b 줄의 앞부분에 있는 공백을 무시 (default: blank도 정렬시 비교대상임) 7. 유틸리티
7.3 화일 정렬 : SORT -f 대소문자를 무시하고 정렬 -M 월(month)순으로 정렬 -n 숫자의 크기 순으로 정렬 sortField 특정항목을 기준으로 정렬하도록 지정 (다수 항목 지정 가능)"-number1 +number2"의 형태 number1은 시작 항목 번호를, number2는 정지 항목번호를 나타냄, 시작 항목 번호는 0부터 시작 (즉, -0 은 첫 번째 항목을 가리킴), 정지 항목 번호는 정렬 대상 에서 제외되며 생략시 모든 항목이 포함 7. 유틸리티
7.3 화일 정렬 : SORT (예) $ sort -r sortfile →역순으로 정렬 $ sort +0 -1 sortfile [1-c7p293] → 첫 번째 항목만을 기준으로 정렬 $ sort +0 -1 -bM sortfile →첫 번째 항목만을 기준으로 정렬하되, 줄의 앞부분에 나오는 공백을 무시하여 첫 번째 항목을 잡는다. 그리고 이를 월별로 정렬 7. 유틸리티
7.3 화일 정렬 : SORT $ sort +0 -1 -bM +4 -n sortfile →공백을 무시하면서 첫 번째 항목을 기준으로 월별로 정렬한 후, 그후에 다섯 번째 항목이하를 숫자 크기로 추가로 정렬 $ sort -t; +0 -1 -bM +2 -n sortfile →항목 구분을 ':'로 한다. 공백을 무시하여 첫 번째 항목을 월별로 정렬한 후, 세 번째 항목 이하를 숫자 크기로 추가 정렬 7. 유틸리티
7.4 파일 비교 • cmp 두 화일의 동일성을 검사하여, 차이가 생기는 첫 번째 바이트를 보여 줌 • diff 두 화일을 비교하여 한 파일을 다른 화일로 전환하는 편집 변경을 행할 때에 필요한 동작 목록을 보여 줌 (3종류의 편집변경이 제공됨) 7. 유틸리티
7.4 화일 비교 • cmp [-l -s] fileName1 fileName2 [offset1 offset2] • 내용이 동일하면, 종료값은 0으로서, 출력으로는 아무 것도 보여주지 않슴 • 다르면, 종료값은 1으로서, 출력으로는 일치하지않은 첫 번째 바이트의 옵셋 (offset: 문자의 순서값)과 위치한 줄 번호을 보여줌 • 만일 어느 한 쪽 화일이 짧으면, 짧은 쪽 화일 이름 앞에 EOF 메시지를 붙임 7. 유틸리티
7.4 화일 비교 -l 일치하지않는 모든 바이트들에 대한 옵션과 각각의 문자값을 보여줌 -s 모든 출력을 금지한다(sillent) offset1 fileName1의 비교 시작 위치에 대한 옵셋 offset2 fileName2의 비교 시작 위치에 대한 옵셋 7. 유틸리티
7.4 화일 비교 (예) $ cmp lady1 lady2 $ cmp lady3 lad $ cmp -l lady1 lady2 7. 유틸리티
7.4 화일 비교 • diff [ -i -Dflag ] fileName1 fileName2 -i 대소문자의 구분을 무시한다(ignore) -Dflag C preprocessor를 위한 출력을 생성 • 출력 형태 1: 첨가(addition) firstStart a secondStart, secondStop > 두 번째 화일에서 첫 번째 파일로 첨가 되어야 할 부분 7. 유틸리티
7.4 화일 비교 • 출력 형태 2: 삭제(deletion) firstStart, firstStop d lineCount < 첫 번째 화일에서 제거되어야할 줄들 • firstStart와 firstStop는 첫 번째 화일의 줄번호 를 의미하고 secondStart와 secondStop는 두 번째 화일의 줄번호를 의미 7. 유틸리티
7.4 화일 비교 • 출력 형태 3: 변경(change) firstStart firstStop c secondStart, secondStop < 첫 번째 화일에서 치환되어야할 줄 --- > 치환을 위하여 사용되어야할 두 번째 파일 의 줄 7. 유틸리티
7.4 화일 비교 (예) $ diff lady1 lady2 → 3c3 $ diff lady2 lasy3 → 3a4,6 $ diff lady3 lady4 → 2,4d1 $ diff -Dflag lady3 lady4 → #ifndef flag …… #endif flag를 이용 하여 전처리기 대상 생성 7. 유틸리티
7.5 화일 보관 • 화일을 보관하는 이유 ① backup(정기적, 보관용) ② 네트워크 연결이 안된 컴퓨터로의 데이터 전송 • cpio : 화일 복사용. 오직 하나의 backup volume으로 저장한다. 소규모 백업에 적당 7. 유틸리티
7.5 화일 보관 • tar tape에 화일을 보관함. 추가 저장시 항상 뒷 부분에 저장됨. 오직 하나의 backup volume으로 저장. 소규모 백업에 적당 • dump/restore 시스템 관리자가 전체 시스템을 백업하고 추출 하는데 사용. 개개의 화일을 다루는 데는 불편 하지만, 정기적 시스템 백업에 유용 7. 유틸리티
7.5 화일 보관 • cpio -ov > backupFile -o 표준 입력으로부터 복사(백업)할 화일명 의 목록을 받아 복사(ouput) -v 화일을 복사하는 동안 각 화일의 이름을 보여 줌(verbose) 7. 유틸리티
7.5 화일 보관 • cpio -idtu patterns < backupFile -i 표준 입력으로부터 cpio형식 파일(이전에 cpio로 저장된 화일)을 읽어서, 명시된 pattern에 일치하는 화일들 모두를 재생 (input) -d 필요하다면 디렉토리를 생성 -t 복사 대신 목차를 보여 줌 -u 무조건 복사 7. 유틸리티
7.5 화일 보관 • cpio -pl directory -p 표준 입력으로부터 복사(백업)할 화일명 목록을 받아서 이를 명명된 directory로 복사 (하나의 서브디렉토리 복사시 cp -r 명령이 더 간단) -l 물리적 복사 대신에 링크(link)를 만듦 결국 디스크 사용이 전혀 없슴 7. 유틸리티
7.5 화일 보관 (예) $ ls *.c | cpio -ov > backup $ cpio -i < backup $ find . -name \*.c -depth -print | cpio - ov >backup2 →패턴 *.c인 모든 화일들을 서브디렉토리를 포함 하여 백업 7. 유틸리티
7.5 화일 보관 $ find . -mtime -2 -print | cpio -p .. →현재의 디렉토리에 있는 화일들 중에서 지난 2일 동안 수정된 화일들을 부모 디렉토리에 복사함 $ find . -mtime -2 -print | cpio -pl .. →현재의 디렉토리에 있는 화일들 중에서 지난 2일 동안 수정된 화일들을 부모 디렉토리에 링크함 7. 유틸리티
7.5 화일 보관 • tar -cvf tarFileName fileList -c fileList에 대한 tar형식의 백업 화일을 생성(create) -v 진행되는 상황을 설명(verbose) -f tar형식의 백업 화일 이름을 지정 (default: /dev/rmt8) 7. 유틸리티
7.5 화일 보관 • tar -txru tarFileName [ fileList ] -t tar형식의 백업 화일 안에 어떤 것들이 들어 있는지 목차만 보임 (title) -x 백업 화일로부터 화일을 추출 복귀(extract) -r fileList를 기존의 백업 화일 뒤에 무조건 덧붙임(rear) -u 기존의 백업 화일에 이미 포함되어있는 ileList 중 수정된 화일들만을 백업 화일의 뒤에 덧붙임. 디렉토리가 있어도 recursive하게 적용 7. 유틸리티
7.5 화일 보관 (예) $ tar -cvf tarfile . $ tar -tvf tarfile $ tar -rvf tarfile reverse.c $ tar -uvf tarfile reverse.c $ tar -vxf tarfile ./tmp $ tar -xvf tarfile `tar -tf tarfile | grep '.*\.c'` → C 프로그램 화일들만을 추출한다 $ tar -vxf ../tarfile reverse.c 7. 유틸리티
7.5 화일 보관 • dump [level] [f dumpFile] [v] [w] fileSystem level 덤프의 수준을 지정. 명시된 level 보다 낮은 level에서 최근에 덤프한 이후에 수정된 모든 화일들만을 덤프시킴 (default 값: 9) 만일 level을 0으로 하면, 항상 모든 파일 들을 덤프하게 됨 7. 유틸리티
7.5 화일 보관 f 덤프될 화일(dumpFile)을 지정 (defautl: /dev/rmt8) v 화일을 덤프하는 동안 각 화일의 이름을 보여 줌(verbose) w 백업을 수행하는 대신, 덤프될 모든 화일의 목록을 보여준다 7. 유틸리티
7.5 화일 보관 • dump [level] [f dumpFile] [v] [w] {fileName }+ 지정된 화일들만을 덤프한다. (예) $ dump 0 fv /dev/rmt0 /dev/da0 →화일 시스템 /dev/da0를 테이프 드라이버 /dev/rmt0로 level 0 덤프 수행 7. 유틸리티
7.5 화일 보관 • restore -irtx [ f dumpFile ] { fileName }+ -i 대화형 복구. 사용자에게 복구할지 말지를 목록을 보여주면서 진행한다. -r dumpFile에 있는 모든 화일을 현재의 디렉토리로 복구 -t 복구는 하지않고 그 대신에 dumpFile 내용의 목록들만을 보여준다 -x 복구(extract) (예)$ restore -x f /dev/rmt0 wine.c hacking.c 7. 유틸리티
7.6 화일 탐색 • find pathList expression pathList 화일을 탐색할 경로의 리스트 (recursive search) expression -name pattern 화일 이름이 pattern과 일치하면 참(*, [, ], ? 포함 가능) -perm oct permission의 8진수 표현이 oct와 일치하면 참 -type ch 화일의 유형이 ch이면 참 (ch: b=block, c=char) 7. 유틸리티
7.6 화일 탐색 -user userId 화일의 소유자가 userId이면 참 -group groupId 화일의 그룹이 groupId이면 참 -atime count 접근(access)한 날 수가 count 이내이면 참 -mtime count 수정(modify)한 날 수가 count 이내이면 참 -ctime count 수정되고 화일의 속성이 바뀐 날수가 count이내이면 참 7. 유틸리티
7.6 화일 탐색 -exec command 수행 중인 command의 종료값이 0 이면 참. \;로 끝남 command의 argument가 {}이면, 현재 화일의 이름임 -print 현재 화일명을 프린트하고 참 값을 반환 -ls 현재 화일의 속성을 보여주고 참 값을 반환 7. 유틸리티
7.6 화일 탐색 -cpio device 현재의 화일을 cpio 형식으로 device에 쓰고 참 값 반환 !expression expression의 논리 부정 \( expr1 [-a] expr2 \) 두 expression의 and \( expr1 [-o] expr2 \) 두 expression의 or 7. 유틸리티
7.6 화일 탐색 (예) $ find . -name '*.c' -print →현재의 디렉토리나 그 서브디렉토리에서 모든 C 소스 프로그램을 찾아 그 화일명들을 프린트 $ find . -mtime 14 -ls →지난 14일 동안 수정된 화일들을 표시 $ find . -name '*.bak' -ls -exec rm {} \; → '.bak'으로 끝나는 화일들을 표시한 후에 제거함 $ find . \( -name '*.o' -o -name '*.txt' \) -print → '.o'로 끝나거나 '*.txt'로 끝나는 화일들의 이름을 프린트함 7. 유틸리티
7.7 명령 스케쥴링 • crontab cron에 의하여 일련의 작업이 주기적으로 실행되도록 함. cron은 단일 프로세스로서 시스템 시작부터 종료 까지 동작하는데, /var/spool/cron/crontabs 디렉토리에 복사 등록된 crontab 화일들을 수행함 • at 지정된 시간에 작업이 실행되도록 함 7. 유틸리티
7.7 명령 스케쥴링 • crontab crontabName cron 시스템에 의하여 사용되는 crontbaName의 crontab 화일을 등록 • crontab -l -e -r [ userName ] -l 등록된 crontab 화일의 내용을 보여준다 (list) -e 등록된 crontab 화일의 내용을 편집한다 (edit) -r 등록된 crontab 화일을 등록해제한다 (remove) userName 사용자만 자신의 crontab 화일을 소유하도록 함 7. 유틸리티
7.7 명령 스케쥴링 • crontab 화일의 형식 minute (0-59) hour (0-23) day (1-31) month (1-12) weekday (1-7, 1=Mon, 2=Tue, 3=Wed, 4=Thu, 5=Fri, 6=Sat, 7=Sun) command unix 명령어 7. 유틸리티
7.7 명령 스케쥴링 • 처음 다섯 항목에 *가 오면 항상 일치됨을 의미 • 명령의 표준 출력은 자동적으로 사용자에게 mail utility를 통하여 전송 • % 다음의 문자는 임시 화일에 복사되고, 명령의 표준 입력으로 사용됨 7. 유틸리티
7.7 명령 스케쥴링 (예) $ cat crontab.con 0 8 * * 1 echo Happy Monday Morning * * * * * echo One Minute Passed > /dev/tty01 30 14 1 1 * mail users % Jan Meeting At 3 pm →월요일 아침 8시에 전자 우편을 발송 매분마다 터미날 tty01에 에코함. 1월 1일 오후 2:30에 모든 사용자에게 임박한 회의르 상기시킴 7. 유틸리티
7.7 명령 스케쥴링 (예) $ crontab crontab.con $ crontab -l $ crontab -l mjkim →사용자별로 확인하는 것은 슈퍼유저만이 사용 가능 7. 유틸리티
7.7 명령 스케쥴링 • 개별 사용자가 crontab을 사용하는 것을 허용하거나 금지하는 방법 : /var/spool/cron/cron.allow와var/spool/cron/cron.deny (사용자 이름 목록) : 만일 두 화일이 모두 존재하지 않으면 슈퍼유저만 사용 가능함 : cron.allow가 존재하지않고 cron.deny가 비어있으면 모든 사용자가 사용가능 7. 유틸리티
7.7 명령 스케쥴링 • at -c -s -m time [date [, year] ] [ +increment] [script] -c 각 명령어가 C shell로 수행됨을 의미 -s 각 명령어가 Bourne shell로 수행됨을의미 -m 작업이 완료되면 전자우편을 보내도록 함 script script 화일로부터 작업을 읽는다 (default: 표준 입력) time HH 또는 HHMM의 형식 (am/pm이 뒤따름) now (지금) 7. 유틸리티
7.7 명령 스케쥴링 date 요일 또는 달의 처음 세 글자 today (오늘) tomorrow (내일) date 생략시, time이 현 시각보다 뒤이면 date는 today로, time이 현 시각보다 앞이면 date는 tomorrow로 간주 됨 increment 숫자[ minutes | hours | days | weeks | months | years ] 7. 유틸리티
7.7 명령 스케쥴링 • at -r { jobId }+ -r 명시된 작업을 at 큐로부터 제거 • at -l { jobId }* -l 뒤따르는 작업들의 목록을 보여 줌 7. 유틸리티
7.7 명령 스케쥴링 (예) $ at now =2 minutes at.csh $ at -l $ at 17:35 at.csh $ at 0934am Sep 18 at.csh $ at 9:34 Sep 18 , 1996 at.csh $ at 11:00pm tomorrow at.csh $ at 9pm Jan 13 at.csh $ at 10pm Wed at.csh 7. 유틸리티
7.7 명령 스케쥴링 (예) $ at 8am at> 명령어 입력 at> ^D $ cat at.csh #! /bin/csh date > /dev/tty1 # Reschedule Script at now +2 minutes at.csh 7. 유틸리티
7.7 명령 스케쥴링 • 개별 사용자가 at를 사용하는 것을 허용하거나 금지하는 방법 : /var/spool/cron/at.allow와 /var/spool/cron/at.deny (사용자 이름 목록) : 만일 두 화일이 모두 존재하지 않으면 슈퍼유저만 사용 가능함 : at.allow가 존재하지않고 at.deny가 비어있으면 모든 사용자가 사용 가능 7. 유틸리티
7.8 프로그램 가능한 텍스트 처리 • awk 7. 유틸리티
7.9 하드 링크와 소프트 링크: In • 하드 링크 : • 동일한 화일 시스템 내에서의 링크 여러개의 레이블 생성이 가능하나, 물리적 화일은 동일함 • 하드 링크가 추가될 때마다 링크 계수 항목이 증가 • 소프트 링크(심볼릭 링크) • 다른 파일 시스템들 간의 링크 • 링크 계수 항목이 증가하지 않고 대신에 permission에 l--- 식으로 기록됨 • ls -F 로 참조할 때 화일 이름 뒤에 @가 표시됨 7. 유틸리티
7.9 하드 링크와 소프트 링크: In • ln -f -s origial newLink -f 슈퍼유저가 디렉토리에 하드 링크를 생성할 수 있게 함 -s 소프트 링크로서 화일 시스템을 확장 가능 • ln -f -s { origial }+ driectory • 명시된 화일(original)들에 대한 링크 directory 상에 실행 7. 유틸리티