리눅스 기초 (프로그램과 프로세스)

박형석·2022년 2월 19일

리눅스

목록 보기
3/3
post-thumbnail

프로그램과 프로세스

프로그램이란

  • 컴퓨터에서 실행될 때 특정 작업(specific task)을 수행하는 일련의 명령어들의 모음

프로세스란?

  • 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램을 말한다. 여러개의 프로그램이 실행되고 있는 것을 멀티프로세스 라고 한다.

스레드(Thread)

  • 사전적의미로 한 가닥의 실. 한가지의 작업을 실행하기 위해 순차적으로 실행한 코드를 실처럼 이어 놓았다고 해서 유래된 이름.

프로세스 실행방식

프로세스의 실행방식은 크게 포그라운드와 백그라운드가 있다.

포그라운드

터미널에서 작업할 때, 일반적으로 사용자가 명령을 입력하면 이를 해석하여 실행하고 결과를 화면에 출력한다.

그러면 다시 사용자는 화면에 출력된 결과를 확인하고 또다른 명령어를 입력하는 대화식으로 작업을 수행하게 된다.

이렇게 사용자가 입력한 명령이 실행되어 결과가 출력될 때까지 기다려야 하는 방식을 포그라운드 방식이라고 하며, 이러한 방식으로 처리되는 프로세스를 포그라운드 프로세스라고 한다.


백그라운드

백그라운드 방식을 사용하면 프로세스가 실행되는 동안 뒤에서 다른 프로세스가 실행될 수 있으므로 한 터미널에서 여러 개의 프로세스를 동시에 실행할 수 있다.

이처럼 백그라운드 방식으로 처리되는 프로세스를 백그라운드 프로세스라고 하며, 이러한 백그라운드 작업은 명령의 실행 시간이 많이 걸릴 것으로 예상되거나, 명령을 실행한 후 다른 작업을 해야할 경우 사용한다.

백그라운드 방식은 명령어 뒤에 &를 붙여서 실행하고, 다른 명령어를 추가적으로 입력할 수 있다.
하지만 백그라운드 방식으로 실행해도 사용자의 터미널 세션이 종료되면 실행중인 프로세스도 종료됩니다. 작업시간이 오래 걸리는 작업인 경우 nohup 명령어를 이용하여 백그라운드로 실행하면 사용자의 터미널 세션이 종료되어도 작업이 종료될 때까지 프로세스를 실행합니다.


프로세스 목록확인 하는 방법

$ ps

ps 명령은 현재 실행 중인 프로세스의 목록을 확인할 수 있다. ps 명령만으로도 프로세스 목록을 파악할 수 있지만 더 자세한 항목이 필요하다면 여러 옵션과 사용할 수 있습니다.

ps 명령의 결과로 PID, TTY, TIME, CMD가 출력됩니다. 이 각각은 다음과 같은 의미를 가집니다

명칭설명
PID프로세스 번호
TTY프로세스가 실행된 터미널의 종류와 번호
TIME프로세스 실행 시간
CMD실행되고 있는 프로그램의 이름(명령)

여기에 옵션을 섞어서 사용하면 더 디테일한 내용을 볼 수 있고, 사용할 수 있는 옵션의 종류는 다음과 같습니다.

UNIX 방식

  • ps -e : 시스템에서 실행 중인 모든 프로세스의 정보를 출력한다.
  • ps -f : 프로세스의 자세한 정보를 출력합니다.
  • ps -u uid : uid로 특정한 사용자에 대한 모든 프로세스의 정보를 출력한다.
  • ps -p pid : pid로 지정한 특정 프로세스의 정보를 출력한다.

프로세스 관리

jobs


나노 편집기를 백그라운드에서 실행을 시킨 화면이다.

이 때 jobs로 현재 실행중인 프로세스를 확인할 수 있다.

프로세스의 상태

  • Running : 실행 중
  • Stopped : 일시 중단(Ctrl + Z 입력)
  • Terminated : 강제 종료(kill 명령 종료)
  • Done : 정상 종료

다수의 프로세스가 백그라운드에서 작업하는 도중에 필요하다면, fg %작업번호 명령을 사용하여 포그라운드로 전환할 수 있습니다.

kill

kill이라는 명령어를 이용해서 특정 프로세스에 작업 중지, 실행 종료, 대기, 재시작, 강제 종료 등의 시그널을 전달할 수 있다.

주로 사용하는 시그널.

  • SIGHUP : 재시작할 때 사용
  • SIGINT : 실행 중지 시그널, Ctrl + c
  • SIGKILL : 프로세스 강제 종료
  • SIGTERM : 프로세스 정상종료 (기본 명령)
  • SIGCONT : 정지된 프로세스 실행
  • SIGSTOP : 터미널에서 입력되는 정지 시그널
  • SIGTSTP : 실행 정지 후 재실행 대기, Ctrl+ z

예시)

kill -시그널번호(시그널명) %작업번호
kill -시그널번호(시그널명) PID
profile
Better Than Yesterday

0개의 댓글