Infrastructure/Linux

[Concept] Chapter 08 사용자와 프로세스 명령 익히기

Jinlib 2017. 12. 24. 01:00

목차

1. 프로세스의 개념과 종류
2. 프로세스 관리 명령
3. 포그라운드와 백그라운드 프로세스
4. 사용자 정보 보기

1. 프로세스의 개념과 종류

프로세스 : 실행중인 프로그램

(1) 프로세스의 종류

왼쪽이 시스템 프로세스 : 유닉스 운영에 필요한 기능을 수행

오른쪽 사용자 프로세스 : 사용자들이 실행시킨 프로세스


2. 프로세스 관리 - 프로세스 목록 보기

(1) 프로세스 목록 보기 ps

1) 기 능

프로세스 정보 출력 ( PID, 터미널, CPU시간, 명령어)

2) 형 식

ps [ 옵 션 ]

3) 옵 션

-e : 시스템에 있는 모든 프로세스 정보 출력
-f : 프로세스에 대한 자세한 정보 출력
-u UID : 특정 사용자에 대한 모든 프로세스 출력

4) 속성


(2) 특정 프로세스 정보검색하기 pgrep (Solaris OS에서 사용)

1) 기 능

프로세스 이름으로 찾아 정보를 출력

2) 형 식

pgrep [ 옵 션 ] 패턴
(간단히 말해 ps [ 옵 션 ] | grep 패턴 과 동일하다.)

3) 옵 션

-x : 패턴과 정확히 일치하는 프로세스 정보 출력
-n : 패턴을 포함하고 있는 가장 최근의 프로세스 정보 출력
-U uid : 특정 사용자의 모든 프로세스 출력
-l : PID와 프로세스 이름 출력
-t term : 특정 단말기와 관련된 프로세스 정보 출력

2. 프로세스 관리 - 프로세스 종료 시키기

ps 명령으로 찾은 프로세스중 불필요한 프로세스 강제로 종료시킨다.
프로세스를 종료시킬때, PID나 프로세스 이름을 알아야 한다.

(1) 프로세스 종료 kill

1) 기 능 

PID로 지정한 프로세스에게 시그널을 보내서 종료시킨다
(단, 사용자 프로세스만 종료시킬수 있는데 root관리자는 모든 프로세스 종료가능하다)

2) 형 식

kill [ 시그널 ] PID

3) 시그널


(2) 프로세스 종료 : pkill

1) 기 능

프로세스의 명령이름으로 프로세스를 찾아 지정한 시그널 보냄
(단, 사용자가 소유한 프로세스만 종료 가능하다)

2) 형 식

pkill [ 시그널 ] 프로세스명

3) 시그널

kill 명령어의 시그널과 동일하다.


2. 프로세스 관리 - 프로세스 관리 도구

(1) 프로세스 관리 도구 prstat

1) 기 능

동작중인 프로세스의 통계정보를 일정 시간 간격으로 자동 갱신
(우분투의 경우 prstat에 관련된 패키지를 설치해야한다)

2) 형 식

prstat [ 옵션 ]
(종료는 q)

3) 옵 션

-a : 프로세스와 사용자에 대한 통계를 구분하여 출력
-c : 중복하여 출력하지 않고, 기존 내용의 아래쪽에 새로운 정보를 출력
-s 키 : 키에 따라 정렬하여 출력. (키 : CPU, PRI, RSS, SIZE, TIME)
-u euid : 해당 euid에 속한 프로세스 정보만 출력
-U uid : 해당 uid에 속한 프로세스 정보만 출력

(2) 프로세스 관리 도구 : top

1) 기 능

주기적으로 현재 실행중인 프로세스에 대한 정보 출력

2) 형 식

top [ 옵션 ]

3) 옵 션

-a : 메모리 사용에 따라 정렬

-b : 배치 모드에서 시작

-c : 명령어 대신 명령어 라인을 보여줌

-d : 업데이트 간격을 조정

-h : 도움말

-H : 모든 개별 쓰레드가 보여짐

-i : 좀비(zombie) 또는 Idle 상태의 것들은 무시됨

-m : VIRT 대신 USED를 보고

-M : 메모리 유닛(K/M/G)을 보여줌

-n : 반복의 최대 수를 지정

-P : 지정된 프로세스 ID들만 보여줌

-s : 보안 모드로 시작

-S : 누적 시간 모드로 시작. 활성화되면 각 프로세스는 CPU를 사용한 시간과 함께 출력

-u : 지정된 유효 사용자에 의한 프로세스만 보여줌

