프로세스

EEEFFEE·2023년 10월 30일

리눅스 명령어

목록 보기
2/6

23.10.30 최초 작성

1. 프로세스란?

링크

  • 현재 시스템에서 실행 중인 프로그램
  • 모든 프로세스는 부모-자식 관계를 가짐
  • 자식 프로세스는 부모 프로세스에게 결과를 돌려주고 종료
  • PID라는 고유한 번호를 가짐

2. 프로세스 관리 명령

2.1 프로세스 목록 확인


ps [옵션]

///
<유닉스 옵션>
-e : 실행되고 있는 모든 프로세스의 정보 출력
-f : 상세한 정보 출력
-u uid : 특정 사용자에 대한 모든 프로세스 정보 출력
-p pid : pid를 가진 특정 프로세스 정보 출력

<BSD 옵션>
a : 터미널에서 실행한 프로세스의 정보 출력
u : 프로세스 소유자 이름, CPU 사용량 등 상세 정보 출력
x : 실행되고 있는 모든 프로세스의 정보 출력

<GNU 옵션>
--pid PID 목록 : 목록으로 지정한 특정 PID 정보 출력

  • -f옵션 사용 시
    - UID : 프로세스를 실행한 사용자 ID
    - PID : 프로세스 번호
    - PPID : 부모 프로세스 번호
    - C : CPU 사용량 (%)
    - STIME : 프로세스의 시작 날짜나 시간
    - TTY : 프로세스가 실행된 터미널의 종류와 번호
    - TIME : 프로세스 실행 시간
    - CMD : 실행되고 있는 프로그램 이름

  • a옵션 사용 시 STAT 정보
    - R : 실행 중
    - S : 인터럽트 가능한 대기(sleep) 상태
    - T : 작업 제어에 의해 정지된 상태
    - Z : 좀비 프로세스

pgrep [옵션] 패턴	// 지정한 패턴과 일치하는 프로세스 정보 출력

ps -fp $(pgrep -x bash)		// ps 명령어와 조합해 사용 가능

///
-x : 패턴과 정확히 일치하는 패턴을 가진 프로세스 정보 출력
-n : 패턴을 포함하는 가장 최근 프로세스 정보 출력
-u 사용자명 : 특정 사용자에 대한 모든 프로세스 출력
-l : PID와 프로세스 이름 출력
-t term : 특정 단말기와 관련된 프로세스 정보 출력

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

내부 명령기능
Enter화면에 즉시 출력
h, ?도움말 화면 출력
k프로세스 종료 (PID 입력해야 함)
n출력하는 프로세스 갯수 바꿈
pCPU 사용량을 기준으로 정렬해 출력
qtop 명령 종료
M메모리 사용량을 기준으로 정렬해 출력
u사용자 기준으로 정렬해 출력

3. 시그널

  • 프로세스에게 전달되는 메시지
  • kill -l을 통해 확인 가능

kill [-시그널] <PID>	// PID를 가진 프로세스에 시그널을 보냄
pkill <명령 이름>	//명령 이름을 가진 프로세스를 종료

4. 포그라운드, 백그라운드 프로세스 제어

  • 포그라운드 프로세스 : 사용자가 입력한 명령이 실행되어 결과가 출력될 때까지 기다려야 하는 프로세스
  • 백그라운드 프로세스 : 명령을 실행하면 명령의 처리가 끝나는 것과 관계없이 바로 프롬프트가 출력되어 사용자가 다른 작업을 계속할 수 있는 프로세스

sleep 100	//포그라운드 작업
sleep 100 &	//백그라운드 작업

find / -name passwd >pw.dat 2>&1 &//작업의 결과와 오류 파일로 저장

4.1 작업 제어

  • 작업 전환 : 포그라운드 및 백그라운드 작업간의 전환
  • 작업 일시 중지 : 작업을 잠시 중단
  • 작업 종료 : 프로세스를 종료

jobs [%작업 번호]

///
%번호 : 해당 번호의 작업 정보 출력
%+ or %% : 작업 순서가 +인 작업 정보를 출력 
%- : 작업 정보가 -인 작업 정보를 출력

항목출력 예의미
작업 번호[1]백그라운드로 실행할 때마다 순차적으로 증가
작업 순서+작업 순서 표시
+ : 가장 최근에 접근한 작업
- : +작업보다 바로 전에 접근한 작업
상태실행 중실행 중 : 현재 실행 중인 작업
완료 : 작업이 정상적으로 종료 됨
종료됨 : 작업이 비정상적으로 종료됨
정지됨 : 작업이 잠시 중단 됨
명령sleep 100&백그라운드로 실행 중인 명령

bg [%작업 번호]					//작업을 백그라운드 작업으로 전환
fg [%작업 번호]					//작업을 포그라운드 작업으로 전환
ctrl + z or stop [%작업 번호]	//포그라운드 작업 일시 정지
ctrl + c						//포그라운드 작업 종료
kill [%작업 번호]				//백그라운드 작업 종료

nohup <명령&>		//로그아웃 후에도 백그라운드 작업 실행

nohup find / -name passwd &

5. 작업 예약


at [옵션] <시간>	// 예약한 명령을 지정한 시간에 실행 (한번만)
atrm [%작업 번호]	// 예약한 작업 삭제

///
-l : 현재 실행 대기 중인 명령의 전체 목록을 출력
-r [%작업 번호] : 현재 실행 대기중인 명령 중 해당 작업 번호 삭제
-m : 출력 결과가 없더러도 작업이 완료되면 사용자에게 메일로 알려 줌
-f 파일 : 표준 입력 대신 실행할 명령을 파일로 지정
-d [%작업 번호] : 지정한 작업 삭제 (실행 전)

at 10:00 pm
at 5:15 am May 30

이후 실행할 명령 입력하고 ctrl + d로 입력 마무리

  • at명령어로 생성된 작업 파일은 /var/spool/at 디렉토리에 저장

crontab [-u 사용자 ID] [옵션] [파일]	//정해진 시간에 작업을 반복 실행
									//crontab 파일을 생성해 이 파일을 기준으로 작업 수행

///
-e : 사용자의 crontab 파일 편집
-l : crontab 파일의 목록 출력
-r : crontab 파일 삭제

분(0~59)시(0~24)일(1~31)월(1~12)요일(0~6)작업 내용

30 23 1 * * bins/ls -l ~user1 > ~user1/cron.out

  1. crontab 파일 생성하고 편집하기 (crontab -e)
    EDITOR=vi;export EDITOR (편집기 설정)
  2. 자동적으로 /var/spool/cron/crontabs 디렉토리에 사용자 이름으로 생성

5.1.1 at 명령 사용 제한

  • /etc/at.allow/etc/at.deny 파일에 사용자 이름을 기록해 해당 사용자가 at명령어를 사용할 수 있도록 할지 설정할 수 있음
  • /etc/at.allow파일이 /etc/at.deny보다 먼저 적용되어 두 파일에 사용자 이름이 존재할 경우 그 사용자는 at을 사용할 수 있음
  • 두 파일 모두 없을 경우 root만 사용 가능

5.1.2 crontab 명령 사용 제한

  • /etc/cron.allow/etc/cron.deny 파일에 사용자 이름을 기록해 해당 사용자가 cron명령어를 사용할 수 있도록 할지 설정할 수 있음
  • /etc/cron.allow파일은 관리자가 만들어야 함
  • 두 파일 모두 없을 경우 시스템 관리자만 사용 가능

0개의 댓글