728x90

프로세스의 개념

 

프로그램

소스 코드가 빌드되어 실행 가능한 실행 바이너리 파일(보조 기억 장치에 저장된 파일 자체)

 

프로세스

- 현재 시스템에서 실행 중인 프로그램

 

쓰레드

- 프로세스 내에서 실행되는 작업의 단위

 

프로세스의 부모-자식 관계

- 프로세스는 부모-자식 관계를 가짐

 

프로세스의 번호(PID)

- 각 프로세스는 고유한 번호를 가지고 있음

 

프로세스의 종류

- 데몬 프로세스: 백그라운드에서 독립적으로 실행되는 것

- 고아 프로세스: 부모 프로세스가 먼저 종료된 자식 프로세스

- *좀비 프로세스: 프로세스를 종료했음에도 불구하고 프로세스 테이블 목록에 남아있음

   * 버그나 개발의 완성도가 떨어지는 경우 등 좀비 프로세스의 발생 원인은 다양함

 

 

프로세스 관리 명령

 

프로세스 목록 보기: ps

- 현재 실행 중인 프로세스의 목록 출력

- 옵션 없이 사용하는 ps 명령은 현재 쉘이나 터미널에서 실행한 사용자 프로세스에 대한 정보를 출력함

* pts: 가상 터미널, 과거에는 터미널이라는 하드웨어 장비를 연결하여 명령어를 입력하였지만 요즘에는 가상 터미널을 사용함

 

프로세스의 상세 정보 출력: -f 옵션

- 프로세스의 상세한 정보 출력: PPID, 터미널 번호, 시작 시간 등

 

터미널에서 실행한 프로세스 정보 출력: a 옵션

 

터미널에서 실행한 프로세스의 상세 정보 출력: au 옵션

- a 옵션과 u 옵션을 함께 사용하면 터미널에서 실행한 프로세스의 상세 정보를 출력함: 사용자 계정 이름, CPU, 메모리 사용량 등

 

전체 프로세스 목록 출력: -e 옵션

- 시스템에서 실행 중인 모든 프로세스를 출력함

- TTY 값이 ? 인 것은 대부분 데몬으로 시스템이 실행한 프로세스

 

전체 프로세스의 더 자세한 정보 출력: -ef 옵션

 

특정 프로세스의 정보 출력: ps -ef | grep [프로세스 이름]

 

전체 프로세스 목록 출력(BSD 옵션): ax 옵션

- 시스템에서 실행 중인 모든 프로세스 출력

 

시그널 목록 출력: kill -l

- 시그널: 프로세스에 무언가 발생했음을 알리는 메시지

 

프로세스 종료: kill [-시그널] PID

시그널

2 인터럽트 시그널을 보냄
9 프로세스 강제 종료(윈도우에서 작업끝내기와 같은 기능)
15 프로세스와 관련된 파일을 정리한 후 종료함

 

현재 실행 중인 프로세스에 대한 정보를 주기적으로 출력: top

- 프로세스 관리 도구

 

PID 프로세스 ID USER 사용자 계정
PR 우선 순위 NI Nice 값
VIRT 프로세스가 사용하는 가상 메모리의  크기 RES 프로세스가 사용하는 메모리의 크기
SHR 프로세스가 사용하는 공유 메모리의 크기 %CPU 퍼센트로 표시한 CPU 사용량
%MEM 퍼센트로 표시한 메모리 사용량 TIME+ CPU 누적 이용 시간
COMMAND 명령 이름    

 

포그라운드, 백그라운드 프로세스와 작업 제어

 

포그라운드 작업

- 포그라운드 프로세스: 사용자가 입력한 명령이 실행되어 결과가 출력될 때까지 기다려야함

 

sleep 명령이 끝날 때까지 기다려야 함

백그라운드 작업

- 백그라운드 프로세스: 명령을 실행하면 명령의 처리가 끝나는 것과 관계없이 곧바로 프롬프트가 출력되어 사용자가 다른 작업을 계속 할 수 있음

 

프롬프트가 바로 나와 다른 명령을 실행할 수 있음

작업 제어

- 작업 제어는 작업 전환과 작업 일시 중지, 작업 종료를 의미함

작업 전환 포그라운드(백그라운드) 작업에서 백그라운드(포그라운드) 작업으로 전환
작업 일시 중지 작업을 잠시 중단
작업 종료 프로세스를 종료하는 것처럼 작업 종료

 

작업 목록 보기: jobs

 

 

작업 전환하기: bg %[작업 번호]

 

백그라운드에서 포그라운드로 전환
포그라운드에서 백그라운드로 전환

작업 종료하기: ctrl + c

 

로그아웃 후에도 백그라운드 작업 계속 실행하기: nohup

 

작업 예약

단일성 작업 예약 등록: at

 

정해진 시간에 반복 실행: crontab

 

 

* crontab 삭제: crontab -e

 

/var/spool/cron 디렉토리로 가면 사용자별 crontab 설정 파일이 존재함

- 이 파일을 편집해도 crontab 설정 가능

- 그러나 crontab -e 사용을 권장함

 

crontab 명령어를 사용하여 작성하는 cron은 개별 사용자용 크론

 

시스템 차원에서 cron 작업 예약 가능

- /etc/crontab 파일에서 작업 등록- /etc/cron.d/ 디렉토리에 복사 후 파일명 변경

 

crontab 심화학습: crontab -e 사용

1. 매년 1월 첫 번째 일요일에 재부팅이 되도록 설정

0 0 1-7 1 0 systemctl reboot

 

2. 매월 매일 오후 1시부터 5시까지 10분마다 date 명령어를 실행해서 datefile01에 이어쓰기로 저장하도록 설정

*/10 13-17 * * * date >> datefile01

 

> : 덮어쓰기(기존 파일 삭제 후 새 파일 생성)

>> : 이어쓰기(기존 파일에 이어쓰기)

3. 매년 3월, 6월, 9월 두 번째 화요일 14시 20분에 /etc/passwd 파일의 내용을 userfile에 갱신하도록 설정

20 14 8-14 3,6,9 2 cat/etc/passwd > /root/userfile

 

연습문제

1. 매월 1일 새벽 12시 30분에 datefile1에 date 명령어 결과가 이어쓰기로 써지도록 하라

30 0 1 * * date >> datefile1

 

2. 1분마다 date 명령어를 실행해서 datefile2에 이어쓰기로 써지도록 하라

* * * * * date >> datefile2

 

3. 매년 1월 1일 오후 12시에 date 명령어가 datefile3으로 덮어쓰기로 실행되도록 하라

0 12 1 1 * date > datefile3

 

4. 3번 작업만 삭제하려면?

crontab -e

* crontab -r은 권장하지 않음

 

5. 사용자 계정 user가 예약 작업을 하도록 설정

crontab -e -u user

 

엑세스 제어 설정 파일

at

/etc/at.deny

/etc/at.allow

 

crontab

/etc/cron.deny

/etc/cron.allow

 

1. *.allow 파일은 존재하지 않고 *.deny 파일만 존재하면, *.deny 파일에 등록된 사용자는 스케줄링 명령 사용 불가

 

2. *.allow 파일과 *.deny 파일이 둘 다 존재하면 *.allow에 등록된 사용자만 스케줄링 명령 사용 가능

 

3. 둘 다 존재하지 않으면 root만 스케줄링 명령 사용 가능

728x90
728x90

아카이브

여러 개의 파일을 하나의 파일로 묶어서 보관하는 방식
백업 및 복제 등의 용도로 사용

 

tar 옵션

옵션 설명
c(create) 새로운 묶음 생성
x(extract) 묶인 파일을 풀어줌
t(list) 묶음을 풀기 전에 목록을 보여줌
f(file) 묶음 파일명을 지정해줌
v(visual) 파일이 묶이거나 풀리는 과정을 보여줌

 

