포그라운드(foreground)와 백그라운드(background)
1) 포그라운드
유형 | 설명 |
---|---|
포그라운드 (foreground) | - 대화식 작업 - 입력한 명령어 실행이 결과가 나올 때까지 기다리는 방식 - 일반적인 명령 실행 방식 |
2) 백그라운드
유형 | 설명 |
---|---|
백그라운드 (background) | - 다른 프로세스 실행 가능 - 명령어를 실행하면 곧바로 다음 명령어 실행 가능 - '$'기호 사용 |
fork()와 exec()
1) fork()
유형 | 설명 |
---|---|
fork() | - 메모리 할당하고, 기존 프로세스를 복제 - 프로세스가 하나 더 생성되고, 프로세스 ID(PID)도 다른 프로세스가 생성 - 원본 프로세스를 부모프로세스(parent process)라고 함 - 복제된 프로세스를 자식프로세스 (child process) |
2) exec()
유형 | 설명 |
---|---|
exec() | - 호출된 프로세스만 메모리에 남게 됨 - 생성되는 새로운 프로세스는 없음 - 프로세스의 PID가 그대로 새로운 프로세스에 적용되며, 호출한 프로세스는 새로운 프로세스에 의해 덮어쓰게 됨 |
데몬(Daemon)
1) Standalone
2) (x)inetd
시그널(Signal)
번호 | 시그널 | 발생 조건 |
---|---|---|
1 | SIGHUP | 터미널과 연결이 끊어졌을 때 |
2 | SIGINT | 키보드로부터 오는 인터럽트 시그널 (Ctrl + c) |
3 | SIGQUIT | 키보드로부터 오는 실행 중지 시그널 (Ctrl + \) |
6 | SIGABRT | 비정상 종료 |
9 | SIGKILL | 강제 종료 시 |
14 | SIGALRM | 알람에 의해 발생 |
15 | SIGTERM | 'kill' 시스템 호출 시 |
18 | SIGCONT | 중지된 프로세스 재실행 시 |
19 | SIGSTOP | 'SIGCONT' 시그널을 받을 때까지 프로세스 중지 |
20 | SIGTSTP | 실행 정지 후 다시 실행을 계속하기 위해 대기시키는 시그널 (Ctrl + z) |
ps
1) 기본 형식
[root@localhost ~]#ps [옵션]
옵션 | 설명 |
---|---|
-a | 모든 프로세스 출력 |
-e | 커널 프로세스를 제외한 모든 프로세스 출력 |
-f | 풀 포맷으로 출력 |
-l | 프로세스 목록 출력 |
-o | 출력 포맷을 지정 |
-p | 특정 PID를 지정 |
-r | 현재 실행 중인 프로세스 출력 |
-u | 특정 사용자의 프로세스를 확인 |
-x | 접속된 터미널뿐만 아니라 사용 중인 모든 프로세스 출력 |
2) 모든 프로세스를 풀(full) 포맷으로 출력
항목 | 설명 |
---|---|
USER | 프로세스 소유자명 |
PID | 프로세스 식별 번호 |
%CPU | CPU 사용률 |
%MEM | 메모리 사용률 |
VSZ | 가상 메모리 사용량 |
RSS | 실제 메모리 사용량 |
TTY | 프로세스와 연결된 터미널 |
START | 현재 프로세스 상태 D : 입출력 작업이 끝나기를 기다리는 정지 상태 P : 수행 가능, 수행 중인 상태 R : 현재 실행 상태 S : 잠든 상태 T : 정지 상태 Z : 좀비 프로세스. 부모 프로세스로부터 회수되지 않아 아직 메모리에 적재되어 있는 상태 |
START | 프로세스 시작 시간 |
TIME | 총 CPU 사용 시간 |
COMMAND | 실행 명령 |
3) 자세한 프로세스 목록 출력
항목 | 설명 |
---|---|
F | 프로세스 플래그 |
S | 프로세스 상태 |
UID | 프로세스 소유자의 UID |
PID | 프로세스 식별 번호 |
PPID | 부모 프로세스 식별 번호 |
C | 짧은 시간 cpu 사용률 |
PRI | 프로세스 우선순위(값이 작을수록 우선순위가 높음) |
NI | 우선순위 계산 시 사용하는 'nice'값 |
ADDR | 메모리 안의 프로세스 주소 |
SZ | 프로세스 크기 |
WCHAN | 프로세스가 대기나 수면 상태에서 기다리는 시간 |
TTY | 프로세스와 연결된 터미널 |
TIME | 총 CPU 사용 시간 |
CMD | 실행 명령 |
pstree
1) 기본 형식
[root@localhost ~]# pstree [옵션][PID/user]
2) 옵션
옵션 | 설명 |
---|---|
-a | 모든 프로세스 식별자(PID) 출력 |
-c | 중복된 프로세스도 모두 출력 |
-G | 'VT100' 형태의 트리 구조로 출력 |
-h | 해당 프로세스와 프로세스의 부모 프로세스를 음영으로 강조 |
-H | 지정한 PID의 프로세스와 부모 프로세스를 음영으로 강조 |
-l | 긴 행으로 모든 정보 출력 |
-n | 프로세스 식별자(PID)를 기준으로 정렬하여 출력 |
-p | 프로세스 식별자(PID)도 출력 |
-u | 사용자 식별자(UID)도 출력 |
-U | UTF-8 형태로 출력 |
top
1) 기본 형식
[root@localhost ~]# top [옵션][PID]
2) 옵션(실행 전)
옵션 | 설명 |
---|---|
-b | 순간의 정보 확인(batch 모드) |
-d | 실시간으로 화면 출력 interval 시간 지정 |
-n | 실행 주기 지정(반복 횟수) |
-p | 모니터링할 프로세스 식별자(PID) 지정 |
3) 옵션(실행 후)
옵션 | 설명 |
---|---|
a | 메모리 사용량을 기준으로 출력 |
b | 배치(bacth)모드로 작동 |
1 | CPU 코어별로 사용량 출력 |
f | Sort필드 선택 화면 -> q를 누르면 'RES' 기준으로 정렬 |
q | 실행 종료 |
Shift + m | 메모리 사용량 기준으로 정렬(내림차순) |
Shift + p | CPU 사용량 기준으로 정렬(내림차순) |
Shift + t | 프로세스의 사용 시간을 기준으로 정렬 |
nohup
1) 기본 형식
[root@localhost ~]# nohup [실행 파일] &
2) 로그 안 남기기
[root@localhost ~]# nohup [실행 파일] 1>/dev/null 2>&1 &
3) 종료하기
[root@localhost ~]# ps -aux | grep [실행 파일]
[root@localhost ~]# kill -9 [PID]
jobs
1) 기본 형식
[root@localhost ~]# jobs [옵션][작업번호]
2) 옵션
옵션 | 설명 |
---|---|
-l | 프로세스 그룹 ID를 'state'필드 앞에 출력 |
-n | 프로세스 그룹 중에 대표 프로세스 ID 출력 |
-p | 각 프로세스 ID에 대해 한 행씩 출력 |
fg, bg
1) 기본 형식
[root@localhost ~]# fg %[작업 번호], bg %[작업 번호]
nice
1) 기본 형식
[root@localhost ~]# nice [옵션][설정값][실행 프로그램명]
2) 옵션
옵션 | 설명 |
---|---|
-n | 'nice'값 조정 수치 지정 |
renice
1) 기본 형식
[root@localhost ~]# nice [옵션][설정값][PID]
2) 옵션
옵션 | 설명 |
---|---|
-g | 그룹명 지정 |
-u | 사용자 명 지정 |
kill
1) 기본 옵션
[root@localhost ~]# kill [옵션][PID]
2) 옵션
옵션 | 설명 |
---|---|
-l | Signal의 종류 출력 |
-s | 특정 Signal 지정 |
-1 | 프로세스 재시작 |
-9 | 프로세스 강제 종료 |
killall
1) 기본 형식
[root@localhost ~]# killall [옵션][프로세스 명]
2) 옵션
옵션 | 설명 |
---|---|
-i | 종료 전 확인 |
-I | 프로세스 명에 대소문자 구별하지 않음 |
-g | 프로세스 그룹 종료 |
-o | 지정 시간 이후 프로세스 종료 |
-l | 모든 시그널명 출력 |
-s | 'SIGTERM' 대신 해당 시그널로 전송 |
-u | 해당 사용자로 실행된 프로세스만 종료 |
-v | 시그널이 성공적으로 전송될 경우 출력 |
-w | 프로세스가 종료될 때까지 대기 |
cron
1) 기본 형식
[root@localhost ~]# crontab [옵션]
2) 옵션
옵션 | 설명 |
---|---|
-e | 'crontab'을 설정하거나 변경 |
-l | 'crontab'설정 내용 출력 |
-r | 'crontab'설정 내용 제거 |
-u | 특정 사용자의 작업 스케줄 수정 |