일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 리다이렉션
- 날짜변경
- ssh
- chatGPT
- MSBing
- nmcli
- docker network
- 엑셀파일명변경
- vgcreate
- vagrant kubernetes
- ansible
- lvcreate
- chmod
- pvcreate
- newbingai
- journalctl
- 프로세스
- permission
- docker
- swapon
- 같은폴더
- docker image
- HTTPD
- M365필터
- firewalld
- yum
- Kubernetes
- mount
- 랜카드인식불량
- tar
- Today
- Total
becool
20210406 (화) 본문
9:30 review
vi 에디터 커맨드 모드
찾기
/[Search-Word] 찾기
/\c[Search-Word] : 대소문자 구분없이 찾기
치환 - Extended모드
:s/Search-Word/Replace-Word → 현재 라인에서만 검색치환
:%s/Search-Word/Replace-Word → 전체 문서 라인 검색치환
:%s/Search-Word/Replace-Word/g → 한꺼번에 바꾸기
※ /g 가 없는 경우 : 한 라인당 1개(첫번째)만 치환함. 같은 라인에 동일한 단어가 여러개이면 첫번째만 치환하고 다음 라인으로 넘어감.
:%s/Search-Word/Replace-Word/gci → 각각 (y/n) 얼럿띄우기
:1,10 s/file/object/g → 1~10 라인 사이에서만 file을 object로 치환하기.
v visual mode
V visual line mode
ctrl+v visual blcok mode
=============================================
PERMISSION
파일 | 디렉터리 | |
read | 읽기 (cat) | 파일 목록확인 |
write | 내용변경 (vim) | 파일 생성 및 삭제 (touch, rm) |
exec | 파일을 실행 (./file명) | 디렉터리 이동 및 접근 (cd) |
WhoWhatWhich
ugo / +-= / rwx
$ chmod ug=rw,o=r file1.txt
============================================
쉘 메타문자
[user@localhost 20210406]$ ls -l user_file1*
[user@localhost 20210406]$ ls -l user_file1?
[user@localhost 20210406]$ ls -l user_file[a-z]*
-rw-rw-r--. 1 user user 0 Apr 6 12:07 user_fileaa
-rw-rw-r--. 1 user user 0 Apr 6 12:07 user_fileab
-rw-rw-r--. 1 user user 0 Apr 6 12:07 user_fileac
-rw-rw-r--. 1 user user 0 Apr 6 12:09 user_fileba
-rw-rw-r--. 1 user user 0 Apr 6 12:09 user_filebb
-rw-rw-r--. 1 user user 0 Apr 6 12:09 user_filebc
============================================
History
$ history : 명령어 히스토리
$ history 5 : 최근 5개만 노출
$ ![LINE NUMBER or 명령 앞글자] : 명령 재실행하기
$ ctrl + R : 명령어 검색기
history의 저장위치 : 홈디렉터리 내 숨김파일
-rw-------. 1 user user 13442 Apr 5 18:14 .bash_history
============================================
파이프라인 구성
파이프라인은 하나 이상의 명령이 파이프 문자 (|)로 구분된 시퀀스 이다. 파이프는 첫 번째 명령의 표준 출력을 다음 명령의 표준 입력에 연결한다.
[user@localhost 20210406]$ ls -l | grep test
-rw-rw-r--. 1 user user 121 Apr 6 14:54 test1
-rw-rw-r--. 1 user user 54 Apr 6 15:08 test2
ls의 결과값 중 test가 포함된 라인만 찾아서(grep) 노출
[user@localhost 20210406]$ ps aux | grep vim
user01 13056 0.1 0.2 149184 5008 pts/1 S+ 15:43 0:00 vim
user 13067 0.0 0.0 112812 976 pts/0 R+ 15:43 0:00 grep --color=auto vim
tee : 명령의 출력과 저장을 동시에 할 수 있음
[user@localhost 20210406]$ ls -t | head -n 10 | tee /tmp/ten-last-changed-files
user_filebc
test2
file1
test1
file2
file4
file3
date
user_filebb
user_fileba
============================================
프로세스
이름 | 플래그 | 커널에서 정의된 상태 이름 및 설명 |
실행 | R | TASK_RUNNING : 프로세스가 CPU에서 실행 중이거나 실행을 기다리고 있다. 프로세스는 사용자 루틴 똔느 커널 루틴 (시스템 호출)을 실행할 수도 있고 실행 중 (또는 실행 가능) 상태일 때 대기열에 추가되거나 대기 상태가 될 수 있다. |
수면 | S | TASK_INTERRUPTIBLE : 프로세스가 하드웨어 요청, 시스템 리소스 액세스, 신호 등 일부 조건을 기다린다. 이벤트 또는 신호가 조건을 만족하면 프로세스는 실행 중 상태로 복귀한다. |
D | TASK_UNINTERRUPTIBLE : 이 프로세스 역시 유휴 상태지만 s 상태와 달리 신호에 응답하지 않는다. 프로세스 중단이 예기치 않는 장치 상태를 가져올 수 있는 경우에서만 사용된다. | |
K | TASK_KILLABLE : 중단되지 않는 D 상태와 동일하지만, 대기 중인 작업이 강제 종료(완전히 종료) 신호에 응답할 수 있다. 유틸리티는 종료 가능한 프로세스를 D 상태로 표시하는 경우가 많다. | |
I | TASK_REPORT_IDLE : D 상태의 하위 집합이다. 커널은 부하 평균을 계산할 때 이러한 프로세스를 카운트하지 않는다. 커널 스레드에 사용된다. TASK_UNINTERRUPABLE 및 TASK_NOLOAD 플래그가 설정된다. 치명적인 신호를 받아들인다. | |
중지됨 | T | TASK_STOPPED : 일반적으로 사용자 또는 다른 프로세스에 의해 신호를 받아 프로세스가 중지(일시 중지) 됨. 다른 신호에 의해 프로세스가 계속(재개)되어 실행 중 상태로 돌아갈 수 있다. |
T | TASK_TRACED : 디버깅되는 프로세스가 일시적으로 중지되며 동일한 T상태 플래그를 공유한다. | |
Zombie | Z | EXIT_ZOMBIE : 하위 프로세스가 종료될 때 상위 프로세스에게 신호를 보낸다. 프로세스 ID(PID)를 제외한 모든 리소스가 릴리스 된다. |
X | EXIT_DEAD : 상위 프로세스가 나머지 하위 프로세스 구조를 클린업(reap)하면 프로세스는 완전히 릴리스 된 것이다. 이 상태는 프로세스 목록 유틸리티에 나타나지 않는다. |
PID (Process ID) : 프로세스를 구별하는 고유한 ID
PPID (Parent Process ID) : 부모프로세스 PID
ps
-e : 실행중인 모든 프로세스 출력
-f : 프로세스의 상세정보 출력
$ps -f -p [PID]
[user@localhost 20210406]$ ps -f -p 3101
UID PID PPID C STIME TTY TIME CMD
user 3101 3092 0 09:37 pts/0 00:00:02 bash
$ps -ef | grep [PID]
[user@localhost 20210406]$ ps -ef | grep 3101
user 3101 3092 0 09:37 pts/0 00:00:02 bash
user 13729 3101 0 16:08 pts/0 00:00:00 ps -ef
user 13730 3101 0 16:08 pts/0 00:00:00 grep --color=auto 3101
[user@localhost 20210406]$ ps aux | grep login
root 716 0.0 0.0 26440 1836 ? Ss 09:35 0:00 /usr/lib/systemd/systemd-logind
user 2266 0.0 0.2 317432 3836 ? Sl 09:37 0:00 /usr/bin/gnome-keyring-daemon --daemonize --login
user 13807 0.0 0.0 112816 976 pts/0 R+ 16:10 0:00 grep --color=auto login
$pgrep [Search-Word]
[user@localhost 20210406]$ pgrep -l login
716 systemd-logind
$pstree : 프로세스의 부모자식관계를 트리구조로 보여준다.
시그널
신호 번호 | 짧은 이름 | 정의 | 목적 |
1 | HUP | 끊어짐 | 터미널의 제어 프로세스 종료를 보고하는 데 사용된다. 또한 프로세스를 종료하지 않고 다시 초기화 (설정 재로드) 하는 데에도 사용된다. |
2 | INT | 키보드 인터럽트 | 프로그램이 종료된다. 차단하거나 처리할 수 있다. INTR키 시퀀스(ctrl +c)를 눌러 전송한다. |
3 | QUIT | 키보드 종료 | SIGINT와 유사하며 종료할 때 프로세스 덤프를 추가한다. QUIT 키 시퀀스 (ctrl + \ )를 눌러 전송한다. |
9 | KILL | 킬, 차단할 수 없음 | 프로그램이 강제 종료된다. 차단, 무시 또는 처리할 수 없다. 항상 치명적이다. |
15 기본값 |
TERM | 종료 | 프로그램이 종료된다. SIGKILL과 달리 차단, 무시 또는 처리할 수 있다. 프로그램 정상종료를 요청하는 방법이며, 자체 클린업이 가능하다. |
18 | CONT | 계속 | 프로세스가 중지된 경우 재개하기 위해 전송한다. 차단할 수 없다. 처리하더라도 항상 프로세스가 재개된다. |
19 | STOP | 중지, 차단할 수 없음 | 포르세스를 일시 중지 한다. 차단 또는 처리할 수 없다. |
20 | TSTP | 키보드 중지 | SIGSTOP과 달리 차단, 무시 또는 처리할 수 있다. SUSP 키 시퀀스 (ctrl + z)를 눌러 전송한다. |
kill
$ kill [OPTION] [SIG] [PID]
user 15046 14947 0 16:56 pts/1 00:00:00 sleep 1000
[user@localhost ~]$ kill 15046 → sigterm 정상종료 신호를 보냄
[user@localhost ~]$ sleep 1000
Terminated
user 15139 14947 0 17:00 pts/1 00:00:00 sleep 1000
[user@localhost ~]$ kill -s 2 15139 → kill -s I[NT 키보드 인터럽트 신호번호] [PID]
user 15270 14947 0 17:02 pts/1 00:00:00 sleep 1000
[user@localhost ~]$ kill -s SIGSTOP 15270 → kill -s [신호번호 19 STOP] [PID]
[1]+ Stopped sleep 1000
[user@localhost ~]$ ps aux |grep sleep
user 15270 0.0 0.0 108056 356 pts/1 T 17:02 0:00 sleep 1000
[user@localhost ~]$ kill -s SIGCONT 15270 → kill -s [신호번호 18 CONT] [PID]
[user@localhost ~]$ ps aux |grep sleep
user 15270 0.0 0.0 108056 356 pts/1 S 17:02 0:00 sleep 1000 → T상태에서 S상태로 다시 재개됨.
포그라운드 프로세스 (Foreground Process)
- 프로세스 실행 시 터미널의 제어권을 가져가는 프로세스
- 프로세스 실행이 종료되면 터미널 제어권을 반납
- 프로세스 실행 중인 동안 터미널에서 다른 작업을 수행할 수 없음.
백그라운드 프로세스 (Background Process)
- 프로세스 실행 시 백그라운드에서 실행되는 프로세스
- 제어 터미널을 가지지 않음.
- 프로세스 실행 후 다른 작업을 수행할 수 있음.
데몬(DAEMON)
- 운영체제 커널이 실행하고 제어하는 백그라운드 프로세스
$jobs 작업목록보기
$fg %[JOB ID] 포그라운드로 전환
$bg %[JOB ID] 백그라운드로 전환
ctrl + Z : 포그라운드 프로세스 중지 ^Z jobs에 중지된 프로세스로 보여짐
ctrl + C : 인터럽트 ^C jobs에서 프로세스 없음
부모 프로세스 (Parent Process)
자식 프로세스 (Child Process)
'linux' 카테고리의 다른 글
20210408 (목) (0) | 2021.04.08 |
---|---|
20210407 (수) -NEW (0) | 2021.04.07 |
20210407 (수) (0) | 2021.04.07 |
20210405 (월) (0) | 2021.04.05 |
20210402 (0) | 2021.04.02 |