아카이브 생성

tar cf [TAR_FILE] [FILE1] [FILE2] [FILE3]
tar cVf [TAR_FILE] [FILE1] [FILE2] [FILE3]

 

아카이브 파일 목록 확인

tar tf [TAR_FILE]
tar tvf [TAR_FILE]

 

아카이브 해제

tar xf [TAR_FILE]
tar xvf [TAR_FILE]

 

압축

파일의 크기를 줄이는 방식

 

압축 옵션

압축 방식 옵션 확장자 특징
gzip z .tar.gz 가장 오래되고 속도가 빠름
bzip2 j .tar.bz2 고용량에 압축률이 gzip보다 좋음
xz J .tar.xz 가장 최근에 만들어짐, 압축률이 좋음

 

아카이브 및 gzip 압축 생성

tar zcf [TAR_GZIP_FILE] [FILE1] [FILE2] [FILE3]
tar zcvf [TAR_GZIP_FILE] [FILE1] [FILE2] [FILE3]

 

gzip 아카이브 파일 목록 확인

tar ztf [TAR_GZIP_FILE]
tar ztvf [TAR_GZIP_FILE]

 

gzip 아카이브 해제

tar zxf [TAR_GZIP_FILE]
tar zxvf [TAR_GZIP_FILE]

 

728x90
728x90

표준 입출력

프로세스는 입력 값에 대한 연산 이후 결과를 출력함
명령어는 일반적으로 키보드 입력 및 터미널 출력

 

번호 채널 이름 설명 장치
0 stdin 표준 입력 키보드
1 stdout 표준 출력 모니터(터미널)
2 stderr 표준 에러 모니터(터미널)

 

 

리다이렉션

프로세스의 입력 또는 출력 대상을 변경
일반적으로 출력 값을 파일로 저장하는 용도로 사용
표준 입출력 및 표준 에러에 대한 처리 가능

 

메타 문자 기능
< 표준 입력 재지정
> 표준 출력 재지정(덮어쓰기)
>> 표준 출력 재지정(이어쓰기)
2> 표준 에러 재지정(덮어쓰기)
2>> 표준 에러 재지정(이어쓰기)
&> 표준 출력 & 에러 재지정(덮어쓰기)
&>> 표준 출력 & 에러 재지정(이어쓰기)

 

 

파이프와 티

파이프

선행 프로세스의 실행 결과를 후속 프로세스의 입력으로 전달하는 것

 

파이프와 유사하지만 출력에 대한 처리를 2가지 방식으로 제공
리다이렉션과 파이프의 기능 동시 사용

 

728x90
728x90

정규 표현식

 - 특정한 규칙을 가지는 문자열을 정의하기 위한 표현 방식

 

정규 표현식 메타 문자

메타 문자 설명
^ 행의 시작 지정
$ 행의 마지막 지정
. 임의의 문자 1개 매칭
* 0개 ~ 무한대 갯수의 임의의 문자 매칭
[] 패턴 내에서 1개 문자 매칭
[^] 패턴을 제외한 1개 문자 매칭

 

정규 표현식 사용 예제

//정규 표현식을 이용한 파일 내용 검색
grep 'root' /etc/passwd

//root를 포함하는 행 검색 후 행번호 출력
grep -n 'root' /etc/passwd

//root를 포함하지 않은 행을 검색
grep -v 'root' /etc/passwd

//root가 매치되는 패턴 개수 구하기
grep -c 'root' /etc/group

//행의 처음에서 검색
grep '^root' /etc/passwd

//nologin으로 끝나는 행 검색
grep 'nologin$' /etc/passwd

//p로 시작하고 x로 끝나는 7자리 단어가 포함된 행 검색
grep 'p.....x' /etc/passwd

//bash 패턴을 단어 단위로 검색
grep -w 'bash' /etc/passwd

grep -w 'a..' /etc/passwd
grep -w 'g..' /etc/passwd

grep 'o*t' /etc/passwd

