특정 파일에 대한 접근을 쉽게하기 위해서 사용하는 파일
파일들의 정보가 담긴 자료구조
파일의 권한, 소유주, 수정시간, 크기, 파일의 위치 데이터를 포함함
윈도우의 바로가기와 같은 기능으로 파일 자체(경로)를 가리키는 파일.
ln -s [원본파일][symbolick link 파일이름]
[root@localhost ~]# touch 0221
[root@localhost ~]# ln -s 0221 slink
[root@localhost ~]# ls -il 0221 slink
68131349 -rw-r--r--. 1 root root 0 2월 21 06:20 0221
68131593 lrwxrwxrwx. 1 root root 4 2월 21 06:20 slink -> 0221
원본 파일 제거 시 접근이 불가능
심볼링 링크를 수정하면 원본파일도 같이 수정됨
[root@localhost ~]# echo "hello"> slink
[root@localhost ~]# cat 0221
hello
링크파일로 원본 파일을 변경할 수 있음
원본을 제거하더라도 접근에 이상이 없음.
ln [원본파일][Hard link 파일 이름]
[root@localhost ~]# touch 0221
[root@localhost ~]# ln 0221 hlink
[root@localhost ~]# ls -il 0221 hlink
68131349 -rw-r--r--. 2 root root 0 2월 21 06:28 0221
68131349 -rw-r--r--. 2 root root 0 2월 21 06:28 hlink
inode가 똑같은 다른 파일임을 알 수 있다
Shell에서 사용할 때 특수한 기능을 가지고 있는 문자
Shell에서 사용하는 메타문자와 정규 표현식에서 사용하는 메타 문자를 혼동하지 말 것
디렉토리의 경로 축약
파일 이름 대체
[root@localhost dir01]# ls
a b c d e f file01 file02 file03 file04 filea fileb filec filed g h i j
[root@localhost dir01]# ls -l file*
-rw-r--r--. 1 root root 0 2월 20 20:10 file01
-rw-r--r--. 1 root root 0 2월 20 20:10 file02
-rw-r--r--. 1 root root 0 2월 20 20:10 file03
-rw-r--r--. 1 root root 0 2월 20 20:10 file04
-rw-r--r--. 1 root root 0 2월 20 20:10 filea
-rw-r--r--. 1 root root 0 2월 20 20:10 fileb
-rw-r--r--. 1 root root 0 2월 20 20:10 filec
-rw-r--r--. 1 root root 0 2월 20 20:10 filed
[root@localhost dir01]# ls -l file?
-rw-r--r--. 1 root root 0 2월 20 20:10 filea
-rw-r--r--. 1 root root 0 2월 20 20:10 fileb
-rw-r--r--. 1 root root 0 2월 20 20:10 filec
-rw-r--r--. 1 root root 0 2월 20 20:10 filed
[root@localhost dir01]# ls -l file??
-rw-r--r--. 1 root root 0 2월 20 20:10 file01
-rw-r--r--. 1 root root 0 2월 20 20:10 file02
-rw-r--r--. 1 root root 0 2월 20 20:10 file03
-rw-r--r--. 1 root root 0 2월 20 20:10 file04
[root@localhost dir01]# ls -l file0[135]
-rw-r--r--. 1 root root 0 2월 20 20:10 file01
-rw-r--r--. 1 root root 0 2월 20 20:10 file03
[root@localhost dir01]#
[root@localhost dir01]# ls -l file[a-c]
-rw-r--r--. 1 root root 0 2월 20 20:10 filea
-rw-r--r--. 1 root root 0 2월 20 20:10 fileb
-rw-r--r--. 1 root root 0 2월 20 20:10 filec
[root@localhost dir01]# ls -l file0[!1]
-rw-r--r--. 1 root root 0 2월 20 20:10 file02
-rw-r--r--. 1 root root 0 2월 20 20:10 file03
-rw-r--r--. 1 root root 0 2월 20 20:10 file04
[root@localhost dir01]#
[root@localhost dir01]# ls -l file0[!1-3]
-rw-r--r--. 1 root root 0 2월 20 20:10 file04
임의의 문자열을 생성할 때 사용
{a,b,c} or {a..z} 식으로 사용
[root@localhost dir01]# touch file{1,2,3,4}
[root@localhost dir01]# ls
a c e file01 file03 file1 file3 'file[1-5]' fileb filed h j
b d f file02 file04 file2 file4 filea filec g i
[root@localhost dir01]# touch file{01..10}
[root@localhost dir01]# ls
file01 file02 file03 file04 file05 file06 file07 file08 file09 file10
메타문자의 의미를 다르게 하거나 무시
[root@localhost dir01]# echo 'date command result is $(date)'
date command result is $(date)
[root@localhost dir01]# echo "date command result is $(date)"
date command result is 2022. 02. 20. (일) 20:23:54 EST
[root@localhost dir01]# echo "\$(date) command result is $(date)"
$(date) command result is 2022. 02. 20. (일) 20:26:16 EST
[root@localhost ~]# echo date command result is `date`
date command result is 2022. 02. 21. (월) 07:04:47 EST
표준 입력화 출력 등을 재지정
왼쪽 명령어의 출력을 오른쪽 명령어의 입력으로 보냄
파이프라인은 하나 이상의 파이프로 구성
출력을 두 방향의 입력으로 전송
[root@localhost ~]# yum list | grep ssh | tee 파일이름
redirection 이 아니라 tee 를 쓰는 경우 : shell script 에서 root 권한으로 특정 파일을 쓰거나 append 할때 주로 활용
실행되고 있는 프로그램을 뜻함 => 메모리에 올라가서 CPU에 의해 실행되고 있는 프로그램
time-sharing 기법 : 여러 명의 사용자가 사용하는 시스템에서 컴퓨터가 사용자들의 프로그램을 번갈아가며 처리해 줌으로써 각 사용자에게 독립된 컴퓨터를 사용하는 느낌을 주는 방식
컴퓨터의 구성요소 4가지
CPU : 프로그램의 연산을 실행하고 처리하는 장치
MEMORY : 주기억장치로, 전원이 꺼지면 데이터가 사라지는 휘발성이 있음
HDD, SDD : 보조기억장치로, 전원이 꺼지더라도 데이터가 남아있는 비휘발성 장치
I/O device : 입출력장치
PID(Process Identification Number) : 프로세스가 시작될 때 부여되는 고유한 ID Number
PPID(Parent Process Identification Number) : 부모 프로세스의 PID 값
현재 실행중인 프로세스 목록과 상태를 보여줌.
[root@localhost ~]# ps -ef | egrep '(bash|PID)'
UID PID PPID C STIME TTY TIME CMD
root 853 1 0 19:04 ? 00:00:00 /bin/bash /usr/sbin/ksmtuned
user 2761 2730 0 19:05 pts/0 00:00:00 bash
root 2917 2914 0 19:06 pts/1 00:00:00 -bash
root 4906 2917 0 22:13 pts/1 00:00:00 grep -E --color=auto (bash|PID)
프로세스의 구조를 트리구조로 pid와 함께 볼 수 있음
[root@localhost ~]# pstree -p
systemd(1)─┬─ModemManager(891)─┬─{ModemManager}(916)
│ └─{ModemManager}(933)
├─NetworkManager(1006)─┬─{NetworkManager}(1011)
│ └─{NetworkManager}(1012)
├─VGAuthService(817)
├─accounts-daemon(966)─┬─{accounts-daemon}(972)
│ └─{accounts-daemon}(975)
쉘 상태에서 명령을 내리면 해당 프로세스가 종료될때까지 대기
[root@localhost ~]# sleep 50
^C
CTRL + Z 정지
CTRL + C 종료
포그라운드로 전환하는 명령어
[root@localhost ~]# jobs
[1]+ Running sleep 50 &
[root@localhost ~]# fg %1
sleep 50
명령어 뒤에 &을 붙여서 동작, 명령을 내린 사용자는 다른 명령어를 계속 실행 가능
[root@localhost ~]# sleep 50 &
[1] 3805
[root@localhost ~]#
백그라운드로 전환하는 명령어
[root@localhost ~]# sleep 500
^Z
[1]+ Stopped sleep 500
[root@localhost ~]# jobs
[1]+ Stopped sleep 500
[root@localhost ~]# bg %1
[1]+ sleep 500 &
백그라운드에서 실행되는 프로세스를 확인할 수 있는 명령어
[root@localhost ~]# jobs
[1]+ Running sleep 50 &
[root@localhost ~]#
프로세스에게 특정 이벤트가 발생했을 때 알리는 신호
인터럽트의 일종
한 프로세스가 다른 프로세스에게 보낼 수도 있고, 커널이 프로세스에게 보낼수도 있음
비동기적이므로 어느 시점에서 발생할지 예측할 수 없음
kill [option](default : -15) PID
자주 쓰는 종류들
번호 | 짧은옵션 | 긴옵션 | 뜻 |
---|---|---|---|
-1 | –HUP | –SIGHUP | 재설정(reload) |
-2 | –INT | –SIGINT | Interrupt(ctrl + c) |
-9 | –KILL | –SIGLILL | 강제종료 |
-15 | –TERM | –SIGTERM | 정상종료(terminated) |
-18 | –CONT | –SIGCONT | 계속 (continue) |
-19 | –STOP | –SIGSTOP | 일시정지(ctrl + z) |
프로세스를 지정하여 시그널을 보내는 명령어
사용자 계정에서 사용 시 자신의 프로세스에게만 시그널 보낼 수 있음
루트 계정에서는 모든 프로세스에게 보낼 수 있음
터미널별로 관리도 가능
pkill –15 –t pts/1 sleep
입력한 프로세스명 모두에게 시그널을 보내는 명령어
[root@localhost ~]# ps -ef | grep sleep
root 3573 849 0 07:19 ? 00:00:00 sleep 60
root 3574 2925 0 07:19 pts/1 00:00:00 sleep 2000
root 3575 2925 0 07:19 pts/1 00:00:00 sleep 4000
root 3579 2925 0 07:20 pts/1 00:00:00 grep --color=auto sleep
[root@localhost ~]# killall sleep
[1]- 종료됨 sleep 2000
[2]+ 종료됨 sleep 4000
터미널별로 관리도 가능
killall –15 –u test1 sleep
주로 시스템에 접속해 있는 사용자 혹은 특정 터미널을 종료시키는데 사용
불필요한 접속자 혹은 공격자 등을 차단할 경우
프로세스에 대해 특정 정보를 이용한 검색 기능
ps + grep와 같은 효과
프로세스의 처리 순서
중요도에 따른 가중치 부여
기본 값(priority) + 조정 값(nice)
root | 일반사용자 | |
---|---|---|
최초 부여 가능한 값 | -20~19 | 1~19 |
조정 가능한 값 | 모든 값 가능 | 기존의 값보다 큰 값 |
nice 값이 높을 수록 우선순위 낮음
프로세스 실행 시 설정
[root@localhost ~]# nice -n -10 sleep 1000 &
[1] 6075
[root@localhost ~]# ps -l | egrep '(sleep|NI)'
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 0 6075 2917 0 90 -10 - 1436 hrtime pts/1 00:00:00 sleep
user는 음수 불가
[user@localhost ~]$ nice -n -11 sleep 2000 &
nice: cannot set niceness: 허가 거부
프로세스 동작 중 우선 순위 변경
[root@localhost ~]# renice -n –15 2435
2435 (process ID) old priority -11, new priority –15
user는 더 낮은 값으로 변경 불가
[user@localhost ~]$ ps -l | egrep '(sleep|NI)'
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 1000 2491 2450 0 80 0 - 1436 hrtime pts/0 00:00:00 sleep
0 S 1000 2492 2450 0 85 5 - 1436 hrtime pts/0 00:00:00 sleep
[2] 2492
11. nice 값을 4로 수정해보시오.
[user@localhost ~]$ renice -n 4 2492
renice: failed to set priority for 2492 (process ID): 허가 거부
리눅스에서 파일을 주고 받거나, 백업을 수월하기 하기 위해 여러 파일이나 디렉토리를 압축
파일의 메타데이터가 함께 들어가기 때문에 파일의 용량이 없더라도 아카이브에는 용량이 존재
아카이브 경로 설정 시, 주의 점
[root@localhost dir01]# tar cf alph1.tar /root/dir01/[a-z]
tar: 구성 요소 이름 앞에 붙은 `/' 제거 중
tar: 하드 링크 대상 앞에 붙은 `/' 제거 중
에전에는 절대경로로 설정하면 절대경로 인식했음
덮어쓰기 위험을 방지하기 위해 시스템에서 /제거
생성시 피드백이 없고 바로 덮어씀
옵션 | 뜻 |
---|---|
c(creat) | 새로운 묶음 생성 |
x(extract) | 묶인 파일 해제 |
t(list) | 묶음을 풀기 전 목록 보여줌 |
f(file) | 묶음 파일 지정 |
v(visual) | 과정을 보여줌 |
z | tar + gzip |
j | tar + bzip |
J | tar + xz |
-C 옵션을 통해 아카이브가 생성될 경로를 지정할 수 있음
[root@localhost dir01]# tar xJf bin.tar.xz –C /tmp
# tar cvf [생성될 아카이브 파일명] [아카이프할 파일이나 디렉토리]
# tar xvf [생성될 아카이브 파일명] [아카이프할 파일이나 디렉토리]
# tar tvf [생성될 아카이브 파일명] [아카이프할 파일이나 디렉토리]
[root@localhost dir01]# tar czf etc.tar.gz /etc/
bzip2 & bimzip2
압축속도 중간 압축률 중간
[root@localhost dir01]# tar cjf etc.tar.bz2 /etc/
``
xz & unxz
압축속도 느림 압축률 높음
[root@localhost dir01]# tar cJf etc.tar.xz /etc/
크기비교
[root@localhost dir01]# ls -l
합계 43688
-rw-r--r--. 1 root root 29378560 2월 21 01:36 etc.tar
-rw-r--r--. 1 root root 4783605 2월 21 01:36 etc.tar.bz2
-rw-r--r--. 1 root root 6523900 2월 21 01:36 etc.tar.gz
-rw-r--r--. 1 root root 4044864 2월 21 01:37 etc.tar.xz
참고문서 [하드링크와 심볼릭 링크], [파일 아카이브]