✨목차
- 프로세스의 개념과 종류
- 프로세스 관리명령
- 포그라운드와 백그라운드 프로세스
- 사용자 정보보기
✏️프로세스
실행중인 프로그램
- 종류
- 시스템 프로세스 : 유닉스 운영에 필요한 기능 수행
- 사용자 프로세스 : 사용자들이 실행시킨 프로세스
데몬 | 유닉스 커널에 의해 실행되는 프로세스로 특정 서비스 제공 |
부모 | 자식 프로세스를 만드는 프로세스 |
자식 | 부모에 의해 생성된 프로세스 실행이 끝나면 부모프로세스에 결과를 돌려주고 종료 |
고아 | 실행도중에 부모 프로세스가 종료된 프로세스 고아 프로세스는 1번 프로세스를 새로운 부모로 가진다 |
좀비 | 부모프로세스가 종료처리 하지 않은 프로세스 종료되었음에도 할당된 시스템 자원이 회수되지 않은 상태 |
✏️프로세스 관리 명령
ps
- process status
- 프로세스 정보출력(PID ,터미널, CPU 시간, 명령어)
- e | 시스템에 있는 모든 프로세스 정보 출력 |
- f | 프로세스에대한 자세한 정보 출력 |
-u UID | 특정 사용자에 대한 모든 프로세스 출력 |
$ ps
$ ps -e
$ ps -f
$ ps -ef | more
$ ps -u user1
프로세스의 종류
UID | 프로세스를 실행시킨 사용자 id |
PID | 프로세스번호 |
PPID | 부모 프로세스 번호 |
C | 프로세스의 우선순위 |
STIME | 프로세스의 시작시간을 시분초 형식으로 출력 |
TTY | 프로세스가 실행된 단말기 종류와 번호 |
CMD | 실행되고 있는 프로그램 이름(명령) |
pgrep [ ] 패턴
- 프로세스 이름으로 찾아 정보를 출력
- 솔라리스에만 있는 특별한 명령 ( =ps [ ] | grep 패턴)
- 패턴 = 찾으려는 정보
-x | 패턴과 정확히 일치하는 프로세스 정보 출력 |
-n | 패턴을 포함하고 있는 가장 최근의 프로세스 정보출력 |
-u uid | 특정 사용자의 모든 프로세스 출력 |
-l | PID와 프로세스 이름 출력 |
-t term | 특정 단말기와 관련된 프로세스 정보 출력 |
$ ps -ef | grep bash
$pgrep -l bash
kill [ 시그널 ] pid
- pid로 지정한 프로세스에게 시그널을 보냄
- 시그널을 받은 프로세스는 지정된 동작 수행
- 시그널을 지정하지 않으면 프로세스를 종료하는 15번 시그널 보냄
- 사용자의 프로세스만 종료 가능
- 관리자는 모든 프로세스 종료 가능
시그널
시그널 번호 | 시그널 이름 | 기능 | 기본 응답 |
1 | SIGHUP | 터미널연결이 끊어진 경우에 발생 | 종료 |
2 | SIGHNT | 보통 ctrl-c에 의해 발생 | 종료 |
9 | SIGKILL | 프로세스 강제종료시킴 이 시그널은 무시 불가 |
종료 |
15 | SIGTERM | 프로세스 종료 이 시그널은 무시가능 KILL명령이 보내는 기본 시그널 |
종료 |
예시)
$ kill -9 1511
pkill [ 시그널 ] 프로세스명
- 프로세스의 명령이름으로 프로세스를 찾아 지정한 시그널 보냄
pkill sleep -> 사용자가 소유한 프로세스만 종료가능
prstat [ ]
- 동작중인 프로세스의 통계 정보를 출력
- 프로세스 정보는 일정 시간 간격으로 자동 갱신
- 종료 : q
-a | 프로세스와 사용자에 대한 통계를 구분해 출력 |
-c | 중복해 출력하지 않고 기존 내용의 아래쪽에 새 정보 출력 |
-s 키 | 키에 따라 정렬하여출력 (cpu, pri, rss, size) |
-u euid | 해당 euid에 속한 프로세스 정보만 출력 |
-U uid | 해당 uid에 속한 프로세스 정보만 출력 |
top [ ]
- 주기적으로 현재 실행중인 프로세스에 대한 정보 출력
- 자세한 요약 정보 출력
- 종료 : q
✏️프로세스 관리명령
- 포그라운드와 백그라운드 작업의 이해
- 작업
- 쉘이 프로세스를 관리하는 단위
- 쉘은 job을 시작시키고 제어
- 유닉스의 프로세스는 포그라운드 작업과 백그라운드 작업으로 구분가능
- 포그라운드 처리
- 사용작 입력한 명령이 실행되어 결과가 출력될 때 까지 프롬프트가 출력되지 않아서 다른 명령을 입력할 수 없는 처리방법
- 포통의 처리방법 : 명령이 끝날때 까지 기대려야됨
- 백그라운드 처리
- 명령의 입력이 끝나면 결과에 상관없이 바로 다음 프롬프트가 출력되어 다른 명령을 입력할 수 있는 처리방법
- 명령끝에 &붙임
jobs [ ]
- 작업 번호를 지정하지 않으면 백그라운드 작업을 모두 출력
- 특정 작업 번호를 지정하면 해당 작업의 정보만 출력
- 작업번호
- %번호 : 해당번호의 작업 정보출력
- %- : 작업 순서가 -인 작업 정보 출력
- %+ 또는 %% : 작업 순서가 +인 작업 정보 출력
작업번호 | [1] | 작업번호로 백그라운드를 실행할때마다 순차적으로 증가 |
작업 순서 | + | 작업 순서를 표시 + : 가장 최근에 접근한 작업 - : +작업보다 바로 전에 작업 공백 : 그 외의 작업 |
상태 | running | 작업의 상태표시 실행중 완료 종료 정지 |
명령 | sleep 100 & | 백그라운드로 실행 중인 명령 |
작업 전환 및 종료 명령
ctrl+z 또는 stop [%작업 번호] | 포그라운드 작업을 중지시킴 |
bg [%작업번호] | 작업번호가 지시하는 작업을 백그라운드 작업으로 전환시킴 |
fg [%작업번호] | 작업번호가 지시하는 작업을 포그라운드 작업으로 전환시킴 |
nohub 명령&
- 로그아웃을 한 뒤에도 백그라운드 작업을 계속 진행
- 원래는 로그아웃하면 실행중인 모든 작업 종료됨
- 명령 실행결과와 오류메시지: nohub.out 파일에 저장
✏️ 사용자 정보보기
- 로그인한 사용자 정보
- users
- who
- w
- 사용자 자신의 정보보기
- who am i
- whoami
- Id
- 사용자전환하기
- su
users
- 현재 시스템에 로그인 하고있는 사용자 명 출력
who [ ]
- 시스템을 사용하고 있는 사용자 정보 출력
-q | 사용자 명만 출력 (= users) |
-H | 출력항목의 제목도 함께출력 |
-b | 마지막으로 재부팅한 날짜와 시간 출력 |
w [사용자명]
- 로그인한 사용자 정보와 현재 작업 정보 출력
who am i
- who 명령의 결과 중 자신에 대한 정보만 출력
whoami
- 사용자의 로그인 id출력
su [ - ] [사용자명]
- 사용자 계정 변경
- 아무 옵션 없이 사용하려면 root로 변경
- 사용자명 지정 : 지정한 사용자로 변경
✏️연습문제
1. 유닉스의 프로세스 종류
- 데몬 프로세스
- 부모 프로세스
- 자식 프로세스
- 고아 프로세스
- 좀비 프로세스
2. 유닉스의 고아 프로세스와 좀비 프로세스의 차이
고아 = 자식 프로세스가 결과를 돌려주기 전에 부모 프로세스가 먼저 종료되어버린 프로세스
좀비 = 모든 자원을 반납하였지만 부모 프로세스로 부터 작업 종료에 대한 승인을 받지 못해 프로세스 테이블 목록을 차지하고 있는 프로세스들이다
3. user1 사용자가 실행시킨 프로세스를 모두 찾기위해 사용할 수 있는 명령
ps -u user1
ps -ef | grep user1
4.user1 사용자가 실행시킨 모든 프로세스의 실행날짜를 알아보는 방법
ps -ef | grep user1
5.pgrep 명령을 사용해 현재 실행중인 모든 bash를 검색한 결과와 ps 명령을 사용해 현재 실행 중인 모든 bash를 검색한 결과 차이점
pgrep -l bash
ps -f | grep bash
6.포그라운드 작업과 백그라운드 작업의 차이
포그라운드 = 사용자가 명령 입력 후 결과가 출력될때 까지 기다려야하는 경우
백그라운드 = 명령을 백그라운드 방식으로 실행시키면 명령의 처리와 관계없이 곧바로 프롬프트가 출력되어 사용자는 다른 작업을 계속할 수 있음 (마지막에 &추가)
7. 현재 실행중인 포그라운드 작업을 백그라운드 작업으로 전환시키는 방법
- ctrl+z로 find 명령의 실행을 중단시킴
- bg명령으로 백그라운드 작업으로 전환시킴
8. 현재 실행중인 백그라운드 작업을 포그라운드 작업으로 전환시키는 방법
[1]+ Running sleep 100
fg %1
9. find/ -name unix 명령이 로그아웃한 다음에도 계속 동작하도록 실행시키는 명령
nohub find / -name unix &
10. 시스템이 부팅한 날짜와 시간을 알기 위한 명령
who -b
11. ps -f 명령의 결과가 아래와 같을때 프로세스의 부모-자식 관계를 설명
UID PID PPID C STIME TTY TIME CMD
user1 15761 15721 0 18:14:17 pts/1 0:00 vi test.c
user1 15721 15710 0 18:14:09 pts/1 0:00 ksh
user1 15710 15701 0 18:12:59 pts/1 0:00 bash
부모 → 15710 → 15721 → 15761
12. 11번에서 실행중인 프로세스 중 vi test.c 프로세스를 강제 종료시키는 과정
kill 15761
또는
kill -9 15761 (강제종료)
13. 다음과 같이 백그라운드로 실행중인 작업이 3개 있다 이 중 3번 작업을 종료시키는 명령을 기술
[1]+ Running sleep 100
[2]- Running find /-name unix
[3] Runnung sleep 300
kill %3
'유닉스 이론과 실습' 카테고리의 다른 글
chap6 .파일 접근 권한 관리하기 (0) | 2024.12.10 |
---|---|
chap7. 파일과 디렉토리 검색 (0) | 2024.12.09 |
chap 9. 파일 아카이브와 압축 명령익히기 (0) | 2024.12.08 |
chap10. 인터넷과 통신 명령 익히기 (0) | 2024.12.08 |
chap11. 유닉스 유틸리티 이용하기 (1) | 2024.12.08 |