교재 : 리눅스 시스템 원리와 실제 (창병모, 생능출판)
9.1 명령어 스케줄링
1) 주기적 실행 : cron
- cron 시스템 : 유닉스의 명령어 스케줄링 시스템으로 crontab 파일에 명시된대로 주기적으로 명령을 실행한다.
- crontab 파일 등록법 : crontab 파일을 cron 시스템에 등록한다.
$ crontab 파일
- crontab 파일 : 7개의 필드로 구성 (분 시 일 월 요일 [사용자] 명령)
- crontab 명령어
$ crontab -옵션 [사용자]
- -l : 사용자의 등록된 crontab 파일 리스트를 보여준다.
- -e : 사용자의 등록된 crontab 파일을 수정 혹은 생성한다.
- -r : 사용자의 등록된 crontab 파일을 삭제한다.
ex) crontab 파일 예시
30 1 * 2,4,5,8,10,12 3-5 /usr/bin/wall /var/tmp/message
: 2개월마다 수요일부터 금요일까지 1시 30분에 wall 명령을 사용하여 시스템의 모든 사용자에게 메시지 전송
2) 한 번 실행 : at
- at 명령어
- 미래의 특정 시간에 지정한 명령어가 한 번 실행되도록 한다.
- 실행할 명령은 표준입력을 통해서 받는다.
- 사용법
$ at [-f 파일] 시간
: 지정된 시간에 명령이 실행되도록 등록한다. 실행할 명령은 표준입력으로 받는다. (-f :실행할 명령들을 파일로 작성해서 등록할 수도 있다.)
- atq 명령어 : at 시스템이 큐에 등록되어 있는 at 작업을 볼 수 있다.
- at -r 옵션 : 지정된 작업번호에 해당하는 작업을 제거한다.
$ at-r 작업번호
9.2 디스크 및 아카이브
1) 디스크 사용 : df
- 사용법 : 파일 시스템에 대한 디스크 사용정보를 보여준다.
$ df 파일시스템*
2) 디스크 사용 : du
- 사용법
$ du [-s] 파일*
- 파일이나 디렉토리가 사용하는 디스크 사용량(블록 수)을 알려준다.
- 파일을 명시하지 않으면 현재 디렉터리의 사용 공간을 보여준다.
3) tar 아카이브
- 아카이브
- 백업 또는 다른 장소로의 이동을 위해 여러 파일들을 하나로 묶어놓은 묶음.
- 아카이브를 만들거나 푸는데 tar(tape archive) 명령어 사용
- tar 명령어
- 옵션 : c(create), v(verbose), x(extract), t(table of contents), f(file)
$ tar -cvf 타르파일 파일+
: 여러 파일들을 하나의 타르파일로 묶는다. 보통 확장자로 .tar 사용
$ tar -xvf 타르파일
: 하나의 타르파일을 풀어서 원래 파일들을 복원한다.
$ tar -tvf 타르파일
: 타르파일의 내용을 확인한다.
9.3 파일 압축
1) 파일 압축 : gzip
- 사용법 : 파일(들)을 압축하여 .gz 파일을 만든다.
$ gzip [옵션] 파일*
- -d : 압축을 해제한다.
- -l : 압축파일 안에 있는 파일 정보(압축된 크기, 압축률)를 출력한다.
- -r : 하위 디렉터리까지 모두 압축한다.
- -v : 압축하거나 풀 때 압축률, 파일명을 출력한다.
2) 압축 풀기 : gzip으로 압축된 파일들을 복원한다.
$ gzip -d 파일.gz*
$ gunzip 파일.gz*
2) 파일 압축 : compress
- compress 명령어 : 파일(들)을 압축하여 .Z 파일을 만든다.
$ compress 파일*
- uncompress 명령어 : 압축된 파일(들)을 복원한다.
$ uncompress 파일.Z*
9.4 AWK
1) AWK
- 일반 스크립트 언어
- Aho, Weinberger, Kernighan
- 텍스트 형태로 되어 있는 줄을 필드(줄을 구성하는 단어)로 구분하여 처리한다.
2) AWK 프로그램
- 간단한 프로그램은 명령줄에 직접 작성하여 수행
- awk 프로그램을 파일로 작성하여 -f 옵션을 이용하여 수행
- 사용법 : 텍스트 파일을 대상으로 하여 각 줄을 필드로 구분하고 이들을 awk 프로그램이 지시하는 대로 처리한다.
$ awk 프로그램 파일*
$ awk [-f 프로그램파일] 파일*
- awk 프로그램
- 조건과 액션을 기술하는 명령어들로 구성됨.
- [조건] [{액션}]
- 대상 파일의 각 줄을 스캔하여 조건을 만족하는 줄에 액션 수행
ex) $ awk 'NR > 1 && NR < 4' {print NR, $1, $3, $NF}' test.txt
- NF : 각 줄의 필드 수
- NR : 줄 번호
- $0 : 해당 줄 전체
- $n : n번째 필드
3) 조건(condition)
- BEGIN : 파일 시작
- END : 파일 끝
- 관계연산자 혹은 논리연산자를 포함한 조건식
- /패턴/ : 패턴에 해당하는 줄
- /패턴1/,/패턴2/ : 패턴1을 포함한 줄부터 패턴2를 포함한 줄까지.
4) 액션(action)
- if (조건) 실행문 [else 실행문]
- while (조건) 실행문
- for (식; 조건; 식) 실행문
- break
- continue
- 변수 = 식
- print [식들의 리스트]
- printf 포맷 [,식들의 리스트]
- next : 현재 줄에 대한 나머지 패턴 건너뛰기
- exit : 현재 줄의 나머지부분 건너뛰기
- { 실행문 리스트 }
5) 연산자
- 산술 연산자 : +, -, *, /, %, ++, --
- 대입 연산자 : =, +=, -=, *=, /=, %=
- 조건 연산자 : ? :
- 논리 연산자 : ||, &&, !
- 패턴 비교 연산자 : ~, !~
- 비교 연산자 : <, <=, >, >=, !=, ==
- 필드참조 연산자 : $
9.5 AWK 프로그램 작성
1) 프로그램 예시 : 단어별 출현 빈도 수 계산
BEGIN {
FS = "[^a-zA-Z]+"
}
{
for (i = 1; i<=NF; i++)
words[tolower($i)]++ // 단어를 인덱스로 하는연관배열 사용
}
END { for (i in words) print i, words[i]}
2) AWK 내장함수
- 문자열 함수
: index(s1, s2), length([s]), match(s, r), sub(r, s), tolower(s),toupper(s), ...
- 입출력 함수
: getline, next, print, printf, system, ...
- 수학 함수
: atan2(x, y), cos(x), sin(x), exp(arg), log(arg), sqrt(arg), int(arg), rand(), srand(expr)
'전공과목 정리 > 리눅스시스템 + 시스템프로그래밍' 카테고리의 다른 글
[리눅스시스템🐧] 11장 프로그래밍 환경 (2) | 2024.01.06 |
---|---|
[리눅스시스템🐧] 10장 Bash 쉘 스크립트 (2) | 2024.01.06 |
[리눅스시스템🐧] 8장 파일 유틸리티 (4) | 2024.01.05 |
[리눅스시스템🐧] 7장 인터넷과 서버 (2) | 2024.01.03 |
[리눅스시스템🐧] 6장 프로세스 (4) | 2024.01.03 |