Chapter 1 파일 시스템 관리
1. 사용자 권한 및 그룹 설정
(1) 파일 및 디렉터리 속성
- 모든 파일과 디렉터리에는 허가권(permission)과 소유권(ownership)이 부여된다.
- 파일 및 디렉터리 상세정보 확인 : ls -l
- 구조 : 파일유형 허가권 링크수 소유자명 그룹명 파일크기 마지막변경날짜 파일명
- 파일 유형
파일 유형 | - : 일반파일, d : 디렉터리파일, c : 문자장치파일, l : 심볼릭링크파일, b : 블록장치파일, p : 파이프, s : 소켓파일 |
(2) 소유권 관련 명령어
1) chown
- 파일이나 디렉터리 사용자 소유권과 그룹 소유권을 변경하는 명령어
- chown 구분자 : .(마침표), :(콜론)
- 형식 : [root@localhost ~]# chown [옵션] [사용자명] [파일/디렉터리명] 또는 chown [옵션] [사용자명].[그룹명] [파일/디렉터리명]
- 옵션
-c | 소유권 변경 정보 출력 |
-f | 오류 메시지 출력 안함 |
-R | 하위 디렉터리를 포함한 모든 파일과 디렉터리 사용자 소유권 변경 |
- 활용 예 :
ls -l -> -rw-r--r-- 1 root root 45 10월11 13:44 linux.txt
chown test linux.txt -> -rw-r--r-- 1 test root 45 10월11 13:44 linux.txt
2) chgrp
- 파일이나 디렉터리 그룹 소유권을 변경하는 명령어
- 형식 : [root@localhost ~]# chgrp [옵션] [그룹명] [파일/디렉터리명]
- 옵션
-c | 변경된 파일만 자세히 출력 |
-f | 변경되지 않은 파일에 대해서는 오류 메시지 출력 안함 |
-R | 하위 디렉터리를 포함한 모든 파일과 디렉터리 그룹 소유권 변경 |
-v | 작업상태 자세히 출력 |
(3) 허가권 관련 명령어
1) 개요
- 파일이나 디렉터리의 허가권을 변경하는 명령어
- 사용모드 (출력부분)
사용자, 그룹, 제3자 권한 | |||
기호 모드(알파벳) | r | w | x |
숫자 모드(8진수) | 4 | 2 | 1 |
- 사용기호 (명령어 부분)
사용자 | 권한 | 연산자 | ||||||||
기호 | u | g | o | a | + | - | = | r | w | x |
의미 | 소유자 | 그룹 | 제3자 | 모두 | 허가권 부여 | 허가권 제거 | 허가권 지정 | 읽기 | 쓰기 | 실행 |
- 권한
일반 파일 | 디렉터리 | |
읽기(read) | 내용 읽기 | 디렉터리 안의 파일/디렉터리 목록 출력 |
쓰기(write) | 내용 수정 및 제거 | 디렉터리 안의 파일/디렉터리 생성, 수정, 제거 |
실행(execute) | 내용 실행 | 디렉터리 안으로 진입 |
2) chmod
- 파일이나 디렉터리 허가권을 변경하는 명령어
- 형식 : [root@localhost ~]# chmod [옵션] [허가권] [파일/디렉터리명]
- 옵션
-c | 허가권 변경 정보 출력 |
-R | 하위 디렉터리를 포함한 모든 파일과 디렉터리 사용자 허가권 변경 |
-v | 각 파일의 모드 변경상태 출력 |
3) umask
- 새로 생성되는 파일이나 디렉터리의 기본 허가권을 지정하는 명령어
- chmod는 기존 파일/디렉터리의 접근권한 변경할 때이고, umask는 앞으로 만들어질 파일/디렉터리에 영향을 줌
- 형식 : [root@localhost ~]# umask [옵션] [설정값]
- 옵션
-S | umask값을 기호로 출력 |
- 활용 예
umask | 파일 | 디렉터리 |
022 | 666 | 777 |
-022 | -022 | |
파일/디렉터리 생성시 | 644(u=rwx,g=rx,o=rx) | 755(u=rwx,g=rx,o=rx) |
(4) 특수 허가권
- 프로세스가 실행되는 동안 해당 파일을 실행한 사용자가 아닌 소유자의 권한으로 실행하도록 만드는 허가권
1) 기능
- 낮은 수준의 사용자가 높은 수준의 자원에 접근시 접근제한으로 인해 발생하는 문제를 해결하기 위해 사용
- 프로세스 실행하는 동안만 소유자나 그룹 권한을 실행
- 소문자는 해당 파일에 실행 권한이 부여되어 있을 경우이며 정상적인 권한으로 실행함
- 대문자는 해당 파일에 실행 권한이 부여되어 있지 않을 경우이며, 정상적인 권한으로 실행되지 않음
2) 허가권
기호 | 절대값 | 설명 | |
SetUID | s, S | 4000 | 파일의 소유자 실행 권한에 UID 설정 SetUID 설정된 파일 실행시, 특정 작업 수행을 위해 일시적으로 파일 소유자의 권한을 부여하는 비트 |
SetGID | s, S | 2000 | 파일의 그룹 실행 권한에 GID 설정 SetGID 설정된 파일 실행시, 특정 작업 수행을 위해 일시적으로 파일 소유자 그룹 권한을 부여하는 비트 |
Sticky | t, T | 1000 | 파일의 제3자 실행 권한에 Sticky Bit 설정(o+t가 된다) Sticky Bit 설정된 디렉터리 내 파일에 대해서 모든 사용자에게 쓰기 권한이 부여되어 있을 경우에도 파일 소유자나 root 사용자가 아니면 해당 파일을 삭제할 수 없음 누구나 파일을 생성, 수정은 가능 |
- 활용 예 : chmod 4744 linux.txt
(5) 디스크 쿼터(Disk Quota)
- 파일 시스템별 사용자나 그룹의 사용량을 제한할 경우 사용
- 기능 : 블록단위나 i-node의 개수를 제한, 사용자별 또는 파일시스템별로 작동
1) 관련 파일
- cat /etc/fstab -> /dev/sdb1 /home ext4 defaults 0 0 -> 쿼터적용시 /devsdb1 /home ext4 defaults.usrquota 0 0
2) 사용자별 쿼터 설정
- equota -u [계정명] -> blocks soft hard inodes soft hard 출력됨
blocks | 현재 사용자가 사용한 블록(단위 : KB) | |
soft | 사용자가 사용할 수 있는 최대용량(초과가능) 유예기간동안 초과경고메시지 |
|
hard | 사용자가 사용할 수 있는 최대용량(초과불가능) | |
inodes | 현재 사용자가 사용한 파일 수 | |
soft | 사용자가 사용할 수 있는 최대파일수(초과가능) 유예기간동안 초과경고메시지 |
|
hard | 사용자가 사용할 수 있는 최대파일수(초과불가능) |
3) quotaon
- 쿼터를 활성화하는 명령어
- 형식 : [root@localhost ~]# quotaon [옵션] [사용자/그룹명]
- 옵션
-a | 모든 파일 시스템에 대해 쿼터 적용 |
-g | 그룹 쿼터 적용 |
-u | 사용자 쿼터 적용 |
-v | 쿼터 적용된 파일시스템에 대해 상세한 정보 출력 |
4) quotaoff
- 쿼터를 비활성화하는 명령어
- 형식 : [root@localhost ~]# quotaoff [옵션] [사용자/그룹명]
- 옵션은 on과 동일
5) quotacheck
- 모든 파일 시스템을 점검하고, 쿼터 설정 및 기록파일 갱신하는 명령어
- quota.user, quota.group, aquota.user, aquota.group 의 파일을 점검하고 갱신
- 형식 : [root@localhost ~]# quotacheck [옵션]
- 옵션은 on과 동일하고 -m : 파일 시스템을 읽기전용으로 다시 마운트하지 않음만 추가됨
6) edquota
- 사용자와 그룹에 대해 쿼터를 설정하고 변경하는 명령어
- 형식 : [root@localhost ~]# edquota [옵션] [사용자/그룹명]
- 옵션
-g | 그룹 쿼터 설정 및 변경 |
-u | 사용자 쿼터 설정 및 변경 |
-p | 기존 사용자의 할당량 설정을 다른 사용자에게 그대로 복사 |
-t | 유예기간 확인 및 변경 |
7) setquota
- 터미널에서 직접 사용자나 그룹에게 쿼터를 적용하는 명령어
- 형식 : [root@localhost ~]# setquota [옵션] [사용자/그룹명] [block soft limit] [block hard limit] [inode soft limit] [inode hard limit] [파티션명]
- 옵션 : -a, -g, -u 존재
8) repquota
- 터미널에서 직접 사용자나 그룹에 적용된 쿼터를 요약하여 출력하는 명령어
- 형식 : [root@localhost ~]# repquota [옵션] [사용자/그룹명/파일시스템명]
- 옵션 : -a, -g, -u 존재
2. 파일 시스템 관리 유틸리티
(1) 파일 시스템 구조
- 파일 시스템은 시스템에서 파일이나 자료를 쉽게 검색, 접근, 유지, 관리하기 위한 조직체계
- 계층적 구조를 가지며, 디스크 파티션별로 하나씩 존재하고, 하드디스크나 CD-ROM 같은 물리적 저장소를 관리
- ext 파일 시스템 구조
Super Block | Group Description Table | Block Bitmap | Inode Bitmap | Inode Table | Data |
- 종류
ext | 리눅스 초기 파일 시스템으로 호환성 없음 파일 접근에 대한 타임스탬프, inode 수정 불가 |
ext2 | 부트 섹터와 블록 그룹으로 구성 파일 시스템 테이블을 정의하기 위해 시스템 내 각 파일을 inode 자료구조로 표현하며, 모든 정보를 Super Block과 Group Description Table에 저장 파일에 들어있는 데이터는 데이터 블록에 저장, 크기는 같음 ext2 파일시스템 크기는 mke2fs 명령 실행시에 결정 파일시스템 손상시에는 fsck를 이용하여 데이터 복원할 수 있으나, 캐시에 저장된 데이터를 하드디스크에 저장하는 동안 시스템의 다운 등의 문제발생시 파일시스템 손상됨 |
ext3 | 커널 2.4 버전부터 지원 사용자가 직접 데이터 보호유형과 보호수준을 결정 가능 ext2 파일시스템 검사 또는 복구시 장시간 걸리거나 시스템 사용못하는 단점 보완하기 위해 저널링 기능 추가 |
ext4 | 64비트 기억공간 제한을 없애고 성능향상, 호환성 있는 확장버전 1EB(Exabyte) 이상의 볼륨과 16TB 이상의 파일지원 지연된 할당 파일 시스템 기능 지원 실제 파일크기에 기반하여 블록 할당을 결정하고, 향상된 블록 할당이 가능하므로 단편화를 줄이고 성능향상 |
- 기타 파일 시스템
저널링 파일 시스템 | JFS | Journeling File System IBM사의 독자적인 저널링 파일 시스템 |
XFS | eXtended File System 높은 확장성과 처리량 |
|
ReiserFS | 가장 안정적인 저널링 파일 시스템 모든 파일을 B-Tree에 저장하고, 간결한 디렉터리 지원 |
|
네트워크 파일 시스템 | SMB | Server Message Block SAMBA 파일 시스템으로 사용 리눅스와 윈도우 운영체제간 자료 및 하드웨어 공유 프로토콜 |
CIFS | Common Internet File System SMB 확장 파일 시스템 네트워크에서 자료 주고받게 해주는 프로토콜 |
|
NFS | Network File System SUN에서 개발한 네트워크 공유 프로토콜 서로 다른 운영체제간 파일/디렉터리 공유 가능 |
|
기타 파일 시스템 | ISO9660 | CD-ROM 표준 파일 시스템 |
UDF | OSTA에 의해 개발 광학 매체용 표준 파일 시스템 대부분 DVD에서 사용 |
|
HPFS | MS사와 IBM이 공동개발 OS/2 운영체제용 파일 시스템 |
(2) 파일 시스템 관련 명령어
1) fdisk
- 파티션을 생성, 수정, 제거 및 파일 시스템 유형을 지정하는 명령어
- 형식 : [root@localhost ~]# fdisk [옵션] [장치명]
- 옵션
-l | 현재 파일 시스템과 파티션 정보 출력 |
-s | 지정된 파일 시스템의 크기를 블록단위로 출력 |
2) mkfs
- 파일 시스템을 생성하는 명령어
- 형식 : [root@localhost ~]# mkfs [옵션] [파일 시스템 유형] [장치명]
- 옵션
-c | 파일 시스템 불량블록 검사 |
-t | 파일 시스템 유형 지정 |
-v | 작업 과정 출력 |
- 활용 예 : mkfs -t ext4 /dev/sda1 -> /dev/sda1 장치에 대해서 ext4 유형의 파일시스템 생성
3) mke2fs
- mkfs 명령어의 확장버전으로 파일 시스템 생성하는 명령어
- 형식 : [root@localhost ~]# mke2fs [옵션] [파일 시스템 유형] [장치명] [블록개수]
- 옵션
-b | 블록 크기 지정 |
-c | 불량블록 검사 |
-f | flagment 크기 지정 |
-i | inode 크기 지정 |
-j | 저널링 기술 적용하여 생성 |
-S | super block 복구시 사용 |
-t | 파일시스템 유형 지정 |
4) fsck
- 파일 시스템 무결성 점검과 오류 복구하는 명령어
- lost+found 디렉터리에 저장된 파일을 복구하며, 복구가 완료되면 파일은 제거된다.
- 형식 : [root@localhost ~]# fsck [옵션] [장치명]
- 옵션
-A | /etc/fstab 파일에 지정된 파일 시스템을 검사 |
-a | 검사 후 복구 여부 묻지 않고 자동으로 복구 |
-P | 다른 파일 시스템과 루트 파일 시스템을 병렬처리검사 |
-R | -A와 같이 사용하면 루트 파일 시스템을 제외한 모든 파일 시스템 검사 |
-r | 검사 후 복구 여부 질의 |
-s | fsck 동작을 시리얼화, 여러 파일 시스템 검사시 유용 |
-t | 파일 시스템 지정 |
5) e2fsck
- fsck 명령어의 확장버전
- 형식 : [root@localhost ~]# e2fsck [옵션] [장치명]
-c | 불량블록 검사 |
-f | 강제적으로 검사 |
-n | 모든 질의에 대한 응답을 no로 처리 |
-y | 모든 질의에 대한 응답을 yes로 처리 |
-p | 검사 후 복구 여부 묻지 않고 자동 복구 |
6) mount, umount
- 특정 장치와 디렉터리를 연결하는 명령어
- 기본적으로 주변장치는 자동으로 마운트되지 않으므로, 시스템 부팅 후 수동으로 마운트하여 사용하고, 언마운트로 종료하여야 한다.
- 형식 : [root@localhost ~]# mount [옵션] [장치명] [마운트 포인트]
- 옵션
-a | fstab 파일에 있는 모든 파일 시스템 마운트 |
-f | 실제로 마운트하지 않고, 마운트 할 수 있는지 확인 |
-n | /etc/mtab 파일에 쓰기 작업을 하지 않고 마운트 |
-o | 추가 옵션 |
-r | 읽기전용 마운트 |
-w | 쓰기 모드로 마운트 |
-t | 파일 시스템 유형 지정 |
- 활용 예 : mount -t ext4 /dev/sdb1 /mnt -> 파일 시스템 유형이 ext4인 /dev/sdb1을 /mnt 디렉터리에 마운트
7) eject
- DVD나 CD-ROM 등의 미디어 장치를 해제하고 꺼내는 명령어
- 형식 : [root@localhost ~]# eject [옵션] [장치명/마운트 포인트]
8) df
- 시스템에 마운트된 하드디스크 사용량과 남은 용량을 확인하는 명령어
- 형식 : [root@localhost ~]# df [옵션] [파일명]
9) du
- 하드디스크 사용량 확인 명령어
(3) 파일 시스템 관련 파일(/etc/fstab)
- 파일 시스템 관련 설정정보를 저정하고 있는 파일
- 시스템 부팅시 파일 시스템을 자동으로 마운트하고자 할 때, 이 파일에 설정하면 된다.
- 구조 : 파일시스템장치명 마운트포인트 파일시스템유형 파일시스템속성 Dump설정 파일시스템점검옵션
- Dump 설정 : 0이면 dump 불가능 시스템, 1이면 dump 가능한 시스템
- 파일 시스템 점검 옵션 : 0이면 점검하지 않음, 1이면 루트 파일 시스템, 2이면 일반 파일 시스템
3. 기타
(1) 기타
- UUID : 보통 여러 개체들이 존재하는 환경에서 식별 및 구별하기 위해 사용되는 고유한 이름을 통칭
- blkid : 시스템의 모든 파티션에 대한 uuid 값을 출력
- LABEL : 장치명에 붙이는 별칭
- TYPE : 파일 시스템 유형
(2) 프로세스 스케줄 관리 - 정기적
- cron 데몬 프로세스 : 정기적인 작업을 지정시간에 처리하기 위해 사용
1) crontab 파일 구조
- crontab 파일 : 정기적으로 처리해야 하는 작업목록을 정의한 파일(*은 모든 값을 의미)
분 | 시 | 일 | 월 | 요일 | 작업 |
ex) 20 6 * * 1-5 : 매월 매일 월요일부터 금요일까지 6시20분에 처리 |
- cron 로그 파일은 /var/log/cron 에 저장된다.
- /etc/default/cron 파일은 cron 데몬 프로세스 실행될 때 읽는 파일로서 변수를 저장
2) crontab 파일 제어
- crontab 파일은 사용자 계정별로 만들어진다. 따라서 root를 제외한 일반 사용자는 자신의 crontab 파일만 편집가능
- 형식 : (리눅스) crontab [-u 계정명] [옵션], (유닉스) crontab [옵션] [계정명]
- 옵션
-e | crontab 파일을 편집(없으면 새롭게 생성) |
-l | crontab 파일을 출력 |
-r | crontab 파일을 삭제 |
리눅스 : crontab -u test -l -> test 계정의 crontab 파일을 출력 유닉스 : crontab -l test -> test 계정의 crontab 파일을 출력 crontab -l -> 자신의 crontab 파일을 출력 (계정명을 명시하지 않으면 자신의 계정을 의미) |
3) crontab 명령 접근제어
- crontab 명령 접근제어를 위해 /etc/cron.allow(화이트리스트방식), /etc/cron.deny(블랙리스트방식) 설정파일을 사용
- 두 파일 다 존재할 경우 cron.allow가 우선하여 적용된다. 따라서 해당 파일 등록된 사용자만이 crontab 명령 실행가능
(3) 프로세스 스케줄 관리 - 일시적
- at 명령은 정해진 시간에 한번만 실행되고, 한번 처리된 작업은 작업목록에서 제거된다.
- 형식 : at [옵션]
- 옵션
-t time_date | 작업시간을 지정 |
-l | 현재 대기중인 작업목록을 출력 |
-r job_id | job_id에 해당하는 작업을 목록에서 삭제(유닉스) |
-d job_id | job_id에 해당하는 작업을 목록에서 삭제(리눅스) |
$ at -t 201312301200 -> 2013년 12월 30일 12:00 에 /usr/bin/ps -ef 명령이 실행 at > /usr/bin/ps -ef at > <EOT> |
Chapter 2 셸(Shell) 관리
1. 셸의 특징 및 명령어
(1) 셸
- 사용자가 입력한 명령어를 해석하여 커널에 전달, 사용자가 로그인시 실행되어 사용환경을 제공
- 기본적으로 셸 명령어는 foreground에서 수행된다(백그라운드X).
- 셸은 커널에 독립된 프로그램으로, 하나의 배포판에 여러 셸이 포함되어 있어 선택해서 사용가능
- 종류
종류, 실행 파일 | 특징 | ||
본 셸 계열 (Bourne Shell) |
본 셸, /bin/sh | AT&T Bell 연구소의 Steve Bourne이 개발 유닉스의 기본 셸 별칭(alias)이 존재하지 않는다. 조건구문(if), 반복구문(while)이 존재 |
|
콘 셸, /bin/ksh | AT&T의 David Korn이 개발 본 셸의 확장버전 명령어 완성 기능, 히스토리 기능 지원 |
||
배시 셸, /bin/bash | Brian Jhan Fox가 개발 본 셸 기반으로 GNU 프로젝트에서 개발 POSIX 호환으로 다양한 운영체제에서 사용가능 명령어 자동완성, 명령어 편집, 히스토리, 명령어 치환기능 등 지원 리눅스의 기본 셸 ksh과 csh의 특징이 결합되어 있다. Bourne Again Shell을 의미 |
||
지 셸, /bin/zsh | 본 셸의 확장버전, 콘 셸의 개선버전 명령어 자동완성, 명령어 편집, 히스토리 기능 지원 탭이나 방향키 이용하여 선택 기능 지원 |
||
C 셸 계열 | C 셸, /bin/csh | Berkley 대학의 Bill Joy가 개발 C언어 특징을 포함 다양한 프로그래밍 작성 기능 지원 히스토리, 별칭, 작업 제어 등 기능 지원 (명령행 편집기능X) |
|
TC 셸, /bin/tcsh | C 셸의 확장버전 |
- 차이점 : C 셸은 문자열과 숫자 변수의 단어 목록들을 모두 처리 가능, 비트 단위 논리식 구할 수 있음
(2) 셸 관련 파일
1) /etc/shells
- 사용자들이 사용가능한 셸을 정의하는 파일
2) /etc/passwd
- 사용자 계정 정보가 저장되는 파일, 마지막에서 두번째 필드에 셸 표시된다.
(3) 셸 관련 명령어
1) echo $SHELL
- 현재 로그인한 사용자가 사용하는 셸을 확인하는 명령어
2) chsh
- 사용할 셸 종류를 변경하는 명령어, 변경한 셸은 다음 로그인부터 유효하다.
- 형식 : [root@localhost ~]# chsh [옵션] [셸 종류]
- 옵션
-l | /etc/shells 파일내용을 출력 |
-s | 지정하는 셸로 변경, 절대경로로 입력해야 한다. (ex chsh -s bash 는 상대경로이므로 틀림) |
-u | 도움말 출력 |
3) usermod -s 옵션 사용 -> Part1 기본 명령어 부분에 있다.
2. 환경설정
(1) 환경변수
- 환경변수는 현재 사용하고 있는 셸의 실행파일에 대한 위치를 저장하는 변수를 의미
1) 종류
전역변수 | 전체 셸에 영향을 미치는 변수 하위 셸에 기능 상속 가능 |
지역변수 | 특정 사용자에게만 적용되는 변수 하위 셸에 상속 불가능 |
2) 주요 환경변수
DISPLAY | X윈도우 환경에서 화면출력을 위해 접속한 X서버의 주소 및 장치번호 |
HOME | 사용자의 홈 디렉터리, 항상 홈 디렉터리를 지정, 홈 디렉터리 이동되는 경우에도 명령 작동 |
HOSTNAME | 호스트 명 |
LANG | 기본 지원 언어 |
PS1 | 셸 프롬프트 선언 변수(일반적으로 사용하는 프롬프트, ex #, $ 등) |
PS2 | 2차 셸 프롬프트 선언 변수(명령이 완전히 끝나지 않을 경우 출력되는 프롬프트, ex >) |
PWD | 현재 작업 디렉터리 |
SHELL | 로그인 셸 |
TERM | 터미널 명 |
TMOUT | 자동 로그아웃 시간 |
USER | 사용자 명 |
ex) echo $LANG : 기본 사용 언어를 출력, echo $TERM : 사용 중인 터미널 정보를 출력 |
3) 환경변수 관련 명령어
- env : 설정된 전체 환경변수 값을 확인하는 명령어
- export : 환경변수 목록을 확인하는 명령어
- echo $변수명 : 화면에 변수명에 저장된 내용 출력하는 명령어
- export 변수명=변수값 : 해당 변수명에 값 등록하는 명령어
- export 변수명=$변수명:변수값 : 현재 PATH에 경로를 추가하는 명령어
- unset : 선언된 변수를 해제할 때 사용하는 명령어
4) 셸 프롬프트 설정
- 기본 구조 : [사용자명][구분자][호스트명][현재 디렉터리][사용자 구분]
\d | 현재 날짜를 출력(요일, 월, 일) |
\h | 호스트명 출력 |
\H | 도메인명 출력 |
\n | 개행 문자(줄바꿈) |
\t | 24시간 단위 시간 출력 |
\T | 12시간 단위 시간 출력 |
\@ | 12시간 단위 시간 출력(오전/오후) |
\u | 사용자명 출력 |
\w | 현재 디렉터리 전체 절대경로 출력 |
\W | 현재 디렉터리만 출력 |
\s | 현재 사용중인 셸 출력 |
\\$ | 현재 사용자가 root이면 #, 아니면 $을 출력 |
5) 환경설정 파일
.login | 특정 셸에 관계없이 초기 환경을 지정하여 로그인할 때 지정한 명령을 자동수행 |
.logout | 로그아웃 하기 전에 마지막으로 수행될 내용을 지정하는 파일 |
.newsrc | USENET News Group 이용시 그룹환경 저장파일 |
.eml | 메일을 원본 형식 그대로 저장한 파일 |
(2) 배시 셸 관련 파일
전역 설정 파일 | /etc/profile | 모든 사용자의 셸 환경을 제어 환경변수와 배시가 실행하는 프로그램 제어 |
/etc/bashrc | 별칭(alias)과 배시가 실행하는 함수를 제어 | |
지역 설정 파일 | ~/.bash_profile | 개별 사용자의 셸 환경을 제어 |
~/.bash_logout | 로그아웃 직전에 실행되는 설정파일 | |
~/.bash_history | 사용자가 입력한 명령어가 저장되는 파일 방향키로 이전 명령어 확인 및 재사용 가능 |
|
~/.bashrc | 별칭과 배시가 실행하는 함수를 지역적으로 제어 개인 사용자의 환경변수 설정도 가능 ex) $HOME/.bashrc |
(3) 배시 셸 주요 기능
1) history 기능
- 사용자가 사용했던 명령어를 저장하고, 필요시 재사용할 수 있게 하는 기능(위, 아래 방향키 이용)
- 기본적으로 1000개까지 저장되며, 사용자의 홈 디렉터리의 .bash_history 파일에 저장된다.
2) history 명령어
- 형식 : [root@localhost ~]# history [옵션]
- 옵션
!! | 마지막에 실행한 명령 실행 |
!n | n번째 명령어 실행 |
!-n | 현재 행에서 n개 뺀 행의 명령 실행 |
!string | 가장 최근에 string으로 시작되는 명령 실행 |
!$, !!$ | 마지막 명령의 인자값 |
!* | 마지막 실행한 명령에 사용된 인자값 |
!?string? | 가장 최근에 string을 포함한 단어 출력 |
n | 가장 최근에 실행한 명령을 n개 출력 |
-c | 히스토리 삭제 |
3) history 관련 환경변수
- 종류
HISTSIZE | 히스토리 크기 지정 |
HISTFILE | 히스토리 파일 위치 |
HISTFILESIZE | 히스토리 파일 크기 |
HISTCONTROL | 중복되는 명령어에 대한 기록 유무 |
HISTTIMEFORMAT | 히스토리 명령어 수행 시간, 출력 형태 지정 |
- 활용 : echo $HISTSIZE, export HISTSIZE=2000 등
4) alias
- 별칭으로 지정하여 작업을 편리하게 해주는 기능
- 형식 : [root@localhost ~]# alias [단축 명령어]='명령어'
- alias : alias 등록 확인, unalias : alias 제거
3. 기타
- 셸 명령행에서 명령 줄이 긴 경우 \ 기호를 기용하면 명령행을 연장할 수 있다.
- ps 명령어로 사용자가 현재 사용 중인 셸 확인 가능
- 배시환경에서 사용자의 실수로 홈 디렉터리의 .bashrc 파일을 제거한 경우, /etc/skel 디렉터리 안에서 .bashrc 파일을 복사하고 소유권을 사용자에게 넘긴다.
- stty : 셸 환경에서 터미널 설정을 변경하기 위한 명령어, 키보드를 이용하여 많이 사용하는 유용한 키를 설정
- rsync : 원격 호스트 간 파일/디렉터리 동기화를 위한 명령어
- 파일 업로드 : #get [파일명], #mget [파일명1] [파일명2] ..., #put [파일명], #mput [파일명1] [파일명2] ...
- 셸에 의해 생성되는 모든 문자는 터미널로 전달되기 전에 디바이스 드라이버 통과해야 한다. Cooked Mode와 Raw Mode가 있다.
- Cooked Mode : 사용자가 입력한 키가 디바이스 드라이버에 의해 해석되는 방식
- Raw Mode : 사용자가 입력한 키가 장치에 직접 전달되는 방식
- sleep : 지정된 시간에 대해 아무것도 하지 않는 것으로, 셸 스크립트는 잠시 운영을 중단하는 상황
- ls file[12].py : 파일명에 file1 또는 file2가 포함되면서 .py인 파일 목록을 출력