grep 'a[abcde][a-z]' /etc/passwd
grep 'a[^a-d][a-z]' /etc/passwd
grep 'a[^a-l][a-z]' /etc/passwd

 

728x90
728x90

vi 편집기

- 리눅스 시스템의 기본 편집기
- vi 편집기의 향상된 버전
- 텍스트 기반의 동작 방식
- 4가지 동작 모드 지원

 

MODE 설명
Command mode 커서 이동 및 단순 편집 기능
 - vi 에디터의 기본 모드
 - 명령을 수행하는데 사용(복사, 삭제, 이동)
Edit mode 내용 추가 및 수정
Extended mode 추가 기능 지원
 - vi 에디터의 환경 설정
 - 파일 저장, 종료
 - 검색, 치환(찾아바꾸기)
Visual edit mode 블록 처리 기능 제공

 

vi 편집기 단축키 정리

  단축키 설명
command 모드 > edit mode i 커서 앞
a 커서 뒤
o 커서 아래 라인에
I 라인에 앞
A 라인에 뒤
O 커서 위에
R REPLACE 모드
r 문자 하나만 수정
S 라인 자체를 삭제하면서 edit mode 진입
s 한 단어 삭제 후 edit mode 진입
C 커서부터 라인 끝까지 삭제 후 edit mode 진입
cw 한 단어 삭제하고 edit mode 진입
lastline mode :q 수정을 안했을 시에 종료
:q! 수정을 저장하지 않고 종료
:w 저장하기
:wq 저장하고 종료
:x 저장하고 종료
:w or wq or :x PATH/file 명 다른 이름으로 저장하기
:set nu or set number 행 번호 표시
:set nonu 행 번호 표시 취소
:n,m,d n라인부터 m라인까지 삭제
:n,m co l n 라인부터 m 라인까지 복사해서 l 라인 아래에 붙여넣기
:n,m m l n 라인부터 m 라인까지 잘라내서 l 라인 아래로 이동
:%s/A/B/g 문서 전체에서 A를 B로 바꾸기
SP, EP s/A/B/g SP 라인부터 EP 라인까지 A를 B로 바꾸기
/string string 검색(내림차순)
?string string 검색(오름차순)
커서 이동 h 왼쪽 이동
j 아래 이동
k 위로 이동
l 오른쪽 이동
^ 라인에 맨 앞에
$ 라인에 맨 뒤에
H 화면에 처음 라인
L 화면에 마지막 라인
gg or 1G 문서의 처음
G 문서의 마지막 라인
num G number 라인
삭제 dd 라인 삭제(잘라내기)
dw 단어 삭제(잘라내기)
d^ 커서 앞에서 라인 처음까지 삭제(잘라내기)
d$ 커서 포함 라인 뒤까지 삭제(잘라내기)
x 한 문자 삭제(잘라내기)
실행 취소/재실행 U 라인에 수정한 것으로 원복하고 싶을 때
u 작업 취소
ctrl + r 작업 재실행
복사/붙여넣기 yy 라인 복사
yw 단어 복사
y^ 커서 앞부터 라인 앞까지 복사
y$ 커서 포함 라인 뒤까지 복사
P - 라인 복사 시에는 커서의 윗라인에 붙여넣기
- 라인이 바뀌지 않는 복사 시에 커서의 앞에 붙여넣기
p - 라인 복사 시에는 커서의 아래에 붙여넣기
- 커서의 뒤에 붙여넣기

 

728x90
728x90

파일(File)이란?

 - 데이터를 가지고 있는 저장 장치에 저장된 객체

 

디렉토리(Directory)란?

 - 파일을 포함할 수 있는 특수한 파일

 

디렉토리 및 파일 내용 확인

파일 내용 확인

