티스토리 뷰
* 영어가 다르면 의미도 다름
* man + 명령어 또는 명령어 -h(help)를 통해 옵션을 사용할 줄 알아야 함.
1. 프로세스 : 메모리에 이미 실행중이라 작동되고 있는 것
> 주 프로세스 : systemd(CentOs7 미만 : init)
> 식별자(pid - 프로세스 식별자)가 없는 프로그램은 없다.
> 프로세스는 두 가지 방식으로 운영이 됨. Foreground Process와 Background Process로 나뉨
1) pstree
> 프로레스 구조를 트리 형태로 출력
#pstree [옵션]
<옵션>
-p : 프로세스 ID 출력
#pstree
#pstree -p : pid까지 출력
2) ps
> 프로세스 상태 출력(현재 상태). 사용자와 관련된 프로세스만 출력.
#ps [옵션]
#ps -aux
#ps -ef
< 옵션 >
-a : All
-u : 사용자 정보 출력
-x : 터미널과 관련 없는 프로세스 정보 출력(-au 까지만 적으면 터미널과 관련 있는 것만 나오는 것)
-e : 커널 프로세스를 제외한 모든 프로세스를 보여준다.
-f : Full 포맷. UID, PID, PPID 등이 함께 표시되는 유닉스 스타일을 의미한다.
USER : USER NAME. 프로세스를 실행한 계정명.
PID : 프로세스 식별자
PPID : Parent PID. 부모 프로세스의 식별자
C : CPU의 짧은 시간 사용률
TTY : 어떤 경로로 들어왔는지. 접속 경로, 접속 위치, 터미널 등
STAT : 프로세스의 상태. 실행인지 대기인지 등
START : 프로세스 실행 시작 시간. 언제 실행 시작하였는지. S(sleeping), R(running), T/D(stop), Z(zombie)
TIME : 실행된 후 누적 실행시간
CMD 또는 COMMAND : 명령어/프로세스명/프로그램명
%CPU : 해당 프로레스의 CPU 점유율. 이 프로그램이 CPU를 얼마나 사용하는지%MEM : 해당 프로세스의 메모리 점유율. 이 프로그램이 메모리를 얼마나 사용하는지VSZ : 가상 메모리 사용량RSS : 실제 메모리 사용량PR : 우선순위 값. 모든 프로세스를 다 동일하게 대접하지 않음. priority. 사용자가 변경할 수 없음. 오직 CPU만이 가능하다. 수치가 낮을수록 우선순위가 높다. 0은 거의 무한대를 의미NI : 이건 관리자가 바꿀 수 있음.VIRT : 가상메모리 사용량RES : 실제 메모리 사용량SHR : 공유메모리. 프로세스가 메모리를 공유할 때(공동 자산)S : 상태
3) top
> 프로세스 상태를 실시간 출력(디폴트 3초마다 갱신)
#top [옵션]
> 실행할 때 옵션
-d + 숫자: 갱신주기 설정
#top -d 5 : 기본 3초가 아닌 5초마다 갱신
-n + 숫자: 갱신횟수 설정
#top -n 4 : 4회만 갱신 후 자동 멈춤
> 실행 후 옵션
-P : CPU 점유율 순 정렬 출력
top :
up :
2 users : 사용자 2명 접속
load average : 부화 평균. 1/5/15분 단위. 1분 평균/5분 평균/15분 평균 포맷으로 알려줌
tasks(일꾼) : 총 몇개의 프로세스가 실행되고 있는지.
running : tasks 중 실행중인 프로세스
sleeping : 실행중인 프로세스 외 나머지. 언제든지 부르면 깨어날 수 있는 프로세스
stopped :
zombie : 멍 때리고 있는 상태. 아무일도 안하고... 자식 프로세스는 죽어도 부모 프로세스와는 상관이 없음. 부모 프로세스가 죽으면 자식 프로세스는 따라 죽음. 부모 프로세스가 죽어도 자식 프로세스가 살아남아 멍때리는 상태가 좀비 프로세스이다. 이런 프로세스는 관리자가 찾아 kill 시켜야 한다. 부모 프로세스가 없으면 자식 프로세스가 일을 할 수 없기 때문. 부모 프로세스는 자식 프로세스를 일 시킨다.
%Cpu us : us-사용자 점유율, sy-시스템(=커널) 점유율, ni-처리하느라 사요중, id-놀고있는, wa-외부처리 대기시 협의되는 용량, hi-하드웨어나 소프트웨어 처리, si-, st-. wa까지는 신경써서 알아야함
%CPU가 10% 넘어갈 일이 거의 없음. 특히 30-40% 넘는 점유율이 있다면 공격으로 받아들이고 kill 시키는 것이 좋음
MiB Mem : total 메모리, free : 남은 용량, used 사용된 용량
MiB Swap : 임시 메모리. 주 기억장치가 모자랄 때 사용하기도 함. 가상 메모리가 있기 때문에 swap을 굳이 쓸 일이 없긴 하다.
4) kill
> 시그널을 프로세스로 전송하는 명령어
> 프로세스 종료
#kill [옵션] [PID]
< 옵션 >
-l : 시그널 목록 출력
#kill -9 4733
15번 ⭐ : 정상종료. init 0나 shutdown 명령어 등을 실행하면 15번 시그널에 프로세스에 전송됨
9번 ⭐ : 강제종료. kill -9 이런 것들..
1번 : 재시작
2번 : 인터럽트
3번 : 시스템 종료. quit
18 : 지속. continue. sleeping 프로세스를 깨우는 상황일 때 등
19 :
20 :
5) killall
> 여러 프로세스를 한 번에 종료시킬 수 있음
> pid가 아닌 프로세스명으로 종료시키는 점이 #kill과의 차이점
#killall [옵션] [프로세스명]
#killall -9 httpd
6) nice
> 프로그램 실행 시 우선 순위값 변경
> 우선 순위 값 범위 : -20 ~ 19(디폴트 : 0)
> 우선 순위 값은 낮을수록 우선순위가 높아진다.
#nice [옵션] [프로그램]
< 옵션 >
-n : 우선 순위 값 지정
#nice -10 top : 우선순위 ni를 10 낮춤(-10은 +10)
#nice --20 top : 우선순위 ni를 20 올림(--20은 -20)
프로세스가 여러 개일때 관리해야한다 = 스케줄링 해야한다. 자원이 한정되어있기 때문.
이때 스케줄링은 우선순위를 기준으로 해야한다.
7) renice
> 프로그램 실행 후 우선 순위값 변경
# renice [옵션] [PID]
#renice -10 [top의 PID] : 우선순위를 10 올림
#renice 10 [top의 PID] : 우선순위를 10 낮춤
< 예시 상황 >
* 편의상 PR/NI 형식으로 표시하겠다.
#nice -10 top
결과 : 30/10
#nice --10 top
결과 : 10/-10
#nice -10 top
결과 : 30/10
#nice --10 top
결과 : 10/-10
(해당 창을 q로 중지하지말고 다른 창에서)
#ps -aux -> top의 PID 확인
#renice 10 37001(확인한 top의 PID)
결과 : 30/10
#renice -10 37001
결과 : 10/-10
8) cron ⭐ ⭐ ⭐
> 실무에서 정말 많이 쓰는 명령어.
* shutdown 명령어에서는 시간은 설정할 수 있어도 날짜와 명령어 설정을 못한다. 이때 cron을 사용하면 참 편리하다.
> 스케줄링
> 주기적 : cron, 일시적(at, anacron)
#crontab [옵션]
<옵션>
-l : 스케줄 목록 출력
-e : 스케줄링 설정(vi 에디터가 실행됨)
-r : 스케줄 전체 삭제
> 스케줄 포맷(*은 주기적임을 나타냄. 매주, 매일, 매월)
[분] | [시] | [일] | [월] | [요일] | [실행할 명령어] |
0~59분 | 00~23시 | 1~31일 | 1~12월 | 0~6일 (일요일: 0, 7) |
ex) 45 16 * * * /home/cron.sh : 매일 16시 45분에 /home/cron.sh 실행
[ 스케줄 설정하는 방법 ]
1️⃣ 어떤 디렉터리에 vi 파일 생성
2) 해당 vi 파일에 실행하고픈 명령어 작성
3) 해당 vi 파일에 권한 설정
4) #crontab -e 명령어를 통해 어느 경로에 파일을 명령어로써 실행할 것인지 설정
5) #crontab -l 명령어를 통해 스케줄 목록 출력하여 해당 파일이 제대로 실행될 것인지 확인
6) 스케줄이 제대로 실행되었는지 확인
참고)
2. 디스크 관리
1) 디스크 관련 명령어
1️⃣ df
> 파일 시스템 단위로 사용량 출력
#df [옵션] [장치명]
- Filesystem : 리눅스가 파일시스템으로 인식
- 1K-blocks
- Used
- Available
- Use%
- Mounted on
< 옵션 >
-h : Human Readable 옵션. 사용자가 읽기 편하게 용량이 표시됨. G, M, K 등으로...
-k : KB 단위로 표시
-m : MB 단위로 표시
-t : Type 확인 가능
2️⃣ du
> 디렉터리 단위로 사용량 출력
#du [옵션]
2) 하드디스크 추가
1️⃣ HDD 추가 : 디스크에 전원케이블과 메인메모리 케이블을 메인보드에 꽂는다.
* 핫스와핑 기능 *
: 핫 스와핑 기능이란,
* Disk Type(Interface 타입에 가까움)
(1) IDE/EIDE - 4개까지 설치 가능
> /dev/hd[물리적 HDD 개수][파티션 넘버]
> /dev/hda1 : 첫 번째 HDD의 첫 번째 파티션
(2) SCSI - 16개까지 설치 가능(서버용 하드디스크)
> /dev/sd[물리적 HDD 개수][파티션 넘버]
(3) S-ATA - 127개까지 설치 가능
> /dev/sd [물리적 HDD 개수][파티션 넘버]
/dev/sda |
* Memory Type
(1) NVMe : 비휘발성 메모리. 전원공급이 안되도 메모리가 남아있는 것.(참고: RAM은 휘발성 메모리이다)
속도 : IDE/EIDE < SCSI < S-ATA < NVMe
2️⃣ 파티션 나누기(이만큼 쓰겠다는 영역 설정)
* 디스크의 구성 *
(1) 트랙
(2) 섹터
(3) 실린더
#fdisk [장치명]
#fdisk -l : HDD 목록 출력(#df 만으로는 아직 안보임)
#fdisk /dev/nvme0n2
* 파티션 종류
(1) Primary Partition(기본 파티션): 리눅스에서는 기본 파티션을 4개까지밖에 못나눔
/dev/sda1 | /dev/sda2 | /dev/sda3 | /dev/sda4 |
(2) Extended Partition(확장 파티션)
> 더 나누고 싶을때 이용. 확장 파티션으로 바꾸기만 해서는 사용할 수 없음. 논리 파티션을 위한 공간이 확장 파티션이라고 생각하면 편하다.
> 마지막 파티션을 확장 파티션으로 바꾼 후, 해당 확장 파티션을 논리 파티션으로 바꿔주어야 사용가능.
/dev/sda1 | /dev/sda2 | /dev/sda3 | /dev/sda4(확장 파티션) |
(3) Logical Partition(논리 파티션)
/dev/sda1 | /dev/sda2 | /dev/sda3 | /dev/sda4 | /dev/sda5 |
3️⃣ 파일 시스템 생성 : 어떤 방식으로 이 영역에 저장할 것인가. = 윈도우에서 포맷이라고 부르는 기능
#mkfs.xfs [장치명]
#mkfs.xfs /dev/nvme0n2p1
#mkfs -t ext4 /dev/nvme0n2p1
< 옵션 >
-t : ext4까지 생성가능
4️⃣ 마운트 : 생성된 파일 시스템을 리눅스에 연결시켜주는 것
> 리부팅 하면 마운팅 했던 건 날아감
#mount -t [파일시스템 유형] [장치명] [마운트 포인트(마운트할 지점)]
> xfs 파일 시스템은 -t 옵션을 붙이지 않아도 자동으로 된다.
#mount /dev/nvme0n3p1 /mnt
#mount -t ext4 /dev/nvme0n2p1 /mnt
5️⃣ 마운트 해제
#umount [장치명]
#umount [마운트 포인터]
#umount /dev/nvme0n3p1
#umount /mnt
6️⃣ 자동 마운트
> 관련 파일: /etc/fstab
(1) vi /etc/fstab을 통해 에디터 열기
(2) 아래의 화면처럼 입력
[장치명] | [마운트 포인트] | [파일 시스템 유형] | [옵션] | [덤프 여부] | [검사 여부] |
/dev/nvme0n4p1 | /mnt | ext4 | defaults | 0 | 0 |
- 장치명: 마운트할 장치
- 마운트 포인트: 장치를 마운트할 지점
- 파일 시스템 유형: 해당 파일 시스템(ext, ext2, ext3, ext4, xfs)...iso9660(CD-ROM)
- 옵션: defaults(rw, suid, dev, exec, auto, nouser, async)
- auto: 부팅 시 자동 마운트 허용
- exec: 실행 파일 실행 허용
- suid: SetUID, SetGID 사용 허용
- ro: 읽기 전용
- rw: 읽기, 쓰기 허용
- user: 일반 사용자로 마운트 할 수 있게 허용
- nouser: 일반 사용자 마운트 제한
- noauto: 자동 마운트 제한
- noexec: 실행 파일 실행 제한
- nouid: SetUID, SetGID 사용 제한
- usrquota: 일반 사용자 쿼터 설정
- grpquota: 그룹 사용자 쿼터 설정
- 덤프 여부: "부팅 시" 덤프(백업). 따라서 덤프 여부란, 시스템이 부팅을 할 때 어떤 오류가 생길 수 있는데, 그랬을 때 백업을 할 지 여부를 의미한다.(0: 백업x, 1: 백업 설정)
- 검사 여부 : "부팅 시" 파일 시스템 검사 여부(0: 검사x, 1: root 파일 시스템 검사, 2: root 파일 시스템을 제외한 모든 파일 시스템 검사)
7️⃣ 파티션 삭제
> 마운트 해제를 한 뒤에 파티션을 삭제하는 것이 안전합니다.
> 파티션까지 삭제했다면, 하드디스크까지 삭제해도 좋습니다.(단, 자동마운트 설정이 없는 상태여야 함)
3. 파일 시스템(#df -Th를 통해 타입을 확인하게 됐을때 나오는 것들)
> 리눅스는 모든 주변 장치를 파일 시스템으로 인식한다.
> 종류 : ext, ext2//ext3, ext4, xfs
> 저널링 기능 : ext3 이상에서 지원되는 기능
> 저널링 파일 시스템(처음부터 저널링 기능을 가지고 태어난 아이들) : xfs, jfs, reiserfs. CentOS 7 이상에서 xfs 사용 시작
- Total
- Today
- Yesterday
- Abstraction
- 비주얼스튜디오
- 크롬
- 바이트코드
- SWLIfeCycle
- vscode
- 소스파일
- jre
- 프로그래밍언어
- 프론트엔드
- 앱개발
- 알고리즘
- 구현
- 데이터추상화
- SW생명주기
- jvm
- 브라우저뜻
- 웹개발자
- 익스플로러
- 의사코드
- D&C
- 구글크롬
- 사이트만들기
- javase
- 브라우저
- VisualStudio
- 개발계발
- 데이터구조
- 기계어
- ADL
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |