컴퓨터공학 공부

컴퓨터공학 공부 다시 시작하기 17주차-리다이렉션과 파이프 이해하기, 포그라운드와 백그라운드 프로세스 이해하기, 리눅스 프로세스 제어 명령어 이해하기 (시스템 소프트웨어)

개발학생 2025. 3. 12. 19:14
반응형

1. 리다이렉션과 파이프 이해하기

표준 입출력(Standard Stream)

- command로 실행되는 프로세스는 세 가지 스트림을 가지고 있음

  -> 표준 입력 스트림(stdin), 표준 출력 스트림(stdout), 오류 출력 스트림(stderr)

- 일반적으로 표준 출력 및 오류 출력 스트림은 plaint text로 console에 출력하도록 되어 있음

리다이렉션(redirection)

- 표준 스트림 흐름을 바꿔줄 수 있음

- 주로 명령어 표준 출력을 화면이 아닌 파일에 쓸 때 사용

- >, <을 사용함

파이프(pipe) 

- 두 프로세스 사이에서 한 프로세스의 출력 스트림을 또다른 프로세스의 입력 스트림으로 사용

- 예시 명령어 ls | grep files.txt: ls 명령으로 해당 디렉토리/파일 내에 files.txt가 있는지 출력 
  -> ls 명령을 통한 출력 내용이 grep 명령의 입력 스트림으로 들어감

  -> grep files.txt는 grep 명령의 입력 스트림을 검색하여 files.txt가 들어있는 입력 내용만 출력

*grep 명령어란?

- 검색 명령어로, grep [-option] [pattern] [file or directory name]과 같이 사용한다

<option>
    -i : 영문의 대소문자를 구별하지 않는다.
    -v : pattern을 포함하지 않는 라인을 출력한다.
    -n : 검색 결과의 각 행의 선두에 행 번호를 넣는다(first line is 1).
    -l : 파일명만 출력한다.
    -c : 패턴과 일치하는 라인의 개수만 출력한다.
    -r : 하위 디렉토리까지 검색한다.

2. 포그라운드와 백그라운드 프로세스 이해하기

- 리눅스는 기본적으로 다양한 프로세스가 실행됨

  -> 유닉스 철학에 따라, 여러 프로그램이 서로 각자의 일을 수행하며 전체 시스템이 동작하도록 하는 모델이기 때문 

프로세스 vs 바이너리

- 코드 이미지 또는 바이너리: 실행파일

- 실행 중인 프로그램: 프로세스(가상/물리 메모리 정보, 시스템 리소스 관련 정보, 스케줄링 단위)

포그라운드 프로세스/백그라운드 프로세스

- 포그라운드 프로세스(foreground process)
  : 쉘(shell)에서 프로세스 실행을 명령하면, 해당 프로세스 수행 종료까지 사용자가 다른 입력을 하지 못하게 함

- 백그라운드 프로세스(background process)
  : 쉘(shell)에서 해당 프로세스 실행 시 맨 뒤에 &를 붙여주면, 사용자 입력과 상관없이 프로세스가 계속 실행되게 함

3. 리눅스 프로세스 제어 명령어 이해하기

프로세스 상태 확인 -ps 명령어

- 사용법: ps [option(s)]와 같이 작성하여 사용 

[option(s)] 종류
-a : 시스템을 사용하는 모든 사용자의 프로세스 출력 (보통 aux 와 같이 u, x 옵션과 함께 사용)
-u : 프로세스 소유자에 대한 상세 정보 출력
-l : 프로세스 관련 상세 정보 출력
-x : 터미널에 로그인한 후 실행한 프로세스가 아닌 프로세스들도 출력함. 
     주로 데몬 프로세스(daemon process)까지도 확인하기 위해 사용함. 
     본래 ps 명령은 현재 쉘(shell)에서 실행한 프로세스들만 보여주기 때문에 이 옵션을 사용
     -> 데몬 프로세스: 사용자 모르게 시스템 관리를 위해 실행되는 프로세스로, 
        시스템 부팅 시 자동 실행(예시: ftpd, inetd 등)
-e : 해당 프로세스와 관련된 환경 변수 정보도 함께 출력
-f : 프로세스 간 관계 정보도 출력

- 데몬 프로세스

- 주로 ps 출력 정보 항목

USER : 프로세스를 실행시킨 사용자 ID
PID : 프로세스 ID
%CPU : 마지막 1분 동안 프로세스가 사용한 CPU시간의 백분율
%MEM : 마지막 1분 동안 프로세스가 사용한 메모리 백분율
VSZ : 프로세스가 사용하는 가상 메모리 크기
RSS : 프로세스에서 사용하는 실제 메모리 크기
TTY : 프로세스와 연결된 터미널 포트
STAT : 프로세스 상태
START : 프로세스가 시작된 시간
TIME : 현재까지 사용된 CPU 시간(분:초)
COMMAND : 명령어

프로세스 관련 기타 명령어

ps aux | grep 프로세스명 : 프로세스가 실행 중인지를 확인하고, 관련 프로세스에 대한 정보 출력
kill 명령어: kill % 작업번호(job number), kill 프로세스ID(pid)와 같이 사용함 
-> kill -9 프로세스 ID(pid) : 해당 프로세스를 강제로 죽임
명령 & : 터미널에서 다른 작업을 해야하거나, 프로세스 실행에 오랜 시간이 걸릴 경우 background 로 실행
[CTRL] + z : 프로세스 중지
[CTRL] + c : 프로세스 종료(실행 취소)
반응형