명령어 옵션 설명
cat cat [FILE] 파일 내용 전체 확인
head
head [OPTION] [FILE] 파일의 맨 앞 내용 확인
-n [NUM] 파일의 맨 앞부터 출력하고자 하는 행의 갯수 지정
tail
tail [OPTION] [FILE] 파일의 후반부 확인
-n [NUM] 파일의 맨 뒤부터 출력하고자 하는 행의 갯수 지정
more/less  more/less [FILE] 파일 내용을 페이지 단위로 확인
grep  grep [OPTION] [PATTERN] [FILE]

[OPTION]
 -i: 대소문자 상관없이 검색
 -n: 찾는 내용이 있는 행 번호를 같이 출력
 -v: 특정 내용을 제외하고 검색
 -c: 찾는 내용이 포함된 행의 갯수 출력
 -w: 단어(word) 단위 검색 
파일 내용에서 찾고자 하는 내용이 포함된 행 출력

 

디렉토리 및 파일 관리 작업

파일 관리 명령어

명령어 사용 용도 사용법
mkdir 디렉토리 생성 mkdir <DIRECTORY>
rmdir 디렉토리 삭제 rmdir <DIRECTORY>

 

 

명령어 사용 용도 사용법
touch 새로운 빈 파일 생성 touch [FILE]
cp 파일/디렉토리 복사 cp [SOURCE DESTINATION]
mv 파일/디렉토리 이동 mv [SOURCE DESTINATION]
rm  파일 삭제 rm [FILE]

 

 

생성 touch [파일 이름]
mkdir [디렉토리 이름]
빈 파일 생성
디렉토리 생성
복사
cp [원본 파일] [사본 파일]
cp [원본 파일] [디렉토리]
단일 파일 복사
cp [원본 파일1] [원본 파일2] [원본 파일N] [디렉토리] 다중 원본 파일 복사
cp -R [원본 디렉토리1] [원본 디렉토리2] [원본 디렉토리N] [디렉토리] 다중 원본 디렉토리 복사
cp -R [원본 디렉토리] [대상 경로] 디렉토리 복사
이동
mv [원본 파일] [디렉토리] 단일 파일 이동
mv [원본 파일1] [원본 파일2] [원본 파일 N] 디렉토리 다중 파일 이동
mv [원본 디렉토리] [디렉토리] 단일 디렉토리 이동
mv [원본 디렉토리1] [원본 디렉토리2] [원본 디렉토리N] [디렉토리] 다중 원본 디렉토리 이동
삭제 rm [파일]
rm [파일 1] [파일2] [파일3]
rmdir [디렉토리]
rm -r [디렉토리]
rm -rf [디렉토리1] [디렉토리2] [디렉토리N]
단일 파일 삭제
다중 파일 삭제
빈 디렉토리 삭제
디렉토리 및 하위 파일 삭제
다중 디렉토리 및 하위 파일 삭제

 

링크 파일

기본 파일 구조

- 파일의 데이터를 접근할 때는 *i-node 테이블을 통해 접근

- 테이블에서 데이터블록의 위치 확인

- 데이터 블록에 기록된 위치(섹터)에 데이터 저장

* i-node table이란? 파일의 정보를 담고 있는 테이블

 

링크 파일이란?

- 데이터블록에 대한 접근 경로를 추가해주는 방식의 파일

- 파일에 대한 접근성 향상

- 디스크 공간 절약

- 하드 링크와 심볼릭 링크로 구분

 

구분 하드 링크 심볼릭 링크
명령어 ln [원본 파일] [링크 파일] ln -s [원본 파일] [링크 파일]
정의 파일이 물리적으로 저장된 주소를 가리키는 링크 파일이 저장된 논리적인 경로를 가리키는 링크
접근 방식 원본과 같은 i-node 테이블(inode 값 공유) 원본과 다른 테이블(inode 값 공유 x)
디스크 공간 필요 없음 약간의 공간 필요
디렉토리 불가능 가능
파일 시스템 동일한 파일 시스템만 가능 다른 파일 시스템도 가능
가리키는 대상 파일 파일 혹은 디렉토리
원본 파일 제거 이상 없음 접근 불가능

- 파일은 하나의 하드 링크

- 디렉토리는 두 개의 하드 링크를 가짐
- i-node가 동일함 = 물리적으로 저장된 디스크의 위치가 동일함

 

 

심볼릭 링크는 경로를 가르키기 때문에 해당 경로에 원본 파일이 지워지면 접근 불가 (=바로가기)

하드 링크의 경우에는 원본 파일이 지워지더라도 하드 링크를 통해 접근 가능

 

파일 및 디렉토리 검색

명령어 설명 사용법
locate - 기존 데이터베이스 내에서 검색
- 검색 속도가 빠름
- 파일 시스템 구조 변경 시 검색이 안될 수 있음
- 파일 이름으로만 검색
locate [PATTERN]
find - 직접 접근해서 검색하는 방식
- 시간이 오래 걸릴 수 있음
- 여러 가지 조건으로 검색 가능
- 검색과 동시에 추가 작업 가능
find [PATH] [EXPRESSION] [ACTION]

EXPRESSION - 검색 조건
 - name [FILENAME]: 파일 이름 지정
 - type [FILETYPE]: 파일 종류 지정
 - perm [PERM]: 퍼미션 지정
 - user [USER]: 소유자 지정
 - size [+|-][SIZE]: 파일 크기

ACTION - 검색 후 실행할 작업
 - print: 검색한 파일 경로 및 이름 표시
 - ls: 검색한 파일에 대해 자세한 정보를 표시(ls -l과 유사한 형태)
 - exec [COMMAND] {} \;: 검색한 파일에 대해 특정 명령어 실행
 - ok [COMMAND] {} \;: 검색한 파일에 대해 특정 명령어 실행 전 사용자에게 물어본 후 작업 실행

 

728x90
728x90

리눅스 명령어 실습

 

uname [OPTION]

- 운영 체제 버전, 커널 버전 등을 확인하는 명령어

 

OPTION 설명
-s 운영체제 종류 확인
-r 커널 버전 확인

 

cal

- 달력 출력 명령어

 

OPTION 설명
cal 오늘 날짜의 달력 출력
cal MM YYYY 특정 연월 달력 출력
cal DD MM YYYY 특정 일의 달력 출력

 

 

여러 명령어를 한 줄에 입력($ COMMAND1;COMMAND2)

 - 명령어와 명령어 사이의 구분자로 세미콜론(;)을 사용하여 여러 명령어를 한 줄에 입력할 수 있음

 - 명령어를 입력한 순서대로 출력(COMMAND1 실행 > COMMAND2 실행)

728x90
728x90

계층 구조 소개

 

* 점선: 링크를 의미함

 

bin 일반 명령어
boot bootloader 관련 설정 파일, 초기 부팅 파일 시스템
dev 시스템의 장치(하드웨어 장치) 파일
etc 시스템 설정 파일
home 일반 사용자의 홈 디렉토리가 위치함
root 루트 사용자 디렉토리
tmp 모든 사용자들이 사용 가능한 디렉토리
usr 소프트웨어 설치 시 설치되는 파일들이 위치함
var 로그 파일 저장

 

작업 디렉토리와 파일 경로 지정

 

홈 디렉토리

 - 사용자가 파일 생성, 삭제 등의 작업을 할 수 있는 경로

 

작업 디렉토리

 - 사용자가 명령어를 실행할 때 기준이 되는 경로

 - 사용자 로그인 후 기본 작업 디렉토리는 사용자의 홈 디렉토리로 지정됨

 - 작업 디렉토리 변경 시 cd 명령어를 사용하여 변경할 수 있음

 - 현재 작업 디렉토리는 pwd 명령어로 확인할 수 있음

 

절대 경로

 - 최상위 디렉토리(/)부터 시작하는 전체 경로

 

상대 경로

- 작업 디렉토리로부터 대상 파일의 상대적인 경로

. : 현재 디렉토리

.. : 1단계 상위 디렉토리

 

728x90

+ Recent posts