-U : 지정된 사용자에 의한 프로세스만 보여줌. 사용자는 실제, 유효한, 저장된 및 파일시스템 UID를 의미

-v : 프로그램 라이브러리 버전을 출력

4) 실행 중 옵션

스페이스바 : 화면 갱신
k : kill 명령
r : nice 값 변경 (nice는 우선순위를 뜻하며, -20 ~ 20 까지 사용가능. 낮을수록 우선권이 높음. 기본값은 0)
Z : 화면 출력 색상 변경
a 또는 w를 누르면 색상이 순차적으로 변경되며 보여줌

z : Z로 변경된 출력 색상과 기본 출력 색상간 전환

B : 글자 두껍게

l : top 출력 상단의 load avg 항목 on/off

t : top 출력 상단의 프로세스와 cpu 항목 on/off

m : top 출력 상단의 메모리 항목 on/off

O : 화면 정렬(sort) 기준 지정

r : nice 조정 (-20 ~ 20. 우선순위 높음 ~ 낮음)

q : top 종료


3. 포그라운드와 백그라운드 프로세스

(1) 기본 개념

1) 작업(job)

      • 쉘은 프로세스를 관리하는 단위를 의미
      • 쉘은 job을 시작하고 제어(Job ID 부여)
      • 유닉스의 프로세스는 포그라운드 작업과 백그라운드 작업으로 구분가능

2) 포그라운드 처리

      • 사용자가 입력한 명령이 실행되어 결과가 출력될 때까지 프롬프트가 출력되지 않아 다른 명령 입력할수 없는 처리 방법
      • 보통의 처리방법

3) 백그라운드 처리

      • 명령의 입력이 끝나면 결과에 상관없이 바로 다음 프롬프트가 출력되어 다른 명령을 입력할 수 있는 처리 방법
      • 명령의 끝에 & 붙임

(2) 작접 제어 명령 - jobs

1) 기 능

작업 번호를 지정시 -> 해당 작업의 정보만 출력
작업 번호 지정 X -> 백그라운드 작업을 모두 출력

2) 형 식

jobs [ %작업번호 ]

3) jobs 명령 출력 항목


(3) 작업 전환 명령


(4) 작업 제어 명령 - nohup

1) 기 능

로그아웃한 후에도 지정한 백그라운드 작업이 시행이 완료 되어야만 할 때 사용한다.

2) 형 식

nohup 백그라운드명령
(실행결과, 오류메시지는 ./nohup.out 파일에 저장

4. 사용자 정보 보기-로그인한 사용자 정보 보기

(1) 사용자명 출력하기 - users

1) 기 능

현재 시스템이 로그인하고 있는 사용자명을  출력

2) 형 식

users

(2) 사용자 정보 출력하기 - who

1) 기 능

시스템을 사용하고 있는 사용자의 정보를 출력

2) 형 식

who [ 옵 션 ]

3) 욥 션

-q : 사용자명만 출력한다.
-H : 출력항목의 제목도 함께 출력한다.
-b : 마지막으로 재부팅한 날짜와 시간을 출력한다.

(3) 사용자 작업정보 출력하기 - w

1) 기 능

로그인한 사용자 정보와 현재하고 있는 작업정보를 출력

2) 형 식

w [ 사용자 명 ]

(4) 사용자 자신의 로그인 정보 - who am i

1) 기 능

who 명령의 결과 중 자신에 대한 정보만 출력
(붙여서 whoami 쓰면 자신의 로그인 ID를 출력한다)

2) 형 식

who am i

(5) 사용자 명과 그룹정보 출력하기 - id

1) 기 능

사용자의 로그인 ID와 그룹정보를 출력

2) 형 식

id [ 옵 션 ]

3) 옵 션

-a : 기본 그룹 외에 2차 그룹 정보도 출력
-g : 사용자의 그룹 id만 출력
-G : 추가 그룹의 id만 출력
-u : 사용자의 UID를 출력
-n : -u, -g, -G옵션과 함께 사용하며 해당 id의 이름만 출력
-r : -u, -g, -G 옵션과 함께 사용하며 해당하는 실제 id 출력

(6) 사용자 전환하기 - su

1) 기 능

사용자의 계정을 변경한다.

2) 형 식

su [ - ] [ 사용자명 ]

3) 옵 션

옵션 없음 : root 계정으로 변경
사용자명 지정 : 지정한 사용자로 변경
- : root 혹은 지정한 사용자의 초기화 파일이 실행되면서 작업디렉토리도 사용자의 홈 디렉토리로 변경됨.