일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 리버싱
- 컴퓨터 구조
- 인공지능
- 넘파이
- abex crackme
- html
- C언어
- 리버싱 문제
- webhacking.kr
- 리버싱 워게임
- 리눅스
- 웹
- 알고리즘
- 백준
- sql injection
- 머신러닝
- webhacking
- 자바스크립트
- php
- CodeEngn
- 회귀 수식
- MySQL
- 보안
- writeup
- 해킹
- 워게임
- 웹해킹
- 백준 알고리즘
- 리액트
- 어셈블리어
- Today
- Total
인공지능 개발일지
[Linux] 프로세스 명령어와 사용법 본문
안녕하세요.
오늘은 리눅스 프로세스 관련 명령어를 정리해 보겠습니다.
프로세스는 현재 실행 중인 프로그램을 의미합니다.
프로세스를 배울 때 접하는 UID, GID, PID라는 말을 들어 보실 텐데요.
이것의 뜻은 아래와 같습니다.
- UID (User ID): 소유자 아이디, 문자
- GID (Group ID): 그룹 아이디, 문자
- PID (Process ID): 프로세스 식별자, 숫자
이들은 ps 명령어를 실행할 때 나오는 용어들이지요.
여기서 PID는 프로세스 아이디입니다.
프로세스라는 것은 실행 중인 프로그램으로
간단하게 생각해서 각각의 명령을 수행할 때마다 프로세스 넘버가 부여되고
이를 통해 작업을 구분한다고 생각하시면 됩니다.
아래와 같이 프로세스 명령어를 정리할 수 있습니다.
1. 프로세스 기본 명령어
프로세스 기본 명령어 | 뜻 |
ps | 현재 프로세스의 목록 출력 |
pgrep [옵션] [패턴] | 지정한 패턴과 일치하는 프로세스의 정보를 출력 |
pstree | 프로세스간의 관계를 트리구조로 보여줌 |
pkill [시그널] [프로세스명] | 프로세스명으로 종료 (문자) |
kill [-시그널] [PID] | PID로 프로세스 종료 (숫자) |
+pgreb은 ps | grep와 비슷
그런데 이때 시그널이라는 개념이 나오는데요.
이것은 말 그대로 시그널을 보내는 것입니다.
보통 그린라이트보다는 레드라이트(경고,위험)을 알리는 역할로
프로세스를 종료시킬 수 있습니다.
그러니까 시그널이라고 해서 signal과 같은 명령어가 있는 것이 아니고
signal이라는 개념을 사용하는 명령어로 kill, pkill 등이 있는 것입니다.
그런데 주의할 것은 위에 표에 나와 있다시피 kill과 pkill명령은 인자로 시그널을 주는데요.
옵션같이 부가 기능이 아니라 시그널의 종류를 입력해주는 것입니다.
여기 들어갈 시그널의 종류는 kill -l 명령어로 아래와 같이 확인해 볼 수 있습니다.
각각의 시그널들이 번호로 지정되어 있습니다.
이것은 매크로 상수로 정의되어 있는 값이므로 번호로 바로 사용하면 됩니다.
참고로 pkill, kill 명령을 사용할 때 프로세스 번호 PID 말고도 % 작업 번호로도
프로세스를 종료할 수 있습니다.
지정 방식의 차이인 것이죠.
2. 우선순위 & 작업 공간
우선순위 & 작업 공간 | 뜻 |
nice [-n 조정수치] [명령어] | 기존 우선순위+조정수치 |
renice [조정수치] [프로세스 번호] | 기존 우선순위=>조정수치 |
top | 프로세스 정보 주기적 출력 |
sleep [시간] | 지정한 시간동안 멈춤 |
wait [프로세스 번호] | 지정한 프로세스의 자식 프로세스가 끝날 때까지 기다림 |
bg [%작업번호] | 해당 번호의 작업을 백그라운드로 전환 |
fg [%작업번호] | 해당 번호의 작업을 포그라운드로 전환 |
stop [%작업번호] | 포그라운드 작업 정지 |
jobs | 백그라운드 작업 리스트 출력 |
nohup [명령] & | 로그아웃 후에도 백그라운드 작업 실행 |
자 다음으로는 우선순위와 작업 공간인 포그라운드와 백그라운드에 대해 알아봅시다.
1) 우선순위
우선순위는 프로세스의 우선순위를 지정해주어 효율성을 높이기 위해 사용합니다.
먼저 그룹의 아이디가 GID이고 프로세스의 아이디가 PID라는 약자를 쓰듯이
우선순위는 NI라는 약자를 씁니다.
이는 ps -l에서 확인해 볼 수 있습니다.
여기까지가 우선순위의 개념이고
이 우선순위를 조정하는 명령어가 nice와 renice입니다.
우선순위는 고기 등급, 내신 등급처럼 낮을수록 높을 우선순위를 가집니다.
우선순위는 -20부터 19까지 존재합니다.
그렇다면 nice와 renice의 차이는 무엇일까요?
이 둘은 우선순위 변경 방식과 힘이 다릅니다.
nice는 설정한 조정 수치만큼을 더할 수만 있습니다.
더하는 것은 우선순위를 낮추는 것입니다.
즉 우선순위를 낮출 수만 있고 높일 수는 없습니다.
아래는 nice 명령어를 사용하여 우선순위를 15만큼 낮춘 예제입니다.
그런데 renice는 조정 수치만큼 값을 더하는 게 아닌 그 수치 그대로
우선순위를 바꾸어 줍니다.
이는 nice와 다르게 우선순위를 높일 수도 있으므로 좀 더 힘 있는 명령이라고 할 수 있죠.
아래는 renice 명령을 사용하여 bash의 우선순위를 -5 순위로 더 높게 변경하는 예제입니다.
마지막으로 백그라운드 포그라운드입니다.
포그라운드는 바로 위 예제처럼 터미널에서 바로 보이게 작업하는 것이고
백그라운드는 말 그대로 터미널에 보이지 않는 상태로 작업을 수행하는 것을 말합니다.
그런데 이 백그라운드로 진행하는데 추가로 접속에 끊겨도(가상 머신 종료) 작업을 계속 수행하게 하려면
nohup 명령 & 를 사용하면 됩니다.
2) 백그라운드/포그라운드
위에 표에도 정리되어 있듯이 프로세스를 백그라운드로 바꾸려면 bg 작업 번호
포그라운드로 바꾸려면 fg 작업번호 명령어를 사용해 바꿀 수 있습니다.
이는 아래 sleep 예제를 통해 쉽게 이해할 수 있습니다.
sleep는 지정한 시간(초 단위)만큼 멈추는 명령어입니다.
먼저 터미널에 sleep 100을 입력해 보았습니다.
sleep 100은 100초 동안 멈추는 명령어입니다.
따라서 위와 같이 입력 프롬프트가 깜빡거리며 화면이 멈추는 것을 확인할 수 있습니다.
위는 포그라운드로 명령을 수행한 것입니다.
그런데 이를 백그라운드로 실행해보면 보다 쉽게 백그라운드를 이해할 수 있습니다.
이를 백그라운드로 실행하면 [1] 3401이라고 뜹니다.
이때 대괄호 안에 있는 1이 작업 번호이고 3401이 프로세스 번호(PID)입니다.
그래서 화면을 멈추는 명령어를 백그라운드로 실행하면 작업을 수행하는 중에도 다른 명령을 사용할 수 있습니다.
그리고 3,4번째 줄에서는 복습 겸 3401 프로세스를 포그라운드로 변경하였습니다.
그 결과 위와 같이 다시 프롬프트가 깜빡거리며 화면이 멈춘 것을 확인할 수 있습니다.
3. 기타
기타 | 뜻 |
at [옵션] 시간 | 예약한 명령을 정해진 시간에 실행 |
atrm [작업번호] | 지정된 번호의 작업 삭제 |
crontab [-u 사용자 ID] [옵션] [파일] | 사용자의 crontab 파일을 관리 |
위 기타 명령어는 그냥 읽어보시면 됩니다.
'개발 지식 > 운영체제(OS)' 카테고리의 다른 글
[Linux] 파일 시스템과 디스크 관리 (0) | 2021.06.20 |
---|---|
[Linux] 리눅스 접근권한 관리 (0) | 2021.06.01 |
[LINUX] 기본 명령어 총정리 (0) | 2021.05.24 |
[우분투 리눅스]기본 명령어 사용법 Part.2 (0) | 2021.05.19 |
[우분투 리눅스]기본 명령어 사용법 Part.1 (0) | 2021.05